Database/SQL
[SQL] DDL
gangintheremark
2021. 10. 11. 18:33
728x90
테이블 생성 명령어
create table <테이블 이름>
(
컬럼1 자료형1 [constraint 제약조건이름] [제약조건],
컬럼2 자료형2 [constraint 제약조건이름] [제약조건],
...
);
제약조건
💡 not null
: 해당 컬럼이 null값을 가지면 안됨
create table STUDENT
(
sname nchar(3) constraint sname_always_exists not null
-- 또는
sname nchar(3) not null -- 제약 조건의 이름이 주어지지 않은 경우에는 시스템이 자동으로 이름 생성
);
💡 primary key
: 해당 컬럼이 기본키임을 나타냄
- 테이블에 최대 한 번만 정의
- null이 될 수 없음
create table STUDENT
(
sno number(3) primary key
-- 또는
sno number(3),
primary key(sno)
);
💡 unique
: 해당 컬럼의 값이랑 동일한 행이 존재할 수 없음
- not null 을 포함하지 않음
create table STUDENT
(
sname nchar(3) unique -- 이름이 같은 학생이 없다면
-- 또는
unique(dept, sname) -- 학과 내에서는 이름이 같은 학생이 없다면
);
💡 foreign key
: 해당 컬럼이 외래키임을 나타냄
references
키워드를 사용해 부모 테이블 및 피참조 컬럼을 설정- 참조 컬럼은 피참조 테이블의 기본키 또는 unique 키에 해당하는 컬럼이어야 함
create table ENROL
(
sno number(3) references STUDENT(sno)
-- 또는
sno number(3),
foreign key (sno) references STUDENT(sno)
);
➕ foreign key 옵션
On [delete|update] [restrict|cascade|set null]
restrict
: 자식 행이 있으면 delete(update) 불가cascade
: 부모 행을 delete(update) 하면 자식 행도 delete(update)set null
: 부모 행을 delete하면 자식 행의 FK값이 null로 설정
create table ENROL
(
foreign key (sno) references STUDENT(sno) on delete cascade
-- 부모 테이블의 행을 삭제하면 자식 테이블의 자식 행도 삭제
);
💡 default
: 해당 컬러의 값을 지정하지 않는 경우, 기본값을 지정함
create table STUDENT
(
year integer default 1
);
💡 check
: 컬럼의 값이 만족해야 할 조건을 명시
create table STUDENT
(
year number(1) default 1 check ( year >= 1 and year <= 4 )
-- 또는
year number(1) default 1
check ( year >= 1 and year <= 4 )
);
💡 alter table
명령: 테이블 정의 변경
alter table student
drop column year; -- 컬럼의 삭제
alter table student
add column year; -- 컬럼의 추가
alter table student
modify year integer default 2; -- 컬럼 자료형의 변경
💡 drop table
명령
drop table STUDENT; -- 테이블 정의 및 모든 행 삭제
drop table STUDENT cascade constraintsl -- 연관된 외래키 정의를 함께 삭제
728x90