더 이상 tistory 블로그를 운영하지 않습니다. glanceyes.github.io에서 새롭게 시작합니다.

새소식

데이터베이스/SQL

SQL(오라클) 제약조건 종류와 생성 및 삭제

  • -

 

SQL 제약 조건

 

제약조건은 데이터의 무결성을 유지하기 위해 특정 컬럼을 원하는 조건의 데이터만 갖도록 하기 위한 제약이다.

 

 

제약조건의 종류

 

타입 설명
PRIMARY KEY (기본 키) 테이블의 행을 고유하게 식별하기 위한 컬럼이며, NULL 값은 불가하므로 기본 키 생성 시 반드시 주의해야 한다. 기본 키 생성 시 DBMS에서 자동으로 UNIQUE 인덱스를 생성한다. (UNIQUE & NOT NULL로 이해하면 쉽다.)
FOREIGN KEY (외래키) 다른 테이블의 기본 키를 참조하는 경우 필요한 컬럼이다.
UNIQUE (고유 키) 테이블에 저장된 행을 고유하게 식별하기 위한 컬럼이며, 기본 키와는 다르게 NULL 값이 가능하다.
NOT NULL 해당 컬럼이 NULL 값을 갖지 못하도록 할 때 선언한다.
CHECK 입력할 수 있는 값의 종류와 범위를 제한한다.
DEFAULT 컬럼의 값이 지정되어 있지 않을 경우 기본 값을 설정한다.

 

 

제약 조건 생성하기

 

ALTER 문으로 제약조건 생성하기

 

ALTER TABLE [테이블명] ADD CONSTRAINT [제약조건명] [제약조건]([컬럼명]);

 

예) ALTER TABLE CUSTOMERS ADD CONSTRAINT PK_CUSTOMERS PRIMARY KEY (customer_id);

 

단, DEFAULT 또는 NOT NULL 같이 컬럼명과 데이터 타입 이후에 명시해주는 제약 조건의 추가는 주로 테이블 칼럼의 정의를 변경하는 방법을 사용하며, 다음과 같이 작성한다.

 

ALTER TABLE [테이블명] MODIFY ([컬럼명1] [데이터 타입] [DEFAULT 식] [NOT NULL], [컬럼명2], [데이터 타입] [DEFAULT 식] [NOT NULL], …);

 

 

CREATE 문 안에 제약조건 생성하기

 

CREATE TABLE [테이블명] (
    …
    CONSTRAINT [제약조건명] [제약조건]([컬럼명])

);

 

예) CREATE TABLE customers (
    customer_id  CHAR(8) NOT NULL,
    customer_first_name VARCHAR2(20) NOT NULL,
    customer_last_name VARCHAR2(20) NOT NULL,
    customer_phonenumber VARCHAR2(10),
    CONSTRAINT PK_CUSTOMERS PRIMARY KEY(customer_id)
);

 

 

 

PRIMARY KEY 생성하기

 

주로 사용하는 PRIMARY KEY의 생성 방법은 크게 3가지가 있다.

1) [컬럼명] [데이터 타입] PRIMARY KEY
2) [컬럼명] [데이터 타입] CONSTRAINT [제약조건명] PRIMARY KEY
3) CONSTRAINT [제약조건명] PRIMARY KEY([컬럼명])

 

위 방법 중에서 주로 3번을 많이 사용한다.

 

 

PRIMARY KEY의 제약

 

PRIMARY KEY는 테이블 당 반드시 한 개만 만들 수 있지만, PRIMARY KEY를 구성하는 컬럼은 여러 개 사용이 가능하다. PRIMARY KEY 그 자체에 관한 개수와 PRIMARY KEY를 구성하는 컬럼의 개수 제약을 구분할 필요가 있다.  [SQLD 문제 출제된 내용]

 

 

 

제약조건 삭제하기

 

ALTER TABLE [테이블명] DPOP CONSTRAINT [제약조건명]
Contents

글 주소를 복사했습니다

부족한 글 끝까지 읽어주셔서 감사합니다.
보충할 내용이 있으면 언제든지 댓글 남겨주세요.