5장. SQL 작성과 결과
정보처리기사 실기 개념서 · 2부. 데이터베이스 · 절 9개
이 장에서 배우는 것
5-1. 예시 테이블
이 장의 모든 쿼리는 아래 두 테이블을 쓴다(결과는 SQLite로 실행해 확인).
5-2. 기본 SELECT — WHERE·LIKE·IN·BETWEEN·NULL·정렬
'%수'는 "수로 끝남", '_영%'는 "두 번째 글자가 영".
5-3. 집계 함수와 GROUP BY·HAVING
COUNT(*)는 6행 전체, COUNT(점수)는 NULL을 뺀 5, AVG(점수) = 413 ÷ 5 = 82.6 (NULL 행은 분모에서도 빠진다).
5-4. JOIN
같은 결과를 FROM 학생 S, 수강 C WHERE S.학번 = C.학번(동등 조인)으로도 쓸 수 있다. 내부 조인은 양쪽에 짝이 있는 행만 남는다(정다은·한소라 제외).
5-5. 서브쿼리와 집합 연산
평균 82.6보다 큰 행만 남는다. 비교 연산자 뒤의 서브쿼리는 값 하나를 돌려줘야 한다(여러 행이면 IN·ANY·ALL 사용).
5-6. 뷰와 인덱스
뷰: 가상 테이블(데이터를 따로 저장하지 않고 SELECT 정의만 저장). 논리적 독립성(원본 테이블 구조가 바뀌어도 뷰 정의만 고치면 뷰를 쓰는 프로그램은 그대로 둘 수 있음)·보안(일부 컬럼만 공개)·질의 단순화가 장점…
5-7. DML — INSERT·UPDATE·DELETE
다루는 항목: 이영희, 최준호
5-8. DDL — CREATE·ALTER·DROP
외래키 옵션: ON DELETE CASCADE(부모 삭제 시 자식도 삭제), SET NULL(자식 외래키를 NULL로), RESTRICT·NO ACTION(참조 중이면 거부).
5-9. DCL과 TCL
WITH GRANT OPTION: 받은 권한을 다른 사용자에게 다시 부여할 수 있게 함