Today I Learned-17
SQL - 4
- 조인(join)
- 서브쿼리
- 데이터 조작어(INSERT, UPDATE 등)
조인(join) - 1. 조인? (중요!!)
- 두 개 이상의 테이블을 연결하여 하나의 테이블처럼 출력
- Union 등의 집합연산자와는 다름
- 집합연산자: column 개수 동일 // 조인: column 개수 상관없음
- 집합연산자: 세로연결 // 조인: 가로연결
- 별다른 조건없다면, ‘출력 행 개수 = [테이블1] x [테이블2]’
- select문에서 열 선택할 때는, 어떤 테이블의 열인지 표기!
- 테이블마다 별칭 지정 가능(지정 후 select문, where문 등에서 구분자로 사용)
조인(join) - 2. 조인 종류
- 내부 조인
- 등가 조인: ‘=’ 사용, 각 테이블의 특정 열에 일치하는 데이터를 출력
- 비등가 조인: 등가조인 외 범위설정 등
ex.
SELECT *
FROM EMP E, SALGRADE S
WHERE E.SAL BETWEEN S.LOSAL AND S.HISAL;
- 자체 조인: 하나의 테이블을 여러 테이블처럼 사용
별칭 사용하여 서로 다른 테이블처럼 사용
- 등가 조인: ‘=’ 사용, 각 테이블의 특정 열에 일치하는 데이터를 출력
- 외부 조인
- left outer join: 왼쪽 테이블의 항목(열)을 전체 출력
- right outer join: 오른쪽 테이블의 항목(열)을 전체 출력
- full outer join: 두 테이블의 모든 항목(열) 출력
교재 p.231 벤 다이어그램 참고!
조인(join) - 3. SQL-99 표준문법으로 배우는 조인
- NATURAL JOIN
- ‘등가조인’처럼 사용
- 자동으로 조인 기준 열 지정해준다!!
- JOIN ~ USING
- JOIN ~ ON
조인(join) - 4. 3개 이상의 테이블 조인?
- ‘오라클’에서 3개 이상의 테이블 조인할 때
FROM TABLE1, TABLE2, TABLE3
WHERE TABLE1.COL = TABLE2.COL
AND TABLE2.COL = TABLE3.COL
- ‘SQL-99’에서 3개 이상의 테이블 조인할 때
FROM TABLE1. JOIN TABLE2 ON (조건식)
JOIN TABLE3 ON (조건식)
서브쿼리 - 1. 서브쿼리? (중요!!)
- SQL문 속 또 다른 SQL문
ex.
- 서브쿼리 특징
- 비교/조회 대상의 오른쪽에 괄호()로 묶어서 사용
- 대부분의 경우, 서브쿼리에선 ORDER BY절 사용 불가!
- 메인쿼리의 비교 대상과 같은 자료형, 같은 개수여야 함!
- 메인쿼리의 연산자 종류와 호환 가능해야 함!
ex. 메인쿼리의 연산자가 하나의 데이터로만 연산 가능하다면,
서브쿼리의 결과 행 수는 반드시 하나여야 함!
서브쿼리 - 2. 서브쿼리 연산자
- 단일행: 서브쿼리의 결과가 하나 => 비교연산(>=, !=, =…)
- 다중행: 서브쿼리의 결과가 여러개 => IN, ANY, SOME, ALL 등
- IN: 메인쿼리의 데이터가 서브쿼리 결과와 일치하는 항목들만 출력
- ANY/SOME: 메인쿼리 조건식을 서브쿼리 결과 중 하나라도 만족하면 출력
- ALL: 메인쿼리 조건식을 서브쿼리 결과 모두가 만족하면 출력
- EXISTS: 서브쿼리의 결과가 존재하면(즉, 행이 1개이상), 메인쿼리 실행
서브쿼리 - 3. 다중열 서브쿼리
-
- 메인쿼리의 비교할 열, 괄호로 묶음
-
- 괄호로 묶은 데이터와 같은 자료형 데이터를 서브쿼리에 명시
- 괄호로 묶은 데이터와 같은 자료형 데이터를 서브쿼리에 명시
서브쿼리 - 4. FROM절에 사용하는 서브쿼리 & WITH절
- FROM절에 사용하는 서브쿼리 = ‘인라인 뷰(inline view)’
일부 데이터를 먼저 추출, 별칭 지정 후 사용가능
- ‘WITH절’
메인쿼리 전에, 사용할 서브쿼리와 별칭을 미리 지정
서브쿼리 - 5. SELECT절에 사용하는 서브쿼리
- SELECT절에 하나의 열 영역으로서 결과 출력
- 교재 P.261 확인
데이터 조작/정의/제어
- DDL(Data Definition Language): 데이터 정의어
CREATE, ALTER, DROP, RENAME, TRUNCATE
- DCL(Data Control Language): 데이터 제어어
GRANT, REVOKE
- DML(Data Manipulation Language): 데이터 조작어
SELECT, INSERT, UPDATE, DELETE
데이터 조작어 - 1. INSERT문: 테이블에 데이터 추가
- 기본문
INSERT INTO 테이블 이름[(열1, 열2... ... 열N) 생략가능]
VALUES (열1에 넣을 데이터, 열2에 넣을 데이터, ... ... 열N에 넣을 데이터);
- 테이블의 열(column) 개수에 맞게 values 입력!
- 테이블의 열(column) 순서에 맞는 values 입력!
- 날짜 데이터도 입력 가능
데이터 조작어 - 2. UPDATE문: 테이블에 데이터 수정
- 기본문
UPDATE [변경할 테이블]
SET [변경할 열1]=[데이터], [변경할 열2]=[데이터], ... [변경할 열N]=[데이터],
WHERE [데이터를 변경할 대상 행을 선별하기 위한 조건];
- ROLLBACK
UPDATE / DELETE 사용 이전으로 되돌리기!
- COMMIT
UPDATE / DELETE 실행을 완료!
COMMIT 이후에는 ROLLBACK 불가
기타(팁)
- 테이블 복제 (임시 테이블 생성)
다음 강의 준비
- SQL 강의 두 번 남음.. 진도 빨리 나갈 듯
nice!!!