- 관계 데이터베이스에서 사용될 테이블, 스키마, 도메인, 인덱스, 뷰 등을 정의(생성)하거나 수정/제거하기 위해 사용되는 언어이다.
- 종류 : CREATE, ALTER, DROP
CREATE
1) 테이블 정의
CREATE TABLE 테이블명
(
{속성명 데이터타입 [NOT NULL][DEFAULT 값],}
[PRIMARY KEY(속성명),]
[UNIQUE(속성명),]
[FOREIGN KEY(속성명) REFERENCES 참조테이블(속성명)]
[ON DELETE CASCADE | SET NULL | SET DEFAULT | NO ACTION]
[ON UPDATE CASCADE | SET NULL | SET DEFAULT | NO ACTION],
[CONSTRAINT 제약조건명][CHECK(속성명=범위값)]
);
구문의 괄호 의미 : {} = 반복, [] = 생략 가능, | = 선택
CREATE TABLE 테이블명 | - 지정한 테이블명으로 테이블 생성. |
{속성명 데이터타입} | - 테이블을 구성하는 속성 수만큼 속성 이름과 데이터 타입 기입. - [NOT NULL] : 테이블 생성 시 특정 속성 값에 NULL이 없도록 지정할 때 사용하며 생각 가능. |
PRIMARY KEY(속성명) | - 테이블에서 기본키 속성을 지정할 때 사용. |
UNIQUE(속성명) | - 대체키 지정 시 사용. - 속성의 모든 값이 고유한 값을 가지도록 지정할 때 사용. |
FOREIGN KEY(속성명) REFERENCES 참조테이블(속성명) |
- 외래키를 지정할 때 사용. - FOREIGN KEY(속성명) : 외래키로 사용될 속성 이름 기입. - REFERENCES 참조테이블(속성명) : 참조할 테이블명과 속성명 기입. |
CONSTRAINT 제약조건명 CHECK(속성명=범위값) |
- 테이블을 생성할 때 특정 속성에 대해 속성 값의 범위를 지정할 때 사용. |
외래키 지정 시 옵션
ON DELETE | - 참조 테이블의 튜플이 삭제되면 기본 테이블은 어떤 형태로 대처할지 설택. |
ON UPDATE | - 참조 테이블의 튜플이 변경되면 기본 테이블은 어떤 형태로 대처할지 설택. |
CASCADE | - 참조 테이블의 튜플에 삭제/변화가 있는 경우 기본 테이블도 같이 연쇄적으로 삭제/변화가 되도록 할 때 사용. |
SET NULL | - 참조 테이블의 튜플에 삭제/변화가 있는 경우 기본 테이블의 관련된 속성값을 NULL값으로 변경할 때 사용. |
SET DEFAULT | - 참조 테이블의 튜플에 삭제/변화가 있는 경우 기본 테이블의 관련 속성값을 기본값으로 변경할 때 사용. |
NO ACTION | - 참조 테이블의 튜플에 삭제/변화가 있는 경우 기본 테이블 아무런 변화가 없도록 지정할 때 사용. |
테이터 타입
- 데이터의 유형(형식)을 말한다.
- 컴퓨터에 자료를 저장할 때는 저장될 자료가 어떤 형태인지 지정해야 한다.
ex) 전화번호 02-1234-5678은 사실은 문자이다. 그러나 문자형으로 지정해주지 않으면 숫자로 인식되어 계산될 수 있다. 따라서 데이터가 문자인지, 숫자인지 등과 같이 데이터의 유형(형식)을 지정해줘야 한다.
데이터 타입의 종류
- 고정길이 문자는 지정된 문자 수만큼의 기억공간을 항상 차지하는 방식이다.
데이터 타입 표현 형식 정수(integer) INT 실수(float) FLOAT 또는 REL 고정길이 문자 CHAR(문자 수) 가변길이 문자 VARCHAR(문자 수) 시간 TIME 날짜 DATE
- 가변길이 문자는 지정된 문자 수 안에서 실제 자료에 따라 유동적으로 기억공간을 차지하는 방식이다. 예를 들어 데이터 타입을 CHAR(10)인 경우와 VARCHAR(10)으로 지정했을 때 실제 자료의 문자 수가 5라면 CHAR(10)인 경우는 실제 문자 수와 상관없이 문자 10개를 저장할 공간을 차지하고 VARCHAR(10)인 경우는 문자 5개를 저장할 공간만 차지한다.
속성(항목, 칼럼) 정의서
- 속성(항목)에 대한 데이터 타입, 제약조건, 사용되는 테이블명 등을 요약한 정의서를 말한다.
2) 스키마 정의
- 시스템 관리자가 일반 사용자에게 스키마에 대한 권한을 주기 위한 스키마를 만들기 위해 사용되며, CREATE SCHEMA문에 의해 생성된다.
CREATE SCHEMA 스키마명 AUTHORIZATION 사용자;
3) 도메인 정의
- 한 속성값의 범위를 지정하기 위한 도메인은 CREATE DOMAIN문에 의해 생성된다.
CREATE DOMAIN 도메인명 데이터타입
[DEFAULT 기본값]
[CONSTRAINT 제약조건명 CHECK(VALUE IN(범위값))];
4) 인덱스 정의
- 데이터베이스 내의 자료를 보다 효율적으로 검색하기 위해 인덱스를 만들고, 시스템에 의해 자동 관리되며, CREATE INDEX문에 의해 생성된다.
CREATE [UNIQUE] INDEX 인덱스명
ON 테이블명(속성명 [ASC | DESC])
[CLUSTER];
UNIQUE | - 중복을 허용하지 않도록 인덱스 생성(생략된 경우 : 중복 허용) |
ON 테이블명(속성명) | - 지정된 테이블의 속성으로 인덱스를 만듦. - [ASC | DESC] : 인덱스로 사용될 속성값의 정렬 방법을 지정. (ASC : 오름차순, DESC : 내림차순, 생략된 경우 : 오름차순) |
CLUSTER | - 인접된 튜플들을 물리적인 그룹으로 묶어 저장 시 사용. |
ALTER
- 기존에 만들어진 테이블에 새로운 속성(항목)을 추가하거나 기존 속성을 변경, 삭제할 때 사용하는 명령어이다.
ALTER TABLE 테이블명 ADD 속성명 데이터타입 [DEFAULT];
ALTER TABLE 테이블명 ALTER 속성명 [SET DEFAULT];
ALTER TABLE 테이블명 DROP 속성명 [CASCADE | RESTRICT];
ALTER TABLE ~ ADD | - 새로운 속성(항목)을 추가할 때 사용되는 구문. |
ALTER TABLE ~ ALTER | - 속성(항목)에 대한 사항을 변경할 때 사용되는 구문. |
ALTER TABLE ~ DROP | - 속성(항목)을 제거할 때 사용되는 구문. |
DROP
- 기존에 사용되던 테이블, 스키마, 도메인, 인덱스, 뷰, 제약조건 등을 제거할 때 사용하는 명령으로 삭제 시 전체가 삭제된다.
DROP TABLE 테이블명 [CASCADE | RESTRICT];
DROP SCHEMA 스키마명 [CASCADE | RESTRICT];
DROP DOMAIN 도메인명 [CASCADE | RESTRICT];
DROP VIEW 뷰명 [CASCADE | RESTRICT];
DROP INDEX 인덱스명;
DROP CONSTRAINT 제약조건명;
삭제 시 사용되는 옵션 RESTRICT와 CASCADE의 차이점
- RESTRICT : 삭제할 요소가 사용(참조) 중이면 삭제가 이루어지지 않는다.
- CASCADE : 삭제할 요소가 사용(참조) 중이더라도 삭제가 이루어지며, 삭제할 테이블을 참조 중인 다른 테이블도 연쇄적으로 같이 삭제된다.
'정보처리산업기사 실기 > 데이터베이스' 카테고리의 다른 글
SQL 제어어(DCL : Data Control Language) (0) | 2020.11.06 |
---|---|
SQL 조작어(DML : Data Manipulation Language) (0) | 2020.11.06 |
관계 데이터 연산 (0) | 2020.11.06 |
키(Key)와 무결성 제약조건 (0) | 2020.11.06 |
관계 데이터 모델 (0) | 2020.11.06 |