FireDrago

[mySQL] 제약조건 본문

DB

[mySQL] 제약조건

화이용 2023. 8. 7. 16:08

제약조건

  • 데이터 결함을 방지하기 위해 미리 제한하는 조건

 

기본키 (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