FireDrago
[mySQL] 제약조건 본문
제약조건
- 데이터 결함을 방지하기 위해 미리 제한하는 조건
| 기본키 (PRIMARY KEY) | - 데이터를 구분하기 위한 '식별자' - 중복값 , NULL 값 입력 불가 |
| 외래키 (FOREIGN KEY) | - 두 테이블 사이의 관계를 연결 - 다른 테이블의 '기본키'와 연결 |
| 고유키 (UNIQUE) | - 중복되지 않는 유일한 값 (기본키와 동일) - NULL 값 허용 (기본키와 차이) |
| 체크 (CHECK) | - 입력되는 데이터를 점검 |
| 기본값 (DEFAULT) | - 입력값을 입력하지 않았을때 자동 입력되는 값 |
| (NULL)(NOT NULL) | - null 허용 , null 불허용( 반드시 값 입력) |
1. 기본키
CREATE TABLE EXAMPLE (
mem_id CHAR(3) PRIMARY KEY, -- NULL, 중복값 금지
mem_name CHAR(5)
);
-- ALTER로 기본키 변경하는 법
ALTER TABLE EXAMPLE
AND CONSTRAINT
PRIMARYKEY (mem_name);
기본키는 테이블당 하나만 지정할 수 있다. 외래키로 참조하는 경우 기준 테이블의 기본키를 참조해야한다.
기본키를 삭제할때는 외래키부터 먼저 삭제해야 함
2. 외래키
CREATE TABLE EXAMPLE2 (
mem_id CHAR(8),
prod_name CHAR(10)
FOREIGN KEY (mem_id) REFERENCES EXAMPLE(mem_id) -- 외래키 생성
);
-- prod_name 으로 외래키 변경
ALTER TABLE buy
ADD CONSTRAINT
FOREIGN KEY(prod_name)
REFERENCES EXAMPLE(mem_id);
외래키가 참조하는 열은 반드시 기본키, 고유키로 설정되어 있어야함
3. 고유키
CREATE TABLE EXAMPLE3 (
email CHAR(11) UNIQUE -- 고유키 , 중복안됨, NULL 값은 중복가능
)
기본키와 다른점은 NULL 값이 허용
4. 체크
CREATE TABLE EXAMPLE4 (
height TINYINT CHECK (height >= 170) -- 170 이상의 조건만 INSERT 받겠다.
)
INSERT INTO EXAMPLE4 (height) VALUES (169);
-- ERROR CODE : 3819 Check Constraint 발생
데이터를 입력받을때 기준값을 정해줄 수 있다.
5. 기본값
CREATE TABLE EXAMPLE5 (
height INT DEFAULT 160,
phone1 CHAR(3) NULL
);
ALTER TABLE EXAMPLE5 -- ALTER로 기본값 주기
ALTER COLUMN phone1 SET DEFAULT '02';
-- NULL 입력해도 160, 02 기본값 입력
INSERT INTO EXAMPLE5 VALUES (NULL, NULL );
'DB' 카테고리의 다른 글
| [DB] 트랜잭션 (0) | 2024.02.26 |
|---|---|
| [mySQL] JOIN 문 (0) | 2023.08.03 |
| [DB] SELECT문 총정리 (0) | 2023.08.01 |
| [Oracle] INSERT / SELECT / UPDATE / DELETE 기본문법 (0) | 2023.05.13 |
| [Oracle] 오라클 데이터 타입 (0) | 2023.05.13 |
