-
MySQL 제약 조건데이터베이스/MySQL 2020. 9. 25. 13:10
제약조건(constraint)이란?
데이터의 무결성을 위해 데이터 입력을 받을 때 실행하는 검사 규칙을 의미함.
제약 조건은 'CREATE' 문으로 테이블을 생성하거나 'ALTER'문으로 필드 추가시에도 사용 가능.
제약 조건 설정하는 방법
CREATE TABLE Test( Null_TEST INT NOT NULL, -- 제약조건으로 NOT NULL 설정 Unique_Test INT UNIQUE, -- 제약조건으로 UNIQUE 설정 Primary_Test INT PRIMARY KEY, -- 제약조건으로 PRIMARY KEY 설정 Default_Test INT DEFAULT '디폴트', -- 제약조건으로 DEFAULT 설정 Foreign_Test INT, -- FOREIGN KEY 테스트를 위한 필드 선언 FOREIGN KEY (Foreign_Test) REFERENCES Test2 (Foreign_Test)\ -- 제약 조건 FOREIGN KEY 설정. -- 'Foreign_Test'이 'Test2'의 'Foreign_Test'의 값을 참조하도록 설정 ); CREATE TABLE Test2( Foreign_Test INT -- Test1에서 참조하는 FOREIGN KEY의 대상값 )
위와 같이 'CREATE'나 'ALTER'와 같이 필드값을 생성하거나 수정, 추가해줄 때 제약조건을 넣어서 설정해줄 수 있다.
혹은 필드값 생성과 별개로 하단에 표기할 수 있다.
CREATE TABLE Test( Null_TEST INT, Unique_Test INT, Primary_Test INT, Default_Test INT, constraint test_prkey Primary Key (Primary_Test) -- constraint + 조건명 + 제약조건 + (필드값) -- 위와 같이 입력하면 해당 필드에 제약조건을 걸 수 있다 );
이때는 "'constraint' 명령어+ 조건에 붙일 이름 + 제약 조건 ( 필드명 )" 순으로 작성하면 된다.
예시의 'primary key' 뿐 아니라 다양한 조건 추가가 가능하다.
제약 조건의 종류
1. NOT NULL
CREATE TABLE Test( Null_TEST INT NOT NULL -- NOT NULL을 설정함 );
'NOT NULL'을 제약 조건으로 추가하면 해당 필드에는 'NULL'값이 들어갈 수 없다는 뜻이다.
2. UNIQUE
CREATE TABLE Test( Unique_Test INT UNIQUE );
'UNIQUE'를 제약 조건으로 추가하면 해당 필드 내에선 같은 'VALUE'를 입력할 수 없다.
즉 중복값을 입력하는 것이 불가능해진다.
3. PRIMARY KEY
CREATE TABLE Test( Primary_Test INT PRIMARY KEY );
'PRIMARY KEY'는 'NOT NULL'과 'UNIQUE'의 제약 조건을 합한 것과 같다.
'PRIMARY KEY'를 지정하면 'NULL'값을 넣을 수도 없고 'UNIQUE'하게 중복값을 넣을 수도 없다.
4. DEFAULT
CREATE TABLE Test( Default_Test INT DEFAULT '디폴트' );
'DEFAULT'를 설정하면 필드에 'VALUE'가 없을 경우에 미리 설정된 값을 입력될 수 있다.
5. FOREIGN KEY
CREATE TABLE Test( FOREIGN KEY (Foreign_Test) REFERENCES Test2 (Foreign_Test) ); CREATE TABLE Test2( Foreign_Test INT );
'FOREIGN KEY'의 경우 테이블이 2개가 필요하다.
그리고 'FOREIGN KEY'를 설정하면 다른 테이블의 필드를 참조하여 두 테이블을 연결하게 만든다.
즉 각각의 테이블은 'FOREIGN KEY'를 통해서 연결될 수 있다.
'FOREIGN KEY'를 사용할 때 참조해야할 필드는 반드시 'UNIQUE' 또는 'PRIMARY KEY'가 적용되어있어야 한다.
'데이터베이스 > MySQL' 카테고리의 다른 글
MySQL 기본 문법 - 데이터베이스 정렬하기 (0) 2020.09.28 MySQL 기본 문법 - 데이터베이스 선택시 중복제거 (0) 2020.09.28 MySQL 자료형 - 숫자, 문자, 날짜, 시간 (0) 2020.09.25 MySQL 기본 문법 - 레코드 선택하기 (0) 2020.09.25 MySQL 기본 문법 - 자료 갱신하기 (0) 2020.09.25