[DB] Introduction to SQL
Data Definition Lauguage
- SQL의 DDL은 relatioin에 관한 정보를 만든다.
- 각 relation의 스키마
- 각 속성들의 domain
- 무결성 제약조건
- 각 relation의 인덱스 정보 / 보안, 권한 정보
Domain Types in SQL
- char(n): 길이가 n인 고정 길이 문자열
- varchar(n): 최대 길이가 n인 가변 길이 문자열
- int
- smallint
- numeric(p, d): 고정 소수점 실수, p는 부호를 포함한 전체 숫자의 길이, s는 소수점 이하 숫자의 길이
- real, float(n): float는 길이 n을 사용자가 설정함
- NULL, NOT NULL: 속성이 null값을 가질 수 있는지의 여부를 선언
- ex: ID VARCHAR(20) NOT NULL, Deposit INT DEFAULT 0
Create Table Construct
create table r (A1 D1, A2 D2, ... , An Dn),
(integrity-constraint1),
...,
(integrity-constraintk)
)
create table instructor (
ID char(5),
name varchar(20) not null,
dept_name varchar(2),
salary numeruc(8, 2)
)
Integrity Constraints in Create Table
create table student (
ID varchar(5),
name varchar(20) not null,
dept_name varchar(20),
tot_cred numeric(3, 0),
primary key ID,
foreign key (dept_name) references department(dept_name));
)
- not null: null값을 가질 수 없고 해당 속성의 값이 null인 tuple를 삽입, 수정하는 동작은 거부됨
- primary key(객체 무결성 제약조건): tuple의 유일성을 보장하기 위한 규칙으로 각 tuple를 식별하는 역할, null이나 중복되는 값을 가질수 없음
- foreign key(A1, A2,,) references r(A1, A2,,): 외래키는 relation r의 기본키를 참조함, 외래키의 값은 r에 항상 그 값이 존재해야 한다.
Drop and Alter Table Constructs
- drop table student: 테이블과 내용 모두 삭제
- delete from dtudent: 내용만 삭제, 테이블 스키마는 유지
- alter table: 기존 테이블에 새로운 속성을 추가하거나 기존 속성을 삭제
- alter table r add A D (모든 tuple은 새로운 속성에 대해 null값을 가진다.)
- alter table r drop A (삭제하는 속성이 다른 테이블에서 참조하는 속성인 경우 외래키 무결성 제약조건이 깨질 수 있으므로 조심해야한다.)
댓글남기기