이 글에서 꼭 잡아야 할 것
좋은 데이터베이스는 잘못된 데이터를 애초에 받지 않는다. 제약조건은 데이터 무결성을 보장하는 핵심 장치이며, 오라클 SQL 시험에서도 매우 중요한 주제다.
무결성은 SQL 문장 실력 못지않게 중요하다. 테이블 설계 단계에서 제약조건을 적절히 걸어 두면 조회문이 훨씬 안정적으로 동작하고, 잘못된 데이터로 인한 후처리 비용도 크게 줄일 수 있다. 시험에서도 각 제약조건의 역할과 특징을 비교하는 문제가 자주 나온다.
개념 지도와 이해 포인트
대표 문법 패턴
CREATE TABLE departments_demo (
department_id NUMBER CONSTRAINT pk_departments_demo PRIMARY KEY,
department_name VARCHAR2(100) NOT NULL
);
CREATE TABLE employees_demo (
employee_id NUMBER PRIMARY KEY,
department_id NUMBER,
CONSTRAINT fk_emp_dept
FOREIGN KEY (department_id)
REFERENCES departments_demo(department_id)
);
문법 읽는 포인트
- PRIMARY KEY는 유일성과 NOT NULL 성질을 함께 가진다.
- FOREIGN KEY는 참조 테이블과의 관계를 보장한다.
- CHECK는 값 범위를 제한하는 데 유용하다.
핵심 용어
- PRIMARY KEY
- FOREIGN KEY
- NOT NULL
직원-부서 관계를 제약조건으로 묶기
제약조건은 데이터를 넣을 때 귀찮은 규칙처럼 보일 수 있지만, 사실은 시스템 전체의 품질을 지키는 안전장치다. 설계 단계에서 잘 잡아 두면 조회와 분석 단계가 훨씬 편해진다.
ALTER TABLE employees_demo
ADD CONSTRAINT ck_salary_positive
CHECK (salary >= 0);
수험 체크포인트와 자주 하는 실수
시험 체크포인트
- PRIMARY KEY와 UNIQUE 차이는 NULL 허용 여부까지 함께 비교하자.
- FOREIGN KEY는 참조 무결성의 핵심이라는 점을 기억하자.
- CHECK와 NOT NULL은 컬럼 수준 규칙 문제에서 자주 묶여 나온다.
자주 하는 실수
- UNIQUE와 PRIMARY KEY를 완전히 같은 의미로 보는 실수
- 외래키가 항상 부모 삭제를 막는 방식만 있다고 단순화하는 실수
- 제약조건을 단순 문법 암기로만 접근하는 실수
연결 학습
구조와 규칙이 준비되었다면 이제 실제 데이터를 넣고 바꾸는 DML을 다룰 차례다. 다음 챕터에서는 INSERT, UPDATE, DELETE, MERGE를 정리한다.
댓글 0
작성자 이름과 댓글 내용을 입력하면 바로 등록됩니다. 답글은 한 단계까지 지원하고, 댓글은 최대 200자까지 작성할 수 있습니다.
같은 카테고리에서 이어서 읽기
지금 읽은 글과 가까운 흐름의 글 5개를 모아 두었습니다. 바로 앞뒤 문맥을 이어서 읽고 싶을 때 가장 편합니다.
계층형 질의: START WITH, CONNECT BY, LEVEL
오라클은 트리 구조 데이터를 위한 계층형 질의 문법을 제공한다. 조직도, 카테고리 트리, 부모-자식 관계를 SQL 한 문장으로 풀 수 있다는 점이 큰 장점이다.
PIVOT, UNPIVOT, WITH절 활용
데이터 형태를 회전시키거나 중간 결과를 이름 붙여 재사용하면 복잡한 SQL도 훨씬 읽기 쉬워진다. PIVOT, UNPIVOT, WITH절은 보고서형 SQL에서 특히 빛나는 도구다.
DDL 기초: CREATE, ALTER, DROP, TRUNCATE
DDL은 데이터 구조를 정의하고 바꾸는 문법이다. 테이블과 컬럼을 만드는 CREATE, 구조를 바꾸는 ALTER, 제거하는 DROP과 TRUNCATE를 정확히 구분해야 한다.
DML: INSERT, UPDATE, DELETE, MERGE
DML은 실제 데이터를 추가하고 바꾸고 삭제하는 문법이다. 테이블 구조보다 더 자주 다루게 되는 영역이므로 문장별 목적과 영향 범위를 명확히 이해해야 한다.
TCL과 DCL: COMMIT, ROLLBACK, SAVEPOINT, 권한
데이터를 바꾼 뒤에는 그 변경을 확정할지 되돌릴지 결정해야 한다. TCL은 트랜잭션을 제어하고, DCL은 사용자 권한을 관리한다.
댓글을 불러오는 중입니다.