DDL - 제약조건

gummy·2022년 12월 12일
0

국비일지

목록 보기
18/30

221212 월요일

[SQL문법] 9. 데이터 정의어(DDL) - Table

2. 제약조건

  • 테이블에 부적합한 데이터가 삽입/수정/삭제되는 것을 막아줌.
  • 제약조건 유형 : not null, unique,primary key, foreign key, check
  • 제약조건 선언 시기
    테이블 생성 시 : create table ---;
    테이블 생성 후 : alter table ---;
  • 제약조건 선언 문법
    컬럼 레벨 문법 : nn, uk, pk, ck
    테이블 레벨 문법 : fk, uk, pk, ck

[제약조건1] not null

  • null값이 삽입/수정될 수 없는 제약조건
  • 필수 컬럼에 선언함.

(예) 회원명, 직원이름, 주민번호, 생년월일, 전화번호 등

[제약조건2] unique

  • 중복값이 삽입/수정되는 것을 막아주는 제약조건
    (단, not null 제약조건이 선언되어 있지 않다면 null값은 허용함)
  • 고유한 값이 들어와야하는 컬럼에 사용함.

(예) 주민번호, 전화번호, 메일 등

[제약조건3] primary key(기본키)

  • not null + unique의 성격을 가지고 있는 제약조건
  • null값 및 중복값 삽입/수정되는 것을 막아주는 제약조건
  • 단, 테이블에 한번만 선언할 수 있음 !!!

(예) 학번, 사번, 회원번호, 제품번호 등
--
-- stu_no | stu_name | jumin | grade | phone | ....


-- pk nn nn nn nn
-- uk uk

[제약조건4] foreign key(외래키)

-- 자기자신 테이블이나 다른 테이블의 특정 컬럼(PK, UK)을 참조하는 제약조건
-- FK 제약조건이 선언된 컬럼 : 자식컬럼
-- FK 제약조건이 참조하는 컬럼 : 부모컬럼
-- 자식컬럼에는 부모 컬럼에 있는 값 중 하나만 삽입/수정될 수 있음!
-- (단, not null 제약조건이 선언되어 있지 않는 경우 null값은 허용함)

[제약조건5] check

-- 해당 컬럼이 만족해야하는 조건문을 자유롭게 지정하는 제약조건
-- (예)
-- salary int check (salary > 0)
-- 성별 varchar(10) check(성별 in ('남', '여'))
-- jumin varchar(13) check (length(jumin) = 13)
-- email varchar(50) check (email like '%@%')

테이블에 선언된 제약조건 정보 조회

Data Dictionary(DB사전) 사용하기
show databases;
-- DB 사전인 information_schema로 전환하기
use information_schema;

서브쿼리를 활용한 테이블 생성

-- 기존 테이블(서브쿼리 테이블)의 복사본 테이블이 생성됨.

0개의 댓글