관계형 데이터베이스에서는 SQL을 사용하여 데이터를 조회하고 변경할 뿐만 아니라 테이블과 뷰를 정의하고, 사용자 권한과 트랜잭션을 제어합니다. 같은 SQL 명령이라도 수행하는 역할에 따라 데이터 정의어, 데이터 조작어, 데이터 제어어 등으로 구분할 수 있습니다.
이 장에서는 SQL DDL DCL의 역할을 구분하고, DDL의 CREATE·ALTER·DROP과 주요 제약조건을 살펴봅니다. 이어서 COMMIT·ROLLBACK·GRANT·REVOKE의 기능, 뷰의 생성과 변경·삭제, 시스템 카탈로그에 저장되는 메타데이터를 정리합니다.
이 장의 핵심 내용
- SQL은 관계형 데이터베이스를 정의·조회·변경·제어하는 표준 질의 언어입니다.
- DDL은 스키마·테이블·뷰 등 데이터베이스 객체의 구조를 정의합니다.
- CREATE는 객체 생성, ALTER는 객체 구조 변경, DROP은 객체 삭제에 사용합니다.
- CREATE TABLE에서는 NOT NULL, DEFAULT, PRIMARY KEY, UNIQUE, FOREIGN KEY와 CHECK 등의 제약조건을 지정할 수 있습니다.
- CASCADE는 종속 객체까지 처리하고, RESTRICT는 종속 객체가 있으면 삭제를 거부합니다.
- COMMIT은 트랜잭션을 확정하고, ROLLBACK은 아직 확정하지 않은 변경을 취소합니다.
- GRANT는 권한을 부여하고, REVOKE는 이전에 부여한 권한을 회수합니다.
- 뷰는 기본 테이블의 질의를 바탕으로 정의되는 가상 테이블입니다.
- 시스템 카탈로그는 테이블·열·제약조건·인덱스·권한 등 데이터베이스 객체의 메타데이터를 저장합니다.
SQL은 어떤 언어인가?
SQL(Structured Query Language)은 관계형 데이터베이스에서 데이터를 정의하고 조회·삽입·수정·삭제하며, 권한과 트랜잭션을 제어하는 데 사용하는 언어입니다.
시험 교재에서는 SQL을 DDL, DML, DCL로 구분하는 경우가 많습니다. 다만 데이터베이스 이론서나 DBMS 문서에서는 COMMIT과 ROLLBACK을 별도의 트랜잭션 제어어인 TCL로 분류하기도 합니다.
| 구분 | 영문 | 주요 역할 | 대표 명령 |
|---|---|---|---|
| DDL | Data Definition Language | 데이터베이스 객체의 구조 정의 | CREATE, ALTER, DROP |
| DML | Data Manipulation Language | 데이터의 조회와 변경 | SELECT, INSERT, UPDATE, DELETE |
| DCL | Data Control Language | 사용자 권한과 데이터 접근 제어 | GRANT, REVOKE |
| TCL | Transaction Control Language | 트랜잭션의 확정과 취소 | COMMIT, ROLLBACK |
분류 기준 주의: 이 글에서는 교재의 출제 범위를 따라 COMMIT·ROLLBACK·GRANT·REVOKE를 함께 다루지만, 엄밀한 기능 구분에서는 GRANT·REVOKE가 권한 제어이고 COMMIT·ROLLBACK은 트랜잭션 제어입니다.
DDL은 무엇을 정의하는가?
DDL(Data Definition Language)은 데이터베이스의 논리적 구조와 물리적 구조를 정의하거나 변경·삭제하는 언어입니다. 스키마, 도메인, 테이블, 뷰, 인덱스와 제약조건 등의 데이터베이스 객체를 대상으로 합니다.
- 데이터베이스 객체의 이름과 구조를 정의합니다.
- 열의 이름, 데이터형과 기본값을 지정합니다.
- 기본키·외래키·고유성·검사 조건 등 무결성 제약조건을 정의합니다.
- DDL로 정의한 객체 정보는 시스템 카탈로그 또는 데이터 사전에 기록됩니다.
| 명령 | 기능 | 대표 대상 |
|---|---|---|
| CREATE | 새 데이터베이스 객체를 생성 | 스키마, 도메인, 테이블, 뷰, 인덱스 |
| ALTER | 기존 객체의 구조나 속성을 변경 | 열 추가·변경·삭제, 제약조건 변경 |
| DROP | 기존 데이터베이스 객체를 삭제 | 스키마, 도메인, 테이블, 뷰, 인덱스 |
CREATE TABLE은 테이블을 어떻게 생성하는가?
CREATE TABLE은 새로운 테이블을 생성하고 각 열의 이름, 데이터형, 기본값과 제약조건을 정의하는 명령입니다.
CREATE TABLE 학생 (
학번 VARCHAR(10) PRIMARY KEY,
이름 VARCHAR(30) NOT NULL,
학과코드 CHAR(3),
성별 VARCHAR(10) DEFAULT '미정',
이메일 VARCHAR(100) UNIQUE,
졸업연도 INTEGER CHECK (졸업연도 >= 2020),
FOREIGN KEY (학과코드)
REFERENCES 학과(학과코드)
ON UPDATE CASCADE
ON DELETE SET NULL
);
위 예제에서는 학번을 기본키로 지정하고, 이름에는 NULL을 허용하지 않습니다. 성별의 기본값은 ‘미정’이며 이메일에는 중복값을 허용하지 않습니다. 학과코드는 학과 테이블의 학과코드를 참조하는 외래키입니다.
| 제약조건 | 기능 | 핵심 의미 |
|---|---|---|
| NOT NULL | NULL 값 입력 금지 | 반드시 값이 있어야 함 |
| DEFAULT | 값을 생략했을 때 기본값 사용 | 초기값 자동 지정 |
| PRIMARY KEY | 튜플을 고유하게 식별 | 중복과 NULL을 허용하지 않음 |
| UNIQUE | 열 또는 열 조합의 중복값을 제한하며, NULL의 중복 허용 방식은 DBMS와 설정에 따라 달라질 수 있음 | 후보키 성격의 고유성 보장 |
| FOREIGN KEY | 다른 테이블의 키 참조 | 참조 무결성 유지 |
| CHECK | 입력값이 조건을 만족하는지 검사 | 도메인과 업무 규칙 제한 |
열 수준 제약조건
특정 열을 정의하는 위치에 바로 작성합니다.
학번 VARCHAR(10) PRIMARY KEY
테이블 수준 제약조건
열 정의가 끝난 뒤 별도로 작성하며 여러 열을 함께 지정할 수 있습니다.
PRIMARY KEY (학번, 과목코드)
문법 차이: 데이터형 이름, 자동 증가 열, 외래키의 참조 동작과 제약조건 문법은 DBMS마다 일부 차이가 있습니다. 실제 환경에서는 사용하는 DBMS의 문법을 확인해야 합니다.
ALTER TABLE은 테이블 구조를 어떻게 변경하는가?
ALTER TABLE은 이미 존재하는 테이블의 구조를 변경하는 명령입니다. 새로운 열을 추가하거나 기존 열의 속성을 변경하고, 필요하지 않은 열이나 제약조건을 제거할 수 있습니다.
| 구문 | 기능 | 대표 용도 |
|---|---|---|
| ADD | 새로운 열이나 제약조건 추가 | 성별 열 추가, 외래키 추가 |
| ALTER | 기존 열의 기본값·데이터형 등 변경 | 기본값 설정, 데이터형 변경 |
| DROP | 기존 열이나 제약조건 제거 | 불필요한 열 삭제 |
열을 추가하는 예
ALTER TABLE 학생
ADD COLUMN 성별 VARCHAR(10) DEFAULT '미정';
열의 기본값을 변경하는 예
ALTER TABLE 학생
ALTER COLUMN 성별 SET DEFAULT '미입력';
열을 삭제하는 예
ALTER TABLE 학생
DROP COLUMN 성별 CASCADE;
DBMS별 차이: 일부 DBMS는 ADD COLUMN 대신 ADD를 사용하고, 데이터형 변경에 MODIFY 또는 ALTER COLUMN TYPE을 사용합니다. 시험에서는 문제에 제시된 문법과 교재의 기준을 우선 확인합니다.
DROP은 CASCADE와 RESTRICT를 어떻게 구분하는가?
DROP은 테이블·뷰·스키마·도메인·인덱스 등의 데이터베이스 객체를 삭제합니다. 테이블의 행만 제거하는 DELETE와 달리 DROP TABLE은 테이블 구조 자체를 삭제합니다.
DROP TABLE 학생 RESTRICT;
DROP TABLE 학생 CASCADE;
DROP VIEW 전자과_학생 CASCADE;
DROP SCHEMA 학사관리 CASCADE;
| 옵션 | 종속 객체가 없는 경우 | 종속 객체가 있는 경우 |
|---|---|---|
| RESTRICT | 대상 객체를 삭제 | 삭제를 거부하고 오류 발생 |
| CASCADE | 대상 객체를 삭제 | 종속 객체 또는 종속 관계까지 함께 처리 |
CASCADE 주의: CASCADE가 항상 다른 테이블 전체를 삭제하는 것은 아닙니다. 예를 들어 외래키가 다른 테이블을 참조하는 경우에는 참조 테이블 자체가 아니라 외래키 제약조건만 제거될 수 있습니다. 구체적인 동작은 객체의 종속 관계와 DBMS에 따라 달라집니다.
COMMIT과 ROLLBACK은 트랜잭션을 어떻게 제어하는가?
트랜잭션은 데이터베이스에서 하나의 논리적인 작업 단위로 처리되는 명령들의 집합입니다. COMMIT은 트랜잭션의 변경 내용을 확정하고, ROLLBACK은 아직 확정하지 않은 변경 내용을 취소합니다.
| 명령 | 기능 | 실행 결과 |
|---|---|---|
| COMMIT | 현재 트랜잭션을 성공적으로 종료 | 변경 내용이 확정되어 다른 트랜잭션에 공개되고 지속성이 보장됨 |
| ROLLBACK | 현재 트랜잭션을 취소 | 해당 트랜잭션에서 수행한 미확정 변경을 폐기함 |
COMMIT
BEGIN;
UPDATE 학생
SET 졸업연도 = 2027
WHERE 학번 = 'S001';
COMMIT;
변경한 졸업연도를 확정합니다.
ROLLBACK
BEGIN;
UPDATE 학생
SET 졸업연도 = 2027
WHERE 학번 = 'S001';
ROLLBACK;
변경한 졸업연도를 취소합니다.
ROLLBACK 범위: 일반적인 ROLLBACK은 현재 트랜잭션에서 아직 COMMIT하지 않은 변경을 취소합니다. 이미 COMMIT하여 확정된 변경은 단순한 ROLLBACK으로 되돌릴 수 없습니다.
GRANT와 REVOKE는 사용자 권한을 어떻게 제어하는가?
GRANT는 사용자나 역할에 데이터베이스 객체의 사용 권한을 부여하고, REVOKE는 이전에 부여한 권한을 회수합니다.
GRANT SELECT, INSERT
ON 학생
TO 홍길동;
REVOKE INSERT
ON 학생
FROM 홍길동;
| 명령 | 기능 | 예시 |
|---|---|---|
| GRANT | 객체 권한 또는 역할의 구성원 자격 부여 | 학생 테이블의 SELECT 권한 부여 |
| REVOKE | 이전에 부여된 권한 또는 역할 회수 | 학생 테이블의 INSERT 권한 회수 |
- SELECT 권한은 데이터를 조회할 수 있게 합니다.
- INSERT 권한은 새로운 튜플을 삽입할 수 있게 합니다.
- UPDATE 권한은 기존 데이터를 수정할 수 있게 합니다.
- DELETE 권한은 기존 튜플을 삭제할 수 있게 합니다.
- 권한의 종류와 적용 가능한 객체는 DBMS마다 차이가 있을 수 있습니다.
뷰는 어떤 가상 테이블인가?
뷰(View)는 하나 이상의 기본 테이블이나 다른 뷰에 대한 질의를 바탕으로 정의되는 가상 테이블입니다. 일반적인 뷰는 결과 데이터를 별도의 저장 공간에 물리적으로 보관하지 않고, 사용자가 뷰를 조회할 때 정의된 질의를 실행합니다.
사용자에게 기본 테이블 전체를 공개하지 않고 필요한 행과 열만 보여 줄 수 있으며, 복잡한 질의를 하나의 논리적인 테이블처럼 사용할 수 있습니다.
기본 테이블
- 학번
- 이름
- 학과
- 주민등록번호
- 졸업연도
공개용 뷰
- 학번
- 이름
- 학과
- 졸업연도
민감한 주민등록번호는 제외합니다.
일반 뷰와 물리적 저장: 일반 뷰는 질의 정의를 저장하지만 결과 데이터 자체는 보통 물리적으로 저장하지 않습니다. 결과를 실제로 저장하는 구체화 뷰 또는 물질화 뷰는 일반 뷰와 구분해야 합니다.
CREATE VIEW는 뷰를 어떻게 정의하는가?
CREATE VIEW는 SELECT 질의를 이용하여 새로운 뷰를 정의합니다. 다음 예제는 학생 테이블에서 전자과 학생의 학번·이름·졸업연도만 보여 주는 뷰를 생성합니다.
CREATE VIEW 전자과_학생 AS
SELECT 학번, 이름, 졸업연도
FROM 학생
WHERE 학과 = '전자과';
| 학번 | 이름 | 졸업연도 |
|---|---|---|
| c101 | 김희영 | 2026 |
| c103 | 두옥이 | 2027 |
생성한 뷰는 일반 테이블처럼 SELECT문의 FROM 절에서 사용할 수 있습니다.
SELECT 학번, 이름
FROM 전자과_학생
WHERE 졸업연도 = 2027;
뷰의 장점과 한계는 무엇인가?
뷰의 장점
- 필요한 행과 열만 공개하여 접근을 제한할 수 있습니다.
- 복잡한 질의를 단순한 테이블처럼 사용할 수 있습니다.
- 사용자별로 서로 다른 데이터 표현을 제공할 수 있습니다.
- 기본 테이블의 일부 변경을 사용자 질의에서 감출 수 있습니다.
- 뷰를 바탕으로 다른 뷰를 정의할 수 있습니다.
뷰의 한계
- 복잡한 뷰는 삽입·수정·삭제가 제한될 수 있습니다.
- 기본 테이블이나 다른 뷰에 대한 종속성이 발생합니다.
- 일반 뷰는 결과를 저장하지 않으므로 조회 성능을 자동으로 높이지 않습니다.
- DBMS마다 변경·갱신 가능 조건과 지원 문법이 다릅니다.
- 종속 객체의 변경과 삭제를 함께 관리해야 합니다.
뷰의 정의 변경과 삭제는 어떻게 수행하는가?
뷰를 변경하는 방법은 DBMS마다 다릅니다. 일부 교재에서는 뷰 정의를 변경할 수 없으므로 DROP VIEW로 삭제한 뒤 다시 생성한다고 설명합니다. 그러나 현대 DBMS에서는 CREATE OR REPLACE VIEW 또는 ALTER VIEW를 지원하는 경우가 있습니다.
뷰의 질의 정의를 교체하는 예
CREATE OR REPLACE VIEW 전자과_학생 AS
SELECT 학번, 이름, 졸업연도
FROM 학생
WHERE 학과 = '전자과'
AND 졸업연도 >= 2027;
뷰의 이름을 변경하는 예
ALTER VIEW 전자과_학생
RENAME TO 전자과_졸업예정자;
뷰를 삭제하는 예
DROP VIEW 전자과_졸업예정자 RESTRICT;
DROP VIEW 전자과_졸업예정자 CASCADE;
| 명령 | 주요 역할 | 주의점 |
|---|---|---|
| CREATE OR REPLACE VIEW | 기존 뷰의 정의 질의를 교체 | 허용되는 열 구조 변경 범위는 DBMS마다 다름 |
| ALTER VIEW | 뷰 이름·소유자·옵션 등 변경 | 정의 질의를 직접 변경하는지는 DBMS마다 다름 |
| DROP VIEW | 뷰 삭제 | 종속 뷰가 있으면 CASCADE 또는 RESTRICT 동작 확인 |
교재 표현 보완: 뷰의 정의 변경에 ALTER VIEW를 사용할 수 없다는 설명을 모든 DBMS에 일반화하면 안 됩니다. PostgreSQL에서는 ALTER VIEW로 보조 속성을 변경하고, 정의 질의를 바꿀 때는 CREATE OR REPLACE VIEW를 사용합니다. 다른 DBMS의 ALTER VIEW 기능은 서로 다를 수 있습니다.
기본 테이블이나 종속 뷰를 삭제하면 어떻게 되는가?
뷰는 기본 테이블이나 다른 뷰에 의존하므로 관련 객체를 삭제할 때 종속 관계를 확인해야 합니다. 기본 테이블을 삭제한다고 해서 항상 뷰가 자동으로 삭제되는 것은 아닙니다.
| 상황 | RESTRICT 또는 기본 동작 | CASCADE 사용 |
|---|---|---|
| 뷰가 참조하는 기본 테이블 삭제 | 종속 뷰가 있으면 테이블 삭제를 거부할 수 있음 | 종속 뷰까지 함께 제거할 수 있음 |
| 다른 뷰가 참조하는 뷰 삭제 | 종속 뷰가 있으면 삭제를 거부할 수 있음 | 해당 뷰를 바탕으로 만든 뷰까지 함께 제거할 수 있음 |
뷰에서 삽입·수정·삭제가 가능한가?
뷰에 대한 INSERT·UPDATE·DELETE 가능 여부는 뷰의 정의와 DBMS의 기능에 따라 달라집니다. 단일 기본 테이블의 열을 단순히 선택한 뷰는 갱신할 수 있는 경우가 많지만, 집계나 그룹화가 포함된 복잡한 뷰는 일반적으로 갱신이 제한됩니다.
| 뷰의 형태 | 갱신 가능성 | 대표 원인 |
|---|---|---|
| 단일 테이블의 단순 뷰 | 갱신 가능한 경우가 많음 | 뷰의 행을 기본 테이블의 한 행에 대응시키기 쉬움 |
| 여러 테이블을 결합한 뷰 | 제한될 수 있음 | 변경할 기본 테이블과 행을 결정하기 어려움 |
| GROUP BY·집계 함수 포함 | 대체로 읽기 전용 | 결과 행이 여러 기본 행을 집계하여 만들어짐 |
| DISTINCT·집합 연산 포함 | 대체로 제한됨 | 결과 행과 기본 행의 일대일 대응이 어려움 |
시험과 실제 DBMS: 시험에서는 복잡한 뷰의 삽입·수정·삭제가 제한된다는 원칙을 우선 기억합니다. 실제 DBMS에서는 자동 갱신 가능 뷰, 트리거와 규칙 등의 기능에 따라 동작이 달라질 수 있습니다.
시스템 카탈로그는 어떤 정보를 저장하는가?
시스템 카탈로그(System Catalog)는 DBMS가 데이터베이스 객체와 운영 상태에 관한 정보를 저장하고 관리하는 시스템 데이터베이스 또는 시스템 테이블의 집합입니다.
시스템 카탈로그에 저장된 정보는 실제 업무 데이터가 아니라 데이터를 설명하는 데이터이므로 메타데이터라고 합니다. 데이터 사전(Data Dictionary)이라는 표현도 함께 사용됩니다.
| 정보 유형 | 저장되는 대표 내용 |
|---|---|
| 테이블 정보 | 테이블명, 소유자, 스키마, 저장 구조 |
| 열 정보 | 열 이름, 순서, 데이터형, 기본값, NULL 허용 여부 |
| 제약조건 정보 | 기본키, 외래키, UNIQUE, CHECK 제약조건 |
| 뷰 정보 | 뷰 이름, 소유자, 정의 질의, 종속 관계 |
| 인덱스 정보 | 인덱스명, 대상 테이블과 열, 인덱스 구조 |
| 사용자·권한 정보 | 사용자와 역할, 객체별 접근 권한 |
| 통계 정보 | 질의 최적화에 사용하는 테이블·열의 통계 |
- 시스템 카탈로그 자체도 테이블이나 뷰 형태로 구성될 수 있습니다.
- SQL을 이용하여 허용된 시스템 카탈로그 정보를 조회할 수 있습니다.
- 사용자가 시스템 카탈로그를 직접 수정하기보다 DBMS가 DDL 실행 결과에 따라 자동으로 갱신합니다.
- 사용자에게 공개되는 카탈로그의 범위는 권한과 DBMS에 따라 달라질 수 있습니다.
시스템 카탈로그
각 DBMS가 내부적으로 관리하는 객체 정보입니다. 이름과 구조가 DBMS마다 다를 수 있습니다.
예: PostgreSQL의 pg_catalog
정보 스키마
SQL 표준에 따라 메타데이터를 조회하도록 마련된 뷰의 집합입니다.
예: information_schema.tables
직접 갱신 주의: 시스템 카탈로그는 DBMS의 정상 동작에 필요한 핵심 정보입니다. 일반 사용자가 직접 값을 수정하는 것이 아니라 CREATE·ALTER·DROP·GRANT 등의 명령을 실행하면 DBMS가 관련 메타데이터를 자동으로 갱신합니다.
시험에서 자주 혼동되는 개념
DDL과 DML
DDL은 테이블과 뷰 등의 구조를 정의하고, DML은 테이블에 저장된 실제 데이터를 조회하거나 변경합니다.
DCL과 TCL
GRANT·REVOKE는 권한 제어에 사용하고, COMMIT·ROLLBACK은 트랜잭션의 확정과 취소에 사용합니다.
DROP과 DELETE
DROP은 테이블 구조 자체를 삭제하고, DELETE는 테이블 구조를 유지한 채 조건에 맞는 튜플을 삭제합니다.
CASCADE와 RESTRICT
CASCADE는 종속 객체나 관계까지 처리하고, RESTRICT는 종속 객체가 있으면 대상 객체의 삭제를 거부합니다.
뷰와 기본 테이블
기본 테이블은 실제 데이터를 저장하고, 일반 뷰는 기본 테이블에 대한 질의 정의를 저장하는 가상 테이블입니다.
시스템 카탈로그와 사용자 테이블
시스템 카탈로그는 데이터베이스 객체에 관한 메타데이터를 저장하고, 사용자 테이블은 실제 업무 데이터를 저장합니다.
이번 장 핵심 요약
- SQL은 관계형 데이터베이스를 정의·조회·변경·제어하는 언어입니다.
- DDL의 대표 명령은 CREATE·ALTER·DROP입니다.
- CREATE TABLE에서는 열의 데이터형과 무결성 제약조건을 정의합니다.
- ALTER TABLE은 열과 제약조건의 추가·변경·삭제에 사용합니다.
- DROP은 데이터베이스 객체의 구조 자체를 삭제합니다.
- CASCADE는 종속 객체까지 처리하고 RESTRICT는 종속 객체가 있으면 삭제를 제한합니다.
- COMMIT은 트랜잭션의 변경을 확정하고 ROLLBACK은 미확정 변경을 취소합니다.
- GRANT는 권한을 부여하고 REVOKE는 권한을 회수합니다.
- 뷰는 기본 테이블이나 다른 뷰의 질의를 바탕으로 정의되는 가상 테이블입니다.
- 일반 뷰는 결과 데이터를 별도로 물리적으로 저장하지 않습니다.
- 단순 뷰는 갱신 가능한 경우가 있지만 복잡한 뷰는 갱신이 제한될 수 있습니다.
- 뷰의 변경과 종속 객체 처리 방식은 DBMS에 따라 차이가 있습니다.
- 시스템 카탈로그는 데이터베이스 객체에 관한 메타데이터를 저장합니다.
- 시스템 카탈로그는 DDL과 권한 명령의 실행 결과에 따라 DBMS가 자동으로 갱신합니다.
복습 문제
스키마·테이블·뷰와 같은 데이터베이스 객체의 구조를 정의하는 언어는?
DDL입니다.
새로운 테이블을 생성하는 SQL 명령은?
CREATE TABLE입니다.
학생 테이블에 성별 열을 추가할 때 사용하는 명령은?
ALTER TABLE의 ADD 또는 ADD COLUMN 구문을 사용합니다.
테이블 구조 자체를 삭제하는 명령은?
DROP TABLE입니다.
종속 객체가 있을 때 대상 객체의 삭제를 거부하는 옵션은?
RESTRICT입니다.
종속 객체까지 연쇄적으로 처리하는 삭제 옵션은?
CASCADE입니다.
트랜잭션의 변경 내용을 확정하는 명령은?
COMMIT입니다.
아직 확정하지 않은 트랜잭션의 변경을 취소하는 명령은?
ROLLBACK입니다.
사용자에게 데이터베이스 객체의 권한을 부여하는 명령은?
GRANT입니다.
이전에 부여한 권한을 회수하는 명령은?
REVOKE입니다.
기본 테이블의 질의를 바탕으로 정의되는 가상 테이블은?
뷰입니다.
일반 뷰는 질의 결과를 물리적으로 저장하는가?
일반적으로 저장하지 않습니다. 뷰의 정의 질의를 저장하고 조회할 때 해당 질의를 실행합니다.
뷰의 정의 질의를 변경할 때 모든 DBMS에서 ALTER VIEW만 사용하면 되는가?
아닙니다. DBMS에 따라 CREATE OR REPLACE VIEW를 사용하거나 뷰를 삭제한 뒤 다시 생성할 수 있으며, ALTER VIEW가 지원하는 변경 범위도 다릅니다.
데이터베이스 객체의 구조와 권한 등을 설명하는 메타데이터를 저장하는 것은?
시스템 카탈로그 또는 데이터 사전입니다.
참고자료
- 학습 범위 — 사무자동화산업기사 제1과목 사무자동화 시스템, SQL·DDL·DCL·뷰·시스템 카탈로그
- Q-Net — 사무자동화산업기사 종목별 상세정보 및 출제기준
- PostgreSQL Documentation — SQL Commands
- PostgreSQL Documentation — CREATE TABLE
- PostgreSQL Documentation — ALTER TABLE
- PostgreSQL Documentation — DROP TABLE
- PostgreSQL Documentation — GRANT
- PostgreSQL Documentation — REVOKE
- PostgreSQL Documentation — CREATE VIEW
- PostgreSQL Documentation — System Catalogs
이 글은 사무자동화산업기사 시험 범위에 포함된 SQL·DDL·DCL, CREATE·ALTER·DROP, COMMIT·ROLLBACK·GRANT·REVOKE, 뷰와 시스템 카탈로그를 이해하고 복습할 수 있도록 재구성한 정리입니다. SQL 명령의 분류, ALTER TABLE·ALTER VIEW 문법, 뷰의 갱신 가능 여부와 CASCADE·RESTRICT의 구체적인 동작은 DBMS마다 차이가 있으므로 실제 시험에서는 문제에 제시된 정의와 최신 Q-Net 출제기준을 함께 확인해야 합니다.