외부에서 다운받은 파일 열고 DB에 데이터 저장하기
- 상단 File - Open File : 해당 파일 열기
- 상단 스키마 아이콘 클릭 - Select Data Source : 연결되어있는 계정 중 선택 → 변경된 제목 확인 가능
- DB에 데이터 저장할 때 : 저장할 데이터 영역 지정 후, 오른쪽 클릭 - 실행 - SQL 스크립트 실행 클릭
→ 클릭 시, 아래와 같은 화면 출력됨 (많은 스크립트 양일 경우, 시간이 걸릴 수 있다는 화면 ) : Yes 클릭하면 DB로 데이터 저장됨
SELECT문
- 내가 원하는 자료를 테이블로부터 검색하는 쿼리 구문
- 형식
SELECT 컬럼리스트
FROM DB명.테이블명 또는 테이블명
WHERE 조건식
ORDER BY 정렬식 ;
- 해석 순서
① FROM 테이블명으로부터
② WHERE 조건식 : 어떤 조건을 가지고
③ 검색결과를 컬럼리스트 순서로
④ ORDER BY 정렬식으로 정렬해서
⑤ 검색해라
- SELECT 명령어로 할 수 있는 것
• 원하는 조건으로 원하는 컬럼 데이터를 가져올 수 있음
: SELECT ~ FROM ~ WHERE
• 가져온 데이터를 원하는 순서로 정렬 가능
: ORDER BY
• 원하는 종류로 데이터를 모아볼 수 있음
: GROUP BY
• 원하는 종류 별로 원하는 조건으로 한정된 종류만 검색 가능
: GROUP BY ~ HAVING
• 이 결과들을 이용하여 UPDATE 질의(Query)를 할 수 있음
: INSERT INTO ~ SELECT ~
UPDATE ~ WHERE ~
DELETE ~ WHERE ~
- SELECT의 구문별 설명
• FROM 검색할 테이블 지정
• WHERE : 원하는 데이터 찾아내기 위한 제한 조건 지정
• ORDER BY : 검색한 결과를 원하는 순서로 정렬할 때 지정
➊ ASC : 오름차순(기본값)
❷ DESC : 내림차순
→ 여러 개의 정렬 지정 가능
예 ) ORDER BY name, age
: 먼저 이름으로 정렬한 후, 중복된 이름일 경우, 나이로 정렬
연습
-- 1. 전체 레코드를 가져오기 ( 테이블 작성 시 만든 컬럼 순서로 가져오기 : 컬럼명 대신 * 사용 )
-- → 오라클의 경우, DB에 넣는 순서가 순차적으로 진행되지 않아 일정하지 않을 수 있음
-- ( 실제 개발에서는 쓰지 말기 -> 자료수가 많을 경우, 컴퓨터 과부하 걸릴 수도 있음 )
SELECT * FROM SUBWAY_STATISTICS;
-- 2. 내가 원하는 순서(컬럼) 또는 원하는 컬럼만 가져오기
-- DESC 테이블명 → 테이블의 구조(스키마) 알아보기
-- → SQL문이 부적합하다는 에러 발생
DESC SUBWAY_STATISTICS ;
-- 실무에서는 쓰지 말기
SELECT
seq_id, STATION_NAME , boarding_date, gubun, board_time
FROM SUBWAY_STATISTICS ss ;
-- 3. 조건에 맞는 자료 검색 (실제 제일 많이 활용)
-- "지하철명이 '잠실(216)'인 자료 조회"
-- • = 연산자 : 특정값과 같다
SELECT ss.*
FROM SUBWAY_STATISTICS ss
WHERE ss.STATION_NAME = '잠실(216)' ;
-- 3-1. 참 | 거짓을 판별하는 조건연산자
-- = : 같으면 true, 다르면 false
-- != 또는 <> : 다르면 true, 같으면 false
-- > : 왼쪽이 클 경우, true
-- < : 오른쪽이 클 경우, true
-- >= : 왼쪽이 크거나 같은 경우, true
-- <= : 오른쪽이 크거나 같은 경우, false
-- "'잠실(216)이 아닌 데이터 조회" : != 와 <> 같은 의미
SELECT ss.*
FROM SUBWAY_STATISTICS ss
WHERE ss.STATION_NAME != '잠실(216)'
OR
ss.STATION_NAME <> '잠실(216)';
-- "'승차'한 고객만 검색"
SELECT ss.*
FROM SUBWAY_STATISTICS ss
WHERE ss.GUBUN = '승차';
-- "'승차'한 고객의 인원 구하기"
-- • count 함수 이용
SELECT count(*)
FROM SUBWAY_STATISTICS ss
WHERE ss.GUBUN = '승차';
-- 4. 뒤에서 공부할 GROUP BY구문을 이용해서 BOARDING_TIME에 대한 종류값을 구해보자
-- SELECT와 GROUP BY 뒤에 조건의 컬럼명을 적어주자
SELECT BOARD_TIME
FROM SUBWAY_STATISTICS ss
GROUP BY BOARD_TIME ;
-- "9시 이후 승하차한 전체 인원 수 검색"
SELECT *
FROM SUBWAY_STATISTICS ss
WHERE ss.BOARD_TIME >= 8 ;
-- "승하차 인원이 500명보다 큰 경우 검색"
SELECT * FROM SUBWAY_STATISTICS ss WHERE ss.PASSENGER_NUMBER > 500;
-- 5. 복합연산자 중에 논리연산
-- ① AND(논리곱) : 동시에 일어나는 경우를 나타내는 경우 - true AND true 인 경우, true
-- ② OR(논리합) : 둘 중 하나만 일어나도 되는 경우 - true OR false 인 경우, true
-- ③ NOT(논리부정) : 이전 값의 결과를 반대로 만드는 경우 - NOT true인 경우, false
-- "'잠실(216)'에서 7시에 승차한 경우 조회"
-- ※ Oracle에서 별칭 이용할 경우, AS 키워드와 큰따옴표 이용
SELECT count(*) AS "잠실역에서 7시에 승차한 승객의 수"
FROM SUBWAY_STATISTICS ss
WHERE ss.STATION_NAME = '잠실(216)' AND ss.GUBUN = '승차' AND ss.BOARD_TIME = 7 ;
-- 지하철역 종류 조회
SELECT ss.STATION_NAME FROM SUBWAY_STATISTICS ss GROUP BY ss.STATION_NAME ;
-- "'선릉(220)'에서 9시에 승차한 인원수 조회"
SELECT count(*)
FROM SUBWAY_STATISTICS ss
WHERE ss.STATION_NAME = '선릉(220)' AND ss.GUBUN = '승차' AND ss.BOARD_TIME = 9 ;
-- "'선릉(220)'에서 승차 또는 하차한 인원수 조회"
SELECT count(*)
FROM SUBWAY_STATISTICS ss
WHERE (ss.STATION_NAME = '선릉(220)' AND ss.GUBUN = '승차')
OR
(ss.STATION_NAME = '선릉(220)' AND ss.GUBUN = '하차');
SELECT count(*)
FROM SUBWAY_STATISTICS ss
WHERE ss.STATION_NAME = '선릉(220)' ;
-- "'선릉(220)에서 하차한 경우 또는 '잠실(226)에서 승차한 경우 조회"
SELECT *
FROM SUBWAY_STATISTICS ss
WHERE (ss.STATION_NAME = '선릉(220)' AND ss.GUBUN = '하차')
OR
(ss.STATION_NAME= '잠실(216)' AND ss.GUBUN ='승차');
-- "'잠실(216)'에서 7시 또는 9시에 탑승한 경우 조회"
SELECT *
FROM SUBWAY_STATISTICS ss
WHERE ss.STATION_NAME = '잠실(216)'
AND ss.GUBUN = '승차'
AND ( ss.BOARD_TIME = 7 OR ss.BOARD_TIME = 9 ) ;
-- 6. Like 연산자 (문자열 연산자)
-- : 대표 문자를 이용해 지정된 속성의 값이 문자 패턴과 일치하는 튜플을 검색하기 위해 사용
-- ① % : 모든 문자 대표
-- ② _ : 문자 하나 대표
-- ③ # : 숫자 하나 대표
-- ※ LIKE 연산자의 경우, 대소문자 구분함 : 'List%' != 'list%'
-- → 대소문자 관계없이 검색하기 위해서는 SQL LOWER(), UPPER() 함수를 이용하여 컬럼의 값을 변환한 후 검색하기
-- ( 예시 )
-- LIKE '잠실%' : '잠실'로 시작하는 모든 문자열
-- LIKE '%잠실' : '잠실'로 끝나는 모든 문자열
-- LIKE '%잠실%' : '잠실'을 포함하는 모든 문자열
-- LIKE '%잠%(%' : '잠'을 포함하고 그 뒤에 '('을 포함하는 모든 문자열
-- 대소문자 관계없이 검색할 경우,
-- : lower(name) LIKE lower('%jane%')
-- 특정 값을 뺀 나머지 검색
-- : LIKE '문자열패턴'의 결과에 NOT 연산하기
-- STATION_NAME NOT LIKE '잠실%'
-- "'잠실'로 시작하는 데이터 검색 (LIKE 이용)"
SELECT * FROM SUBWAY_STATISTICS ss WHERE STATION_NAME LIKE '잠실%';
-- "'나루'를 포함한 데이터 검색"
SELECT * FROM SUBWAY_STATISTICS ss WHERE STATION_NAME LIKE '%나루%';
-- "'잠실'과 '5'가 포함된 데이어 검색"
SELECT * FROM SUBWAY_STATISTICS ss WHERE STATION_NAME LIKE '잠실%5%';
▷ 컬럼명을 보충 설명해주는 별칭 사용하기
-- ※ Oracle에서 별칭 이용할 경우, AS 키워드를 사용하거나 한칸 공백을 주면 됨
-- 별칭의 경우, 큰따옴표를 사용해 묶어줌 (큰따옴표 사용 시 공백 가능)
-- • Oracle에서 dual은 임시 테이블을 의미
SELECT SYSDATE AS "현재시간" FROM dual;
SELECT sysdate "현재 시간은 " FROM dual;
'백엔드 > Oracle' 카테고리의 다른 글
Oracle : SQL - 내장 함수 (0) | 2023.07.07 |
---|---|
Oracle : SQL ( SELECT -2 ) (0) | 2023.07.06 |
45 - SQL : DML (0) | 2023.06.30 |
44 - Oracle : SQL 기본 (0) | 2023.06.29 |
Oracle 사용자 계정 및 샘플 테이블 생성 (0) | 2023.06.27 |