[SQL] DDL,제약조건

Database / / 2022. 4. 25. 20:04

▶  DDL

● Data Definition Language 데이터 정의어
● Database 객체를 생성 create /수정 alter /삭제 drop하는 명령어
● 실행즉시 db에 반영되므로, TCL처리(commit,rollback)가 필요없다.

select object_type from all_objects;
-- 사용자 소유한 객체, 사용권한을 위임받은 객체를 모두 조회가능한 Data Dictionary

 

테이블 생성시 주석처리 확실히 comment on table/column

 

 

 

 

 

▶  CREATE

객체를 생성하는 명령어

컬럼작성시 컬럼명 자료형 [기본값] [제약조건] 순으로 작성

 

 

 

 

  CONSTRAINT

제약조건. 테이블의 컬럼에 대해서 데이터 무결성을 지키기 위해 설정하는 조건
 데이터 무결성이란... 데이터가 일관되고, 정확하게 유지되는 것

 

 

 

 1. not null (C) : 해당컬럼에 null값을 허용하지 않는다.


 2. unique (U) : 레코드별로 해당컬럼에 중복을 허용하지 않는다.


 3. primary key (P) : 식별자 컬럼을 지정. 레코드를 구별하기 위한 고유값을 가진 컬럼. 테이블당 하나만 허용.


 4. foreign key (R) : 외래키. 부모테이블의 특정컬럼값만 사용가능하도록 제약.


 5. check (C) : 해당 컬럼의 값의 범위/목록을 제한 (도메인을 설정하는 제약조건)

 

 

● 제약조건 조회 user_constraints

 

● 컬럼명 확인 user_cons_columns

 

 

 

 

   제약조건 작성법 2가지

● 1. 테이블 레벨 - 컬럼 작성과 동일한 레벨에 작성
● 2. 컬럼 레벨 - 컬럼 설정시 옆에 작성

 

 

  NOT NULL

 제약조건을 컬럼레벨에만 작성할 수 있다. 

필수 입력 항목

● 테이블 레벨 작성

 

 

 

  UNIQUE

중복 허용 안됨

null 허용 안함

 

 

 

 

  PRIMARY KEY

기본키. 레코드를 식별할 수 있는 식별자컬럼에 지정하는 제약조건.
테이블당 하나의 PK만 지정할 수 있다.
해당컬럼은 null을 허용하지 않고, 레코드별로 고유해야 한다.
단일컬럼 PK | 복합컬럼 PK

유니크제약 조건이 걸릴 만한 조건  ex) 아이디, , 이메일, 등... 단, 암호화처리 해야되는건 위험하다(전화번호, 주민번호) 

 

● 하나의 행을 식별할 용도로 pk컬럼을 자주 사용

    고유하기 때문에 가능

 

복합 pk 컬럼중 하나라도 null일 수 없다. 

 

 

 

 

 

 

 

  FORIEGN KEY

 외래키. 참조무결성을 위한 제약조건
 부모테이블(참조되는 테이블)의 존재하는 값만 자식테이블(참조하는 테이블. 외래키)에서 사용이 가능하도록 제한함.
부모테이블의 참조컬럼은 pk/uq제약조건이 걸려있어야 한다.(중복값이 있는 컬럼을 참조할 수 없다.)

    RDBMS = 테이블관의 관계/연결의 조건

 

 

 fk제약조건 삭제 옵션
 1. on delete restricted (기본값) 부모레코드 먼저 삭제 불가
 2. on delete set null 부모레코드 삭제시 자식레코드의 fk컬럼을 null로 변환
 3. on delete cascade 부모레코드 삭제시 자식레코드 삭제

 

 

 

 

CHECK

 

● 해당컬럼의 값의 범위, 목록을 제한하는 제약조건

null허용

 

 

 

ALTER

table객체에 대한 alter구문은 컬럼/제약조건에 대한 수정시 사용한다


 1. add 컬럼 / 제약조건 추가


 2. modify 컬럼(자료형, default값, not null) 변경

 

not null은 수정

 modify name not null

 


 3. rename 컬럼 / 제약조건 이름 변경


 4. drop 컬럼 / 제약조건 삭제

 

 

 

 

 

 

 

'Database' 카테고리의 다른 글

[SQL]DCL,TCL  (0) 2022.04.29
[SQL]TOP-N  (0) 2022.04.27
[SQL] DML  (0) 2022.04.20
[SQL] 그룹함수  (0) 2022.04.19
[SQL] join , set operator,  (0) 2022.04.18