SQL 2과목 총정리
SQL문이 데이터베이스에서 “무엇을 대상으로 어떤 작업을 하느냐”에 따라 나눈 것
| DDL | 데이터베이스 구조를 다룸 | 테이블, 뷰, 인덱스 등을 생성/수정/삭제 | CREATE, ALTER, DROP, TRUNCATE |
| DML | 테이블 안의 데이터를 다룸 | 데이터를 조회/삽입/수정/삭제 | SELECT, INSERT, UPDATE, DELETE |
| DCL | 사용자 권한을 다룸 | 권한 부여/회수 | GRANT, REVOKE |
| TCL | 트랜잭션을 다룸 | 변경사항 확정/취소 | COMMIT, ROLLBACK, SAVEPOINT |
예를 들어서 엑셀로 비유하면:
- DDL: 엑셀 파일의 시트 구조 만들기
→ 열 추가, 표 만들기, 표 삭제하기 - DML: 표 안의 실제 값 수정하기
→ 행 추가, 값 변경, 데이터 삭제, 조회 - DCL: 누가 이 파일을 볼 수 있고 수정할 수 있는지 정하기
→ 편집 권한 주기/빼기 - TCL: 작업한 내용을 저장할지 되돌릴지 정하기
→ 저장하기, 실행 취소하기
관계대수 연산자
| 순수 관계 연산자 | SELECT | σ | 조건에 맞는 행 선택 | WHERE |
| 순수 관계 연산자 | PROJECT | π | 원하는 열 선택 | SELECT 컬럼명 |
| 순수 관계 연산자 | JOIN | ⋈ | 두 릴레이션을 조건에 맞게 연결 | JOIN |
| 순수 관계 연산자 | DIVIDE | ÷ | 모든 조건을 만족하는 데이터 검색 | NOT EXISTS, GROUP BY HAVING 등 |
| 일반 집합 연산자 | UNION | ∪ | 합집합 | UNION |
| 일반 집합 연산자 | INTERSECTION | ∩ | 교집합 | INTERSECT |
| 일반 집합 연산자 | DIFFERENCE | − | 차집합 | MINUS, EXCEPT |
| 일반 집합 연산자 | CARTESIAN PRODUCT | × | 가능한 모든 조합 | CROSS JOIN |
SELECT 절
SELECT DISTINCT 사용 시, 중복을 제거하고 유일 값을 선택한다.
* WHERE은 튜플(행)을 필터링하고, SELECT는 속성(열)을 필터링한다.
* Oracle에서의 CONCAT은 ||, SQL Server에서의 CONCAT은 +
문자함수 정리
| LOWER(문자) | 문자를 소문자로 변환한다. | LOWER('SQLD') | 'sqld' |
| UPPER(문자) | 문자를 대문자로 변환한다. | UPPER('sql') | 'SQL' |
| CONCAT(문자1, 문자2) | 두 문자를 연결한다. | CONCAT('SQL', 'D') | 'SQLD' |
| SUBSTR(문자, 시작위치, 길이) | 문자에서 지정한 위치부터 원하는 길이만큼 추출한다. | SUBSTR('DATABASE', 1, 4) | 'DATA' |
| LENGTH(문자) | 문자의 길이를 반환한다. | LENGTH('SQLD') | 4 |
| LTRIM(문자) | 왼쪽 공백을 제거한다. | LTRIM(' SQL') | 'SQL' |
| RTRIM(문자) | 오른쪽 공백을 제거한다. | RTRIM('SQL ') | 'SQL' |
| TRIM(문자) | 양쪽 공백을 제거한다. | TRIM(' SQL ') | 'SQL' |
| REPLACE(문자, 찾을문자, 바꿀문자) | 특정 문자를 다른 문자로 바꾼다. | REPLACE('2026-05-27', '-', '/') | '2026/05/27' |
| INSTR(문자, 찾을문자) | 찾는 문자가 처음 나타나는 위치를 반환한다. | INSTR('DATABASE', 'A') | 2 |
| ASCII(문자) | 문자의 ASCII 코드 값을 반환한다. | ASCII('A') | 65 |
| CHR(숫자) | ASCII 코드 값에 해당하는 문자를 반환한다. | CHR(65) | 'A' |
* REGEXP 함수 ex)REGEXP_SUBSTR('ABCD' , '.C') 는 BC
| 표현식 | 의미 | 예시 패턴 | 매칭 예시 |
| . | 아무 문자 1개 | A.C | ABC, A1C |
| \ | 특수문자를 문자 그대로 인식하게 하는 이스케이프 문자 | \. | 실제 점 . |
| ^ | 문자열 시작 | ^A | ABC, APPLE |
| $ | 문자열 끝 | A$ | KOREA, DATA |
| * | 앞 문자가 0개 이상 반복 | AB* | A, AB, ABB |
| + | 앞 문자가 1개 이상 반복 | AB+ | AB, ABB |
| ? | 앞 문자가 0개 또는 1개 | AB? | A, AB |
| {n} | 정확히 n번 반복 | A{3} | AAA |
| {n,} | n번 이상 반복 | A{2,} | AA, AAA |
| {n,m} | n번 이상 m번 이하 반복 | A{2,4} | AA, AAA, AAAA |
| [ ] | 대괄호 안 문자 중 하나 | [ABC] | A, B, C |
| [^ ] | 대괄호 안 문자를 제외 | [^0-9] | 숫자가 아닌 문자 |
| | | OR 조건 | CAT|DOG | CAT, DOG |
| ( ) | 그룹 묶기 | (AB)+ | AB, ABAB |
숫자함수 정리
| ABS(숫자) | 숫자의 절댓값을 반환한다. | ABS(-10) | 10 |
| SIGN(숫자) | 숫자가 양수, 음수, 0인지 반환한다. | SIGN(-10) | -1 |
| ROUND(숫자, 자리수) | 지정한 자리수까지 반올림한다. | ROUND(123.456, 2) | 123.46 |
| TRUNC(숫자, 자리수) | 지정한 자리수까지 남기고 버린다. | TRUNC(123.456, 2) | 123.45 |
| CEIL(숫자) | 숫자보다 크거나 같은 가장 작은 정수를 반환한다. | CEIL(123.1) | 124 |
| FLOOR(숫자) | 숫자보다 작거나 같은 가장 큰 정수를 반환한다. | FLOOR(123.9) | 123 |
| MOD(숫자1, 숫자2) | 숫자1을 숫자2로 나눈 나머지를 반환한다. | MOD(10, 3) | 1 |
| POWER(숫자, 제곱값) | 숫자의 거듭제곱 값을 반환한다. | POWER(2, 3) | 8 |
| SQRT(숫자) | 숫자의 제곱근을 반환한다. | SQRT(9) | 3 |
날짜함수 정리
| SYSDATE | Oracle | 현재 날짜와 시간을 반환 | SELECT SYSDATE FROM DUAL; |
| GETDATE() | SQL Server | 현재 날짜와 시간을 반환 | SELECT GETDATE(); |
| 날짜 + 1 | 하루 뒤 |
| 날짜 + 2 | 이틀 뒤 |
| 날짜 + 7 | 일주일 뒤 |
| 날짜 + 1/24 | 1시간 뒤 |
| 날짜 + 1/(24*60) | 1분 뒤 |
| 날짜 + 1/(24*60*60) | 1초 뒤 |
1/24는 하루를 24시간으로 나눈 1시간, 1/24*(60/6)은 60분을 6으로 나눈 10분으로 1시간을 나누면? 6분이다.
변환함수 정리
| TO_CHAR(숫자/날짜, 형식) | 숫자 또는 날짜를 문자로 변환 | TO_CHAR(SYSDATE, 'YYYY-MM-DD') | 현재 날짜를 '2026-05-27' 같은 문자 형식으로 변환 |
| TO_DATE(문자, 형식) | 문자를 날짜로 변환 | TO_DATE('2026-05-27', 'YYYY-MM-DD') | 문자 '2026-05-27'을 날짜 데이터로 변환 |
| TO_NUMBER(문자) | 문자를 숫자로 변환 | TO_NUMBER('1000') | 문자 '1000'을 숫자 1000으로 변환 |
문자는 연산/비교가 불가능하기 때문에 변환해줘야 한다.
집계함수 정리
| 개수 | COUNT(*) | COUNT(*) | 전체 행의 개수를 센다. NULL 포함 | COUNT(*) |
| 개수 | COUNT(컬럼명) | COUNT(컬럼명) | 해당 컬럼의 값 개수를 센다. NULL 제외 | COUNT(급여) |
| 합계 | SUM(컬럼명) | SUM(컬럼명) | 합계를 구한다. | SUM(급여) |
| 평균 | AVG(컬럼명) | AVG(컬럼명) | 평균을 구한다. NULL 제외 | AVG(급여) |
| 최댓값 | MAX(컬럼명) | MAX(컬럼명) | 가장 큰 값을 구한다. | MAX(급여) |
| 최솟값 | MIN(컬럼명) | MIN(컬럼명) | 가장 작은 값을 구한다. | MIN(급여) |
NULL 제외 계산이 원칙이며, WHERE 절에서는 사용할 수 없다.
NULL + 숫자 = NULL 이며, SUM은 NULL을 제외하고 집계한다.
NULL 관련 함수
| 구분 | Oracle | SQL Server | 설명 | 사용 예시 |
| NULL 대체 | NVL(값, 대체값) | ISNULL(값, 대체값) | 값이 NULL이면 대체값을 반환 | NVL(급여, 0) / ISNULL(급여, 0) |
| NULL 여부에 따른 처리 | NVL2(값, 결과1, 결과2) | 없음 | 값이 NULL이 아니면 결과1, NULL이면 결과2 반환 | NVL2(급여, '있음', '없음') |
| 두 값 비교 후 NULL 반환 | NULLIF(값1, 값2) | NULLIF(값1, 값2) | 두 값이 같으면 NULL, 다르면 값1 반환 | NULLIF(급여, 0) |
| 첫 번째 NULL 아닌 값 반환 | COALESCE(값1, 값2, ...) | COALESCE(값1, 값2, ...) | 여러 값 중 NULL이 아닌 첫 번째 값을 반환 | COALESCE(전화번호, 휴대폰번호, '없음') |
| NVL | Oracle에서 NULL을 다른 값으로 바꿈 |
| ISNULL | SQL Server에서 NULL을 다른 값으로 바꿈 |
| NVL2 | NULL 여부에 따라 서로 다른 값 반환 |
| NULLIF | 두 값이 같으면 NULL 반환 |
| COALESCE | 여러 값 중 NULL이 아닌 첫 번째 값 반환 |
CASE 문 / DECODE 함수
| 구분 | Oracle | SQL Server | 설명 | 사용 예시 |
| CASE문 | CASE WHEN 조건 THEN 결과 ELSE 결과 END | CASE WHEN 조건 THEN 결과 ELSE 결과 END | 조건에 따라 결과를 다르게 반환 | CASE WHEN 점수 >= 60 THEN '합격' ELSE '불합격' END |
| DECODE 함수 | DECODE(값, 비교값1, 결과1, 비교값2, 결과2, 기본값) | 없음 | 값이 비교값과 같으면 해당 결과 반환 | DECODE(등급, 'A', '우수', 'B', '보통', '기타') |
WHERE 절
기본 비교 연산자
| 비교 항목 | Oracle | SQL Server |
| 같음 | = | = |
| 같지 않음 | <>, !=, ^= | <>, != |
| 대소 비교 | >, <, >=, <= | >, <, >=, <= |
<>는 모든 운영체제에서 지원한다.
조건 표현 연산자
| 연산자 | 설명 | 사용 예시 | 결과/의미 |
| BETWEEN A AND B | A 이상 B 이하 범위 조회 | WHERE 급여 BETWEEN 3000 AND 5000 | 3000 이상 5000 이하 |
| IN (값1, 값2, ...) | 목록 중 하나와 일치하는 값 조회 | WHERE 부서 IN ('영업', '마케팅') | 영업 또는 마케팅 |
| LIKE | 문자 패턴 검색 | WHERE 이름 LIKE '김%' | 김으로 시작하는 이름 |
| IS NULL | NULL 값 조회 | WHERE 급여 IS NULL | 급여가 NULL |
| NOT | 조건의 반대 | WHERE 부서 NOT IN ('영업') | 영업이 아닌 부서 |
NULL 비교 시, = NULL 혹은 != NULL 의 표현은 오류가 발생한다.
* 연산자 우선순위는 괄호() → 비교연산자 → NOT → AND → OR , 이 정도만 알아두면 된다.
GROUP BY 절 / HAVING 절
GROUP BY: 특정 컬럼을 기준으로 행들을 그룹화하여 집계함수 결과를 산출
HAVING: 그룹화된 결과에 대한 조건(WHERE은 튜플(행) 단위, HAVING은 그룹단위), 단독 사용도 가능(집계함수 활용)
* WHERE 절에서는 집계 함수 사용이 불가하지만, HAVING 절에서는 사용한다.
GROUP BY절은 리소스 소모가 크므로, WHERE 절로 먼저 필터링 후 수행하는 것이 성능상 유리하다.
ORDER BY절
결과를 정렬할 때 사용
ASC - 오름차순(기본값, 생략 가능), DESC - 내림차순
* SELECT 절보다 나중에 수행되므로 SELECT 절에서 선언된 별칭(ALIAS)사용 가능
GROUP BY 절보다 나중에 수행되므로 집계함수 사용 가능
* Oracle은 NULL을 최댓값으로, SQL Server는 NULL을 최솟값으로 처리한다.
JOIN
조건 형태에 따른 분류
| JOIN 종류 | 의미 | 조건 형태 | 예시 |
| EQUI JOIN | 두 테이블의 컬럼 값이 같을 때 연결 | = 사용 | A.부서번호 = B.부서번호 |
| NON-EQUI JOIN | 두 테이블을 =이 아닌 조건으로 연결 | >, <, BETWEEN 등 사용 | A.급여 BETWEEN B.최소급여 AND B.최대급여 |
| NATURAL JOIN | 이름이 같은 컬럼을 자동으로 찾아 연결 | 자동 연결 | NATURAL JOIN |
| CROSS JOIN | 조건 없이 모든 행을 조합 | 조건 없음 | A CROSS JOIN B |
* NATURAL JOIN은 ON/USING 조건절 없이 조인 가능
결과에 따른 분류
| JOIN 종류 | 의미 | 결과 | 예시 |
| INNER JOIN | 조건이 일치하는 행만 조회 | 양쪽에 모두 있는 데이터 | A JOIN B ON A.ID = B.ID |
| LEFT OUTER JOIN | 왼쪽 테이블은 모두 조회 | 왼쪽 전체 + 오른쪽 일치 데이터 | A LEFT JOIN B ON A.ID = B.ID |
| RIGHT OUTER JOIN | 오른쪽 테이블은 모두 조회 | 오른쪽 전체 + 왼쪽 일치 데이터 | A RIGHT JOIN B ON A.ID = B.ID |
| FULL OUTER JOIN | 양쪽 테이블을 모두 조회 | 양쪽 전체 데이터 | A FULL JOIN B ON A.ID = B.ID |
| SELF JOIN | 같은 테이블끼리 조인 | 자기 자신과 연결 | 사원 A JOIN 사원 B |
LEFT/RIGHT OUTER JOIN은 가져오는 컬럼이 없으면 NULL
Oracle 옛날 외부 조인 문법: + 사용
| 구분 | 의미 | 표준 JOIN으로 바꾸면 | 예시 |
| A.컬럼 = B.컬럼(+) | B 테이블에 없는 값도 A 기준으로 조회 | A LEFT OUTER JOIN B | A는 전부, B는 맞는 것만 |
| A.컬럼(+) = B.컬럼 | A 테이블에 없는 값도 B 기준으로 조회 | A RIGHT OUTER JOIN B | B는 전부, A는 맞는 것만 |
JOIN에서 사용되는 ON/USING
| 구분 | 설명 | 사용 조건 | 예시 |
| ON | 조인할 조건을 직접 작성 | 컬럼명이 같아도 되고 달라도 됨 | ON A.부서번호 = B.DEPTNO |
| USING | 이름이 같은 컬럼을 기준으로 조인 | 두 테이블의 조인 컬럼명이 같아야 함 | USING (부서번호) |
USING은 별칭을 사용하지 않는다.
서브쿼리
| 개념 | SQL문 안에 들어가는 또 다른 SELECT문 |
| 단일 행 서브쿼리 | 결과가 1행, =, >, < 등 사용 |
| 다중 행 서브쿼리 | 결과가 여러 행, IN, ANY, ALL, EXISTS 사용 |
| 스칼라 서브쿼리 | SELECT절에서 하나의 값처럼 사용 |
| 인라인 뷰 | FROM절에서 테이블처럼 사용 |
| 가장 중요 | 서브쿼리 결과가 1개인지 여러 개인지에 따라 연산자를 다르게 써야 함 |
| 구분 기준 | 종류 | 의미 | 예시 |
| 행 개수 기준 | 단일 행 서브쿼리 | 결과가 1행만 나오는 서브쿼리 | 평균 급여 1개 |
| 행 개수 기준 | 다중 행 서브쿼리 | 결과가 여러 행 나오는 서브쿼리 | 부서번호 여러 개 |
| 컬럼 개수 기준 | 단일 컬럼 서브쿼리 | 결과 컬럼이 1개인 서브쿼리 | 급여 컬럼만 반환 |
| 컬럼 개수 기준 | 다중 컬럼 서브쿼리 | 결과 컬럼이 여러 개인 서브쿼리 | 부서번호, 직급 반환 |
서브쿼리 연산자
| 연산자 | 설명 | 사용 상황 | 예시 |
| IN | 목록 중 하나와 일치 | 서브쿼리 결과가 여러 개일 때 | WHERE 부서번호 IN (...) |
| ANY | 여러 값 중 하나라도 조건 만족 | 하나 이상 만족하면 참 | WHERE 급여 > ANY (...) |
| ALL | 여러 값 모두 조건 만족 | 전부 만족해야 참 | WHERE 급여 > ALL (...) |
| EXISTS | 서브쿼리 결과 존재 여부 확인 | 결과가 존재하면 참 | WHERE EXISTS (...) |
집합 연산자
| 집합 연산자 | 의미 | 중복 처리 | 사용 예시 |
| UNION | 두 SELECT 결과를 합침 | 중복 제거 | SELECT 컬럼 FROM A UNION SELECT 컬럼 FROM B |
| UNION ALL | 두 SELECT 결과를 모두 합침 | 중복 포함 | SELECT 컬럼 FROM A UNION ALL SELECT 컬럼 FROM B |
| INTERSECT | 두 SELECT 결과의 공통 데이터만 조회 | 중복 제거 | SELECT 컬럼 FROM A INTERSECT SELECT 컬럼 FROM B |
| 차집합 | 앞 SELECT에는 있고 뒤 SELECT에는 없는 데이터 조회 | 중복 제거 | Oracle: MINUS / SQL Server: EXCEPT |
그룹 함수
| 그룹 함수 | 설명 | 사용 예시 | 결과/의미 |
| ROLLUP | 지정한 컬럼 순서대로 소계와 총계를 구함 | GROUP BY ROLLUP(부서, 직급) | 부서+직급별 집계, 부서별 소계, 전체 합계 |
| CUBE | 가능한 모든 조합의 소계와 총계를 구함 | GROUP BY CUBE(부서, 직급) | 부서별, 직급별, 부서+직급별, 전체 합계 |
| GROUPING SETS | 원하는 그룹 조합만 직접 지정해서 집계 | GROUP BY GROUPING SETS((부서), (직급)) | 부서별 집계와 직급별 집계만 조회 |
| GROUPING | 해당 행이 소계/총계 행인지 구분 | GROUPING(부서) | 소계/총계면 1, 일반 행이면 0 |
* ROLLUP은 컬럼 순서가 바뀌면 결과가 달라진다.
GROUPING SETS에서 ()는 전체 총계를 구하라는 의미
윈도우 함수
윈도우 함수는 행을 유지한 상태에서 순위, 누적합, 평균, 이전/다음 값 등을 계산하는 함수.
일반 집계 함수처럼 GROUP BY로 행을 줄이지 않고, 각 행 옆에 계산 결과를 붙이는 방식
- 집계함수
| 구문 | 설명 | 예시 |
| OVER() | 윈도우 함수의 계산 범위를 지정 | SUM(급여) OVER() |
| PARTITION BY | 그룹을 나누는 기준 | PARTITION BY 부서 |
| ORDER BY | 계산 순서를 정하는 기준 | ORDER BY 급여 DESC |
| ROWS / RANGE | 계산할 행의 범위 지정 | ROWS BETWEEN ... |
- 순위함수
| 구문 | 설명 | 예시 |
| OVER() | 윈도우 함수의 계산 범위를 지정 | SUM(급여) OVER() |
| PARTITION BY | 그룹을 나누는 기준 | PARTITION BY 부서 |
| ORDER BY | 계산 순서를 정하는 기준 | ORDER BY 급여 DESC |
| ROWS / RANGE | 계산할 행의 범위 지정 | ROWS BETWEEN ... |
| 함수 | 설명 | 사용 예시 | 결과 특징 |
| RANK() | 같은 순위가 있으면 같은 순위를 부여하고, 다음 순위는 건너뜀 | RANK() OVER(ORDER BY 급여 DESC) | 1, 2, 2, 4 |
| DENSE_RANK() | 같은 순위가 있어도 다음 순위를 건너뛰지 않음 | DENSE_RANK() OVER(ORDER BY 급여 DESC) | 1, 2, 2, 3 |
| ROW_NUMBER() | 같은 값이어도 각 행마다 고유한 번호를 부여 | ROW_NUMBER() OVER(ORDER BY 급여 DESC) | 1, 2, 3, 4 |
* PARTITION BY 부서 → 부서별로 따로 계산해라.
그 외 행 간의 값 참조 함수
| 함수 | 의미 | 사용 예시 | 결과 |
| LAG(컬럼) | 이전 행의 값을 가져옴 | LAG(급여) OVER(ORDER BY 입사일) | 현재 행보다 앞에 있는 급여 |
| LEAD(컬럼) | 다음 행의 값을 가져옴 | LEAD(급여) OVER(ORDER BY 입사일) | 현재 행보다 뒤에 있는 급여 |
윈도우 함수 범위 지정
ROWS BETWEEN [시작범위] AND [끝 범위]
| 구조 | 의미 | 예시 |
| ROWS BETWEEN 시작점 AND 끝점 | 실제 행 개수 기준으로 범위 지정 | 현재 행 기준 앞뒤 몇 행 |
| RANGE BETWEEN 시작점 AND 끝점 | 값의 범위 기준으로 범위 지정 | 같은 정렬값은 같은 범위로 처리 |

TOP N 쿼리
| 구분 | 문법 | 설명 | 사용 예시 |
| SQL Server | TOP(N) | 조회 결과 상위 N개 행만 가져옴 | SELECT TOP(3) * FROM 사원 ORDER BY 급여 DESC; |
| Oracle | ROWNUM | 정렬 후 바깥에서 ROWNUM으로 상위 N개 추출 | SELECT * FROM (SELECT * FROM 사원 ORDER BY 급여 DESC) WHERE ROWNUM <= 3; |
| Oracle 12c+ | FETCH FIRST N ROWS ONLY | 상위 N개 행만 조회 | SELECT * FROM 사원 ORDER BY 급여 DESC FETCH FIRST 3 ROWS ONLY; |
반드시 ORDER BY와 함께 사용
계층형 질의

PIVOT/UNPIVOT 절
| 구분 | 의미 | 사용 상황 | 예시 |
| PIVOT | 행으로 되어 있는 값을 열로 변환 | 과목별 점수를 컬럼으로 보고 싶을 때 | 수학, 영어, 과학을 각각 컬럼으로 변환 |
| UNPIVOT | 열로 되어 있는 값을 행으로 변환 | 여러 컬럼을 하나의 값 컬럼으로 정리할 때 | 수학점수, 영어점수 컬럼을 과목/점수 행으로 변환 |
정규표현식 '%'와 '_'
| 구분 | % | _ |
| 의미 | 0개 이상의 문자 | 정확히 1개의 문자 |
| 글자 수 | 제한 없음 | 한 글자만 |
| 예시 | LIKE 'A%' | LIKE 'A_' |
| 결과 | A, AB, ABC 모두 가능 | AB처럼 A 뒤에 한 글자만 가능 |
트랜잭션의 특징
| 특징 | 영어 | 의미 | 설명 |
| 원자성 | Atomicity | 모두 수행되거나 모두 수행되지 않아야 함 | 중간만 실행되는 상태가 없어야 함 |
| 일관성 | Consistency | 트랜잭션 전후 데이터가 규칙을 만족해야 함 | 데이터 무결성이 유지되어야 함 |
| 고립성 | Isolation | 동시에 실행되는 트랜잭션이 서로 영향을 주면 안 됨 | 다른 트랜잭션의 중간 결과를 보면 안 됨 |
| 지속성 | Durability | 완료된 결과는 영구적으로 저장되어야 함 | COMMIT 후에는 오류가 나도 결과가 유지됨 |
| 격리 수준 | Dirty Read | Non-Repeatable Read | Phantom Read | 특징 |
| READ UNCOMMITTED | 발생 가능 | 발생 가능 | 발생 가능 | 가장 느슨함 |
| READ COMMITTED | 방지 | 발생 가능 | 발생 가능 | COMMIT된 데이터만 읽음 |
| REPEATABLE READ | 방지 | 방지 | 발생 가능 | 같은 행 반복 조회 보장 |
| SERIALIZABLE | 방지 | 방지 | 방지 | 가장 엄격함 |
'부트캠프' 카테고리의 다른 글
| 멋쟁이사자처럼 부트캠프 그로스마케팅 4기_260529_CRM도구(마케팅 자동화) (0) | 2026.05.29 |
|---|---|
| 멋쟁이사자처럼 부트캠프 그로스마케팅 4기_260528_이메일마케팅(프레이머/재피어/Kit) (0) | 2026.05.28 |
| 멋쟁이사자처럼 부트캠프 그로스마케팅 4기_260527_UX설계(솔라피,Kit) (1) | 2026.05.27 |
| 멋쟁이사자처럼 부트캠프 그로스마케팅 4기_260526_Google Ads (0) | 2026.05.26 |
| 멋쟁이사자처럼 부트캠프 그로스마케팅 4기_260522_머신러닝(메타광고) (1) | 2026.05.22 |