SQLD 시험 합격 전략 요약
2과목 ‘SQL 기본 및 활용’은 전체 배점의 약 80%를 차지하는 핵심 과목입니다. SQL 문법을 정확히 이해하고, Oracle과 SQL Server의 차이점을 구분하는 것이 고득점의 핵심입니다. 특히 DDL의 AUTO COMMIT 여부, CHAR와 VARCHAR의 비교 방식 차이는 매 시험 단골 문제입니다.
1. SQL 개요와 데이터 유형
초압축 암기 요약
SQL 문장 종류:
DML(SELECT, INSERT, UPDATE, DELETE),
DDL(CREATE, ALTER, DROP, RENAME),
DCL(GRANT, REVOKE),
TCL(COMMIT, ROLLBACK).
CHAR는 고정 길이(‘AA’=’AA ‘), VARCHAR는 가변 길이(‘AA’≠’AA ‘).
테이블명·칼럼명은 반드시 문자로 시작하며, A-Z, a-z, 0-9, _, $, # 만 사용 가능합니다.
초보자 이해용 상세 설명
정의: SQL(Structured Query Language)은 관계형 데이터베이스에서 데이터를 정의, 조작, 제어하기 위해 사용하는 표준 언어입니다.
데이터 유형:
| 유형 | 설명 | 특징 |
|---|---|---|
| CHAR(s) | 고정 길이 문자열 | ‘AA’ = ‘AA ‘ (공백 채움 비교) |
| VARCHAR(s) | 가변 길이 문자열 | ‘AA’ ≠ ‘AA ‘ (공백도 문자로 취급) |
| NUMERIC | 정수, 실수 등 숫자 | 정수와 소수점 표현 |
| DATE | 날짜와 시각 | 별도 크기 지정 불필요 |
제약조건 5가지:
- PRIMARY KEY: 기본키 정의 (유일성 + NOT NULL)
- UNIQUE KEY: 고유키 정의 (유일성, NULL 허용)
- NOT NULL: NULL 값 입력 금지
- CHECK: 입력 값의 범위 제한
- FOREIGN KEY: 외래키 정의
시험 출제 포인트: CHAR와 VARCHAR의 비교 방식 차이는 거의 매번 출제됩니다. CHAR는 공백을 채워서 비교하므로 ‘AA’와 ‘AA ‘가 같고, VARCHAR는 공백도 문자로 취급하여 다릅니다.
2. DDL (데이터 정의어)
초압축 암기 요약
DDL은 실행 시 AUTO COMMIT됩니다.
주요 명령: CREATE TABLE, ALTER TABLE(ADD/DROP COLUMN/MODIFY/RENAME COLUMN), DROP TABLE, TRUNCATE TABLE.
TRUNCATE는 행을 제거하고 저장공간을 재사용합니다.
Oracle과 SQL Server의 문법 차이를 구분해야 합니다.
초보자 이해용 상세 설명
CREATE TABLE 규칙:
- 테이블명은 다른 테이블과 중복 불가
- 칼럼명은 테이블 내에서 중복 불가
- 각 칼럼은 콤마(,)로 구분, 세미콜론(;)으로 종료
- 칼럼 뒤에 데이터 유형은 반드시 지정
- 테이블명과 칼럼명은 반드시 문자로 시작
ALTER TABLE 주요 문법:
| 작업 | Oracle | SQL Server |
|---|---|---|
| 칼럼 추가 | ADD 칼럼명 데이터유형 | |
| 칼럼 삭제 | DROP COLUMN 칼럼명 | |
| 칼럼 변경 | MODIFY (칼럼명 데이터유형) | ALTER (칼럼명 데이터유형) |
| 칼럼명 변경 | RENAME COLUMN A TO B | sp_rename A, B, ‘COLUMN’ |
| 테이블명 변경 | RENAME A TO B | sp_rename ‘dbo.A’,’B’ |
DROP TABLE vs TRUNCATE TABLE:
- DROP TABLE: 테이블 자체를 삭제합니다. CASCADE CONSTRAINT 옵션으로 참조 제약조건도 함께 삭제할 수 있습니다.
- TRUNCATE TABLE: 테이블 구조는 유지하면서 모든 행을 제거하고 저장공간을 재사용합니다. DDL이므로 AUTO COMMIT되어 ROLLBACK이 불가능합니다.
시험 출제 포인트: DDL은 AUTO COMMIT이므로 ROLLBACK이 불가능하다는 점, TRUNCATE와 DELETE의 차이(TRUNCATE는 DDL, DELETE는 DML)가 핵심입니다.
3. DML (데이터 조작어)
초압축 암기 요약
DML은 COMMIT을 입력해야 반영됩니다(단, SQL Server는 AUTO COMMIT).
INSERT INTO 테이블 VALUES;
UPDATE 테이블 SET;
DELETE FROM 테이블;
SELECT DISTINCT는 중복 제거.
와일드카드: *(모든), %(모든), _(한 글자).
합성연산자: ||(Oracle), +(SQL Server).
초보자 이해용 상세 설명
DML 기본 문법:
- INSERT: INSERT INTO PLAYER (PLAYER) VALUES (‘PJS’);
- UPDATE: UPDATE PLAYER SET BACK_NO = 60;
- DELETE: DELETE FROM PLAYER;
- SELECT: SELECT PLAYER_ID FROM PLAYER;
SELECT 주요 기능:
- DISTINCT: 중복을 제거하여 구분값만 출력합니다. (예: GK, FW, DF, MF)
- ALIAS: SELECT PLAYER AS “선수명”처럼 별명을 부여할 수 있습니다.
- 합성 연산자: Oracle에서는 ||, SQL Server에서는 +를 사용하여 문자를 연결합니다.
DDL과 DML의 COMMIT 차이: DDL(CREATE, ALTER, DROP, TRUNCATE)은 실행 즉시 AUTO COMMIT됩니다. 반면 DML(INSERT, UPDATE, DELETE)은 Oracle에서 별도로 COMMIT을 입력해야 반영됩니다. SQL Server에서는 DML도 AUTO COMMIT됩니다.
시험 출제 포인트: DDL과 DML의 COMMIT 차이, Oracle과 SQL Server의 AUTO COMMIT 차이가 자주 출제됩니다.
4. TCL (트랜잭션 제어어)
초압축 암기 요약
트랜잭션 특성 4가지: 원자성(All or Nothing), 일관성(정합성 유지), 고립성(다른 트랜잭션 간섭 없음), 지속성(영구 저장).
SAVEPOINT로 저장지점을 만들고 ROLLBACK TO로 해당 지점까지 복구 가능합니다.
Oracle은 SAVEPOINT/ROLLBACK TO, SQL Server는 SAVE TRAN/ROLLBACK TRAN입니다.
초보자 이해용 상세 설명
정의: 트랜잭션은 밀접히 관련되어 분리될 수 없는 1개 이상의 DB 조작을 의미합니다. 은행 이체를 예로 들면, A계좌에서 돈을 빼는 것과 B계좌에 넣는 것은 반드시 함께 성공하거나 함께 실패해야 합니다.
트랜잭션의 4가지 특성(ACID):
| 특성 | 설명 | 쉬운 표현 |
|---|---|---|
| 원자성(Atomicity) | 모두 성공하거나 전혀 실행되지 않아야 함 | All or Nothing |
| 일관성(Consistency) | 실행 전후 DB 내용이 정합성 유지 | 전후 모두 올바른 상태 |
| 고립성(Isolation) | 다른 트랜잭션의 영향을 받지 않음 | 서로 간섭하지 않음 |
| 지속성(Durability) | 성공 시 결과가 영구 저장 | 한번 저장되면 영구 보존 |
SAVEPOINT 활용:
- Oracle: SAVEPOINT SVPT1; → ROLLBACK TO SVPT1;
- SQL Server: SAVE TRAN SVPT1; → ROLLBACK TRAN SVPT1;
시험 출제 포인트: ACID 4가지 특성의 정의를 정확히 구분하는 문제와, SAVEPOINT의 Oracle/SQL Server 문법 차이가 출제됩니다.
시험 핵심 포인트 정리
- CHAR = 고정 길이(공백 무시 비교), VARCHAR = 가변 길이(공백도 문자)
- DDL = AUTO COMMIT, DML = 수동 COMMIT (SQL Server는 DML도 AUTO)
- TRUNCATE = DDL(ROLLBACK 불가), DELETE = DML(ROLLBACK 가능)
- 트랜잭션 ACID: 원자성, 일관성, 고립성, 지속성
- Oracle 칼럼 변경 = MODIFY, SQL Server = ALTER
- 합성 연산자: Oracle = ||, SQL Server = +
- SAVEPOINT: Oracle = SAVEPOINT/ROLLBACK TO, SQL Server = SAVE TRAN/ROLLBACK TRAN
기본 확인문제
문제 1. CHAR(10)에 ‘ABC’를 저장했을 때, CHAR(10)에 ‘ABC ‘를 저장한 값과 비교하면 결과는?
① 같다(TRUE) ② 다르다(FALSE) ③ NULL ④ 에러 발생
문제 2. 다음 중 DDL에 해당하지 않는 것은?
① CREATE ② ALTER ③ UPDATE ④ DROP
문제 3. 트랜잭션의 특성 중 “모두 성공하거나 전혀 실행되지 않아야 한다”는 것은?
① 일관성 ② 원자성 ③ 고립성 ④ 지속성
문제 4. TRUNCATE TABLE에 대한 설명으로 올바른 것은?
① DML이므로 ROLLBACK 가능하다
② 테이블 구조까지 삭제한다
③ DDL이므로 AUTO COMMIT되어 ROLLBACK 불가하다
④ WHERE 조건을 사용할 수 있다
문제 5. Oracle에서 문자열을 연결하는 합성 연산자는?
① + ② & ③ || ④ CONCAT만 가능
기본문제 해설
1. 정답: ① — CHAR 타입은 고정 길이 문자열로, 비교 시 짧은 쪽에 공백을 채워서 비교합니다. 따라서 ‘ABC’와 ‘ABC ‘는 같다고 판단합니다.
2. 정답: ③ — UPDATE는 DML(데이터 조작어)입니다. DDL은 CREATE, ALTER, DROP, RENAME, TRUNCATE 등이 해당합니다.
3. 정답: ② — 원자성(Atomicity)은 트랜잭션의 연산이 모두 성공적으로 실행되거나 전혀 실행되지 않아야 한다는 All or Nothing 원칙입니다.
4. 정답: ③ — TRUNCATE TABLE은 DDL이므로 실행 즉시 AUTO COMMIT됩니다. ROLLBACK이 불가능하며, 테이블 구조는 유지하면서 모든 행만 제거합니다.
5. 정답: ③ — Oracle에서 문자열 연결은 ||(이중 파이프)를 사용합니다. SQL Server에서는 +를 사용합니다.
고난도 확인문제
문제 1. 다음 SQL 실행 후 ROLLBACK을 수행하면 테이블 상태는 어떻게 되는가?
CREATE TABLE TEST (ID NUMBER); INSERT INTO TEST VALUES (1); INSERT INTO TEST VALUES (2); ROLLBACK;
① TEST 테이블이 삭제되고 데이터도 없다
② TEST 테이블이 존재하고 데이터는 1, 2 모두 있다
③ TEST 테이블이 존재하고 데이터는 없다
④ 에러가 발생한다
문제 2. Oracle에서 다음 SQL의 실행 결과로 올바른 것은?
SELECT PLAYER_NAME || '선수' AS "정보" FROM PLAYER;
① PLAYER_NAME과 ‘선수’가 별도 칼럼으로 출력된다
② PLAYER_NAME 뒤에 ‘선수’가 붙은 값이 “정보” 칼럼으로 출력된다
③ 문법 에러가 발생한다
④ NULL이 출력된다
문제 3. SQL Server에서 DML 실행 후 별도의 COMMIT 없이도 데이터가 반영되는 이유는?
① DDL이기 때문에
② AUTO COMMIT이 기본 설정이기 때문에
③ SAVEPOINT가 자동 생성되기 때문에
④ 트랜잭션이 존재하지 않기 때문에
고난도 해설
1. 정답: ③
CREATE TABLE은 DDL이므로 실행 시 AUTO COMMIT됩니다. 따라서 테이블 생성은 확정됩니다. 이후 INSERT 두 건은 DML이므로 COMMIT 전까지는 임시 상태입니다. ROLLBACK을 수행하면 INSERT 두 건만 취소되고, CREATE TABLE로 만들어진 테이블은 그대로 남습니다. 결과적으로 TEST 테이블은 존재하지만 데이터는 없는 상태가 됩니다.
2. 정답: ②
||는 Oracle의 문자열 연결(합성) 연산자입니다. PLAYER_NAME의 값 뒤에 ‘선수’라는 문자열이 붙어서 하나의 값으로 출력되며, AS “정보”로 칼럼 별명이 지정됩니다. 예를 들어 PLAYER_NAME이 ‘홍길동’이면 ‘홍길동선수’가 “정보” 칼럼에 출력됩니다.
3. 정답: ②
SQL Server는 DML에 대해서도 AUTO COMMIT이 기본 설정입니다. Oracle에서는 DML 실행 후 별도로 COMMIT을 입력해야 데이터가 확정되지만, SQL Server에서는 자동으로 커밋됩니다. 이 차이는 SQLD 시험에서 매우 자주 출제되는 포인트입니다.
다음 편 예고
다음 4편에서는 ‘SQL 기본 – WHERE절, 함수, 집계, ORDER BY’를 다룹니다. 연산자 사용법, 문자형·숫자형·날짜형 함수, NULL 관련 함수, GROUP BY/HAVING, 그리고 ORDER BY의 정렬 규칙까지 실전 SQL 문법을 완벽 정리합니다.
