3. SQL 1 - DDL
- DDL(Data Definition Language)
기능
1) 관계 스키마
2) 속성의 도메인
3) 무결성 제약
4) 관계에 연관되는 인덱스
5) 관계 저장을 위한 디스크 상의 물리적 구조
6) 관계에 연관되는 보안 및 권한 부여/취소
SQL 도메인 타입
1) char(n) : 길이가 n인 문자열
2) varchar(n) : 최대 길이 n까지 가능한 문자열 → Oracle에선 varchar2(n)
3) int : Integer형
4) smallint : Small Integer형
5) numeric(p, d) : 유효숫자 p개, 소수점 다음 숫자 d개의 수 → Oracle에선 decimal(p, d), number(p, d)
ex) numeric(7, 2) → xxxxx.xx
6) float(n) : 최소 n자리 이상의 float형 숫자
- 테이블 생성
ex)
Create table professor (
pID char(5),
name varchar(20) not null, //not null 같은 걸 무결성 제약이라고 하며, 이는 따로 이름을 붙일 수 있다.
deptName varchar(20),
salary numeric(8, 2)
);
- 무결성 제약(Integrity Constraint)
대표적인 무결성 제약 3가지
1) A1 char(8) not null
→ A1 속성은 널 값을 가질 수 없음.
2) primary key (A1,A2)
→ (A1,A2)는 주 키.
아래처럼 주 키가 한개일 경우엔 다음처럼 속성 타입 선언부분에 같이 써줘도 무방함.
A1 char(8) primary key,
3) foreign key (A2) references department(K)
→ A2는 외래키로 department table의 주 키를 참조함. 이때 주키는 K인데 department 뒤에 K는 생략해도 무방함.(안 써줘도 외래키는 알아서 주 키를 참조할 거니까)
아래처럼 무결성 제약이 이름을 가질 수도 있는데, 후에 해당 제약을 삭제하거나 변경할 때 용이함.
constraint myFirstForeignKey foreign key (deptName) references department(deptName)
+) check (gender in ('F', 'M'))
→ gender 속성은 반드시 'F'나 'M'을 값으로 가져야 함.
- 스키마 삭제
Drop table student; //Drop은 스키마(table) 자체를 날려버림.
Delete from student Where sID>20180000; //Delete는 Where절을 쓸 수 있고, 조건으로 원하는 tuple을 날림.
Truncate table student; //Truncate는 Where절을 쓸 수 없고, 스키마는 남긴 채 안의 tuple들을 모두 날림.
- 스키마 변경
ex1) Alter table r add 속성 도메인;
Alter table r add university varchar(10) not null
ex2) Alter table r drop 속성;
Alter table r drop university;