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