제약조건(constraint)은 데이터의 무결성을 지키기 위해 제한하는 조건.
- 대표적인 제약조건
- PRIMARY KEY 제약조건 - "중복되지 않는 값이여야 하고, NULL 값을 허용하지 않는다."
- 기본 키에 이름 지정: CONSTRAINT PRIMARY KEY PK_mem_id (mem_id)
- DESCRIBE 문을 이용하면 지정한 이름(PK_mem_id) 나옴. 지정안하면 PRI
- FOREIGN KEY 제약조건 - "두 테이블 사이의 관계를 연결해주고, 그 결과 데이터의 무결성을 보장해주는 역할. 외래키가 설정된 열은 꼭 다른 테이블의 '기본 키'와 연결한다.
- (예) 회원 테이블 member (기준 키 있음, 기준 테이블) - 구매 테이블 buy ( 기준 키 와 외래 키 있음, 참조 테이블)
- 참조 테이블이 참조 하는 기준 테이블의 열은 반드시 PRIMARY KEY 나 UNIQUE로 설정되어야 한다.
- 설정 → FOREIGN KEY(mem_id) REFERENCES member(mem_id)
- 열 이름이 기준 테이블과 같지 않아도 된다. () 안에 연결 시킬 열 이름을 넣으면 된다.
- 기본 키- 외래 키 관계가 설정되면 기준 테이블의 해당 열은 변경되거나 삭제되지 않는다.
- ON UPDATE CASCADE : 기준 테이블에 있는 연결된 PK열이 변경되면 자동으로 참조 테이블의 FK열도 변경
- ON DELETE CASCADE : 기준 테이블의 데이터가 삭제되면 참조 테이블의 데이터도 삭제
- UNIQUE 제약조건 - 중복되지 않는 유일한 값, NULL 값 허용
- 설정 → email CHAR(30) NULL UNIQUE
- CHECK 제약조건 - 입력되는 데이터는 점검하는 기능
- 신장을 물어보는 열에 마이너스 값이 입력되지 않도록하기
- 설정
- height TINYINT UNSIGNED NULL CHECK( height >= 100)
- phone1 CHAR(3) NULL CHECK(phone1 IN('02', '031', '032', '054', '055', '061))
- DEFAULT 정의 - 입력하지 않았을 때 자동으로 입력되는 값 설정
- 설정
- height TINYINT UNSIGNED NULL DEFAULT 160
- phone1 CHAR(3) NULL DEFAULT '02'
- 설정
- NULL 값 허용 - 아무 것도 없다는 의미, 공백이나 0과는 다름
- NOT NULL 값 허용 안함
- PRIMARY KEY 제약조건 - "중복되지 않는 값이여야 하고, NULL 값을 허용하지 않는다."
'DataBase > MySQL' 카테고리의 다른 글
[ MySQL 최적화 ] Index (1) | 2024.12.26 |
---|---|
MySQL- 가상의 테이블 View (0) | 2023.08.26 |
MySQL - SQL 프로그래밍 (IF, CASE, WHILE, 동적 SQL) (0) | 2023.08.26 |
MySQL - 테이블 묶는 조인(JOIN) (0) | 2023.08.12 |
MySQL - 데이터 형 변환 (0) | 2023.08.04 |