
6장 데이터베이스 객체 작성과 삭제
25강. 데이터베이스 객체
- RDBMS 설치 직후는 데이터베이스가 비어 있음
- 테이블, 뷰, 인덱스, 프로시저 등의 객체를 생성하여 DB를 구축
데이터베이스 객체란?
- 데이터베이스 내에 정의되는 모든 것 (예: 테이블, 뷰, 인덱스 등)
- 객체는 이름을 가지며 데이터베이스에 실체를 가짐
이름 지정 제약사항
- 기존 이름이나 예약어와 중복되지 않아야 함
- 숫자로 시작 불가
- 언더스코어(_) 외의 특수기호 사용 불가
- 한글 사용 시 ""로 감싸야 함 (MySQL은 `로 감쌈)
- 시스템이 허용하는 길이를 초과하지 않아야 함
스키마와 네임스페이스
- 데이터베이스 객체는 스키마 안에 생성됨
- 스키마는 이름 충돌 방지를 위한 네임스페이스 역할
26강. 테이블 작성, 삭제, 변경
CREATE TABLE
CREATE TABLE 테이블명 (
열명 자료형 [DEFAULT 기본값] [NULL|NOT NULL],
...
);
- 열명, 자료형(VARCHAR, INTEGER 등), 기본값, NULL 허용 여부 지정
DROP TABLE
DROP TABLE 테이블명;
TRUNCATE TABLE
TRUNCATE TABLE 테이블명;
- 테이블의 모든 행 삭제, WHERE 사용 불가
ALTER TABLE
- 열 추가:
ALTER TABLE 테이블명 ADD 열 정의;
- 열 속성 변경:
ALTER TABLE 테이블명 MODIFY 열 정의;
- 열 이름 변경:
ALTER TABLE 테이블명 CHANGE 기존열 새열 정의;
- 열 삭제:
ALTER TABLE 테이블명 DROP 열명;
예시:
ALTER TABLE sample MODIFY col VARCHAR(30);
ALTER TABLE sample ADD new_col INTEGER;


27강. 제약
- 제약은 테이블의 열 또는 테이블 전체에 설정 가능
열 제약
CREATE TABLE sample (
a INTEGER NOT NULL,
b INTEGER UNIQUE,
c VARCHAR(30)
);
테이블 제약
CREATE TABLE sample (
no INTEGER,
sub_no INTEGER,
name VARCHAR(30),
PRIMARY KEY (no, sub_no)
);
제약 이름 지정
CONSTRAINT 제약명 제약종류 (열명)
제약 추가 및 삭제
ALTER TABLE sample MODIFY c VARCHAR(30) NOT NULL;
ALTER TABLE sample ADD CONSTRAINT pkey_sample PRIMARY KEY(a);
ALTER TABLE sample DROP CONSTRAINT pkey_sample;
ALTER TABLE sample DROP PRIMARY KEY;
기본키
- NOT NULL + UNIQUE
- 행을 고유하게 식별하는 열에 설정
28강. 인덱스 구조
- 인덱스는 SELECT 성능 향상을 위해 사용
- 이진 탐색 구조 (이진 트리)
- 인덱스가 없을 경우: 풀 테이블 스캔 수행
이진트리
- 중복 값 없음
- 왼쪽: 작은 값 / 오른쪽: 큰 값
29강. 인덱스 작성과 삭제
인덱스 작성
CREATE INDEX 인덱스명 ON 테이블명 (열1, 열2, ...);
인덱스 삭제
DROP INDEX 인덱스명;
DROP INDEX 인덱스명 ON 테이블명;
인덱스 성능 확인
EXPLAIN SELECT ...;
- 쿼리 실행 계획 확인
- 인덱스 사용 여부 및 최적화 상태 확인 가능
30강. 뷰 작성과 삭제
뷰란?
- SELECT 명령을 저장한 가상 테이블
- 데이터 저장은 안되며 CPU 사용으로 처리
뷰 작성
CREATE VIEW 뷰명 AS SELECT ...;
CREATE VIEW 뷰명 (열1, 열2, ...) AS SELECT ...;
뷰 삭제
DROP VIEW 뷰명;
주의사항
- 뷰는 SELECT에서만 사용 권장
- 근원이 되는 테이블의 데이터가 많거나 집계가 많으면 성능 저하 가능
머티리얼라이즈드 뷰
- 첫 참조 시 데이터를 저장
- 이후 참조 시 캐시된 데이터를 사용하여 성능 개선
함수 테이블
- 인수를 받아 조건을 달리한 SELECT 실행 가능
-- 연습문제 ---
1.2
2.3
3.1