3장 : SQL 응용(3과목)
1. SQL (Structured Query Language, 구조화된 질의어)
- 국제 표준 데이터베이스 언어
- 관계대수와 관계해석을 기초로 한 혼합 데이터 언어
2. SQL의 분류
- DDL (Data Define Language, 데이터 정의어)
- DML (Data Manipulation Language, 데이터 조작어)
- DCL (Data Control Language, 데이터 제어어)
3. DDL (Data Define Language, 데이터 정의어) CAD
- 논리적 데이터 구조와 물리적 데이터 구조의 사상을 정의
- CREATE : 정의 시 사용
- 기출 기준 예시) CREATE INDEX 인덱스명 ON 테이블명
- ALTER : 변경 시 사용
- 기출 기준 예시) ALTER TABLE 테이블명 ADD 속성명 데이터타입;
- ALTER TABLE 테이블명 ALTER 속성명
- DROP
기출 기준 예시) DROP TABLE 테이블명 CASCADE;
- 제거 시 사용
- CASCADE : 제거될 테이블을 참조하는 모든 제약과 뷰도 자동으로 제거된다.
- RESTRICT : 대상 테이블이 제약이나 뷰로부터 참조되지 않은 경우에만 제거된다.
4. DML (Data Manipulation Language, 데이터 조작어) SIDU
- 실질적으로 처리하는 데 사용
- SELECT (+FROM WHERE) : 튜플 검색 (중복 없이 조회하고자 한다면 DISTICT)
- INSERT (+INTO VALUES) : 튜플 삽입
- 기출 기준 예시) INSERT INTO 테이블명(속성명1, 속성명2, ...) VALUES (데이터1, 데이터2, ...);
- DELETE (+ FROM WHERE) : 튜플 삭제, 한 개의 delete에는 한 개의 테이블만 가능
- 기출 기준 예시) DELETE FROM 테이블명;
- UPDATE (+ SET WHERE) : 튜플 내용 변경
- 기출 기준 예시) UPDATE 테이블명 SET 속성명 = 새로운데이터값 WHERE 속성명 = 기존데이터값;
5. DCL (Data Control Language, 데이터 제어어) CRGR(S)
- 관리자가 관리를 목적으로 사용
- 데이터의 보안, 무결성, 회복, 병행 제어 등을 정의하는 데 사용
- COMMIT : 실제 물리 디스크에 저장, 조작의 완료를 알림
- ROLLBACK : 비정상적 종료에 대해 원래 상태로 복구(아직 COMMIT 되지 않은 변경된 모든 내용들을 취소하고 데이터베이스를 이전 상태로 되돌림)
- GRANT : 권한 부여
- 기출 기준 예시) GRANT RESOURCE TO 유저명; => 데이터베이스 및 테이블을 생성할 수 있는 권한
- 기출 기준 예시) GRANT CONNECT TO 유저명; => 단순히 데이터베이스에 있는 정보를 검색할 수 있는 권한 부여
- REVOKE : 권한 취소
- SAVEPOINT : Rollback 할 위치 지정
6. SQL에서 사용하는 테이블의 종류 ★★★
- 기본 테이블 (Basic Table) : 이름을 가지고 있으며, 독자적으로 존재함
- 뷰 테이블 (View Table) : 독자적으로 존재하지 못하고 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블로써 사용자에게 보여 주고 싶은 정보만을 취합할 때 주로 사용
- 임시 테이블 (Temporary Table) : 질의문 처리 결과로 만들어진, 이름을 가지지 않는 테이블
7. JOIN
- JOIN은 2개의 테이블에 대해 연관된 튜플들을 결합하여, 하나의 새로운 릴레이션을 반환한다.
- JOIN은 INNER JOIN 과 OUTER JOIN으로 구분된다.
- JOIN은 일반적으로 FROM절에 기술하지만 릴레이션이 사용되는 어느 곳에서나 사용 가능하다.
8. INNER JOIN
- INNER JOIN은 EQUI JOIN 과 NON-EQUI JOIN으로 구분
- 조건 없는 INNER JOIN을 수행하면, CROSS JOIN 과 동일한 결과를 얻음
SELECT 테이블명1.공통속성명, 테이블명2.공통속성명
FROM 테이블명1
JOIN 테이블명2 USING 공통속성명;
SELECT 테이블명1.속성명1, 테이블명2.속성명2
FROM 테이블명1
JOIN 테이블명2 ON (테이블명1.공통속성명 = 테이블명2.공통속성명);
8-1. EQUI JOIN
- JOIN 대상 테이블에서 공통 속성을 기준으로 "=" 비교에 의해 같은 값을 가지는 행을 연결하여 결과를 생성
- JOIN 조건이 "="일 때, 동일한 속성이 두 번 나타남
- 이 중 중복된 속성을 제거하여, 같은 속성을 한 번만 표기하는 방법을 NATURAL JOIN
SELECT 테이블명1.속성명, 테이블명2.속성명
FROM 테이블명1, 테이블명2
WHERE 테이블명1.속성명 = 테이블명2.속성명;
8-2. NON-EQUI JOIN
- JOIN 조건에 "="가 아닌 나머지 비교 연산자를 사용하는 JOIN 방법
SELECT 테이블명1.속성명, 테이블명2.속성명
FROM 테이블명1, 테이블명2
WHERE 조건절;
9. OUTER JOIN
- 릴레이션에서 JOIN 조건에 만족하지 않는 튜플도 결과로 출력하기 위한 JOIN 방법
- LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN이 있음
- LEFT, RIGHT 등 OUTER 앞에 붙는 위치 기준으로 해당 위치의 값은 NULL이라도 모두 출력됨