2시간 만에 합격! SQLD 핵심 요약으로 시험 완벽 대비하기
게시일:
작성자: 자청의 유튜브 추출기
SQL 핵심 정리 (중학생 눈높이)
1. 관계형 데이터베이스? 집합이랑 비슷해!
- 우리가 쓰는 오라클, MySQL 같은 데이터베이스는 '관계형 데이터베이스'라고 해.
- 이건 수학의 '집합'이랑 비슷해서, 합집합, 교집합, 차집합 같은 개념을 써.
- 데이터베이스에서는 이걸 '조인'이라는 걸로 구현해서 쓸 수 있어.
- 셀렉트(SELECT) 문은 원하는 데이터만 골라오는 건데,
- 행(Row)만 골라오는 걸 '선택 연산'
- 속성(Column)만 골라오는 걸 '투영 연산'이라고 불러.
2. SQL 명령어 종류 (중요!)
SQL 명령어는 크게 4가지로 나눌 수 있어.
- DDL (Data Definition Language): 데이터베이스의 '그릇' 자체를 만들거나, 모양을 바꾸거나, 없애는 명령어.
CREATE
(만들기),DROP
(없애기),ALTER
(수정하기),TRUNCATE
(안에 데이터만 싹 비우기)
- DML (Data Manipulation Language): 그릇 안에 있는 '음식' (데이터)을 추가하거나, 빼거나, 수정하는 명령어.
SELECT
(조회),INSERT
(추가),UPDATE
(수정),DELETE
(삭제)
- DCL (Data Control Language): 누가 데이터베이스를 쓸 수 있는지, 어떤 권한을 줄지 관리하는 명령어.
GRANT
(권한 주기),REVOKE
(권한 뺏기)
- TCL (Transaction Control Language): 데이터베이스에 명령을 내리는 행위 자체를 제어하는 명령어.
COMMIT
(저장),ROLLBACK
(되돌리기),SAVEPOINT
(임시 저장)
3. 트랜잭션 특징 (시험에 잘 나옴!)
트랜잭션은 여러 작업을 하나로 묶어서 처리하는 건데, 이런 특징이 있어.
- 원자성 (Atomicity): 모든 작업을 하거나, 아예 안 하거나 둘 중 하나만 해야 해. 중간에 멈추면 안 돼.
- 일관성 (Consistency): 데이터베이스 상태가 항상 일관성을 유지해야 해.
- 고립성 (Isolation): 여러 트랜잭션이 동시에 실행될 때 서로 방해하면 안 돼.
- 영속성 (Durability): 한번 완료된 트랜잭션은 데이터베이스에 영원히 저장되어야 해.
4. SQL 실행 순서
SQL 문은 이렇게 4단계를 거쳐서 실행돼.
- 파싱 (Parsing): 문법이 맞는지 확인하는 단계. 틀리면 에러가 나.
- 실행 계획 (Execution Plan): 어떻게 데이터를 가져올지 계획을 세워.
- 실행 (Execution): 계획대로 데이터를 가져와.
- 인출 (Fetch): 가져온 데이터를 우리한테 보여줘.
5. SELECT 문 제대로 쓰기
SELECT * FROM 테이블명;
: 테이블에 있는 모든 컬럼(속성)을 다 보여줘.SELECT 컬럼1, 컬럼2 FROM 테이블명;
: 원하는 컬럼만 골라서 보여줘.SELECT ... FROM 테이블명 WHERE 조건;
: 특정 조건을 만족하는 데이터만 보여줘.=
(같다),!=
또는<>
(다르다),>
(크다),<
(작다),>=
(크거나 같다),<=
(작거나 같다)LIKE
: 특정 문자가 포함된 걸 찾을 때 써.%
는 아무 문자나 올 수 있다는 뜻.IN
: 여러 값 중에 하나라도 같으면 보여줘.BETWEEN A AND B
: A와 B 사이의 값을 보여줘.IS NULL
/IS NOT NULL
: 값이 비어있는지 아닌지 확인할 때 써.
ORDER BY 컬럼명 [ASC|DESC];
: 결과를 특정 컬럼 기준으로 정렬해줘.ASC
(오름차순, 기본값),DESC
(내림차순)ORDER BY
는 자원을 많이 사용하니까 주의해야 해.
DISTINCT
: 중복된 값을 제거하고 유일한 값만 보여줘.AS
(Alias) : 컬럼 이름이나 테이블 이름을 잠시 다른 이름으로 바꿔서 쓸 수 있어. (생략 가능)
6. 함수 활용하기
- 문자 함수:
LOWER()
,UPPER()
: 소문자, 대문자로 바꿔줘.LENGTH()
: 글자 수를 세줘.SUBSTRING()
: 글자의 일부만 가져와.INSTR()
: 특정 문자가 몇 번째에 있는지 찾아줘.LPAD()
,RPAD()
: 글자 앞이나 뒤에 특정 문자를 채워서 길이를 맞춰줘.TRIM()
,LTRIM()
,RTRIM()
: 앞뒤 공백을 없애줘.REPLACE()
: 특정 글자를 다른 글자로 바꿔줘.
- 숫자 함수:
ROUND()
: 반올림해줘.TRUNC()
: 버림해줘.CEIL()
: 올림해줘.FLOOR()
: 내림해줘.POWER()
: 제곱해줘.
- 날짜 함수:
SYSDATE
: 오늘 날짜와 시간을 보여줘.ADD_MONTHS()
: 몇 개월 뒤 날짜를 계산해줘.NEXT_DAY()
: 다음 특정 요일 날짜를 계산해줘.- 날짜에 숫자 더하기/빼기는 날짜 계산을 해줘. (예:
SYSDATE + 1
은 내일 날짜)
- NULL 처리:
NVL(컬럼, 대체값)
: 컬럼 값이 NULL이면 대체값으로 바꿔줘.NVL2(컬럼, NULL아닐때값, NULL일때값)
: NULL일 때와 아닐 때 다른 값을 보여줘.
7. 그룹화와 집계 (GROUP BY, HAVING)
- GROUP BY: 특정 컬럼을 기준으로 데이터를 묶어줘.
COUNT()
(개수 세기),SUM()
(합계 구하기),AVG()
(평균 구하기),MAX()
(최대값 구하기),MIN()
(최소값 구하기) 같은 '집계 함수'와 함께 써.
- HAVING:
GROUP BY
로 묶은 결과에 조건을 걸 때 사용해. (WHERE
는 묶기 전에,HAVING
은 묶은 후에!)
8. 조인 (JOIN)
여러 테이블의 데이터를 합쳐서 보여줄 때 써.
- CROSS JOIN: 두 테이블의 모든 데이터를 짝지어서 보여줘. (데이터가 엄청 많아질 수 있어!)
- INNER JOIN: 두 테이블에서 같은 값을 가진 데이터끼리만 합쳐줘. (가장 많이 써!)
- OUTER JOIN: 한쪽 테이블의 모든 데이터를 보여주고, 다른 테이블에서는 같은 값이 있으면 보여주고, 없으면 NULL로 채워줘.
LEFT OUTER JOIN
(왼쪽 테이블 기준),RIGHT OUTER JOIN
(오른쪽 테이블 기준),FULL OUTER JOIN
(양쪽 다 기준)- 오라클에서는
(+)
기호를 사용하기도 해.
- NATURAL JOIN: 두 테이블에서 이름이 같은 컬럼끼리 자동으로 조인해줘. (거의 안 써!)
- JOIN 조건:
ON
: 어떤 컬럼을 기준으로 조인할지 명확하게 지정해줘.USING
: 두 테이블에 같은 이름의 컬럼이 있을 때 사용해.
9. 서브쿼리 (Subquery)
하나의 SQL 문 안에 또 다른 SQL 문을 넣는 거야.
- 단일행 서브쿼리: 결과가 한 행만 나와.
- 다중행 서브쿼리: 결과가 여러 행이 나올 수 있어.
- 스칼라 서브쿼리:
SELECT
절에 들어가서 컬럼처럼 사용돼. (성능에 안 좋아!) - 인라인 뷰:
FROM
절에 들어가서 임시 테이블처럼 사용돼.
10. 계층형 SQL (Hierarchical Query)
부모-자식 관계처럼 계층 구조로 데이터를 보여줄 때 써.
START WITH
: 시작점을 지정해줘.CONNECT BY PRIOR
: 부모-자식 관계를 어떻게 따라갈지 지정해줘.LEVEL
: 계층의 깊이를 나타내줘.
11. 윈도우 함수 (Window Function)
GROUP BY
처럼 데이터를 묶지 않고, 특정 범위의 데이터를 보면서 계산할 때 써.
ROW_NUMBER()
,RANK()
,DENSE_RANK()
: 순위를 매겨줘.SUM() OVER (ORDER BY ...)
: 순차적으로 더해줘.
12. SQL 최적화
- 옵티마이저: SQL 문을 가장 효율적으로 실행할 방법을 찾아주는 프로그램이야.
- 인덱스: 데이터를 빠르게 찾기 위해 사용하는 거야. (책의 목차 같은 거지!)
이 내용들을 잘 기억하고, 직접 실습해보면 SQL 시험은 충분히 잘 볼 수 있을 거야! 파이팅!