일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 도메인 주도 개발 시작하기
- CleanCode
- vue.js
- react
- 네트워크
- 자바
- 혼공SQL
- 이팩티브 자바
- 인프런김영한
- 자바스터디
- 자바예외
- AWS
- jpa
- 이펙티브자바
- aop
- DDD
- 자료구조
- 인덱스
- mysql
- 알고리즘
- 인프런백기선
- 알고리즘분석
- SQL쿡북
- 클린코드
- 이펙티브 자바
- 스프링부트와AWS로혼자구현하는웹서비스
- 기술면접
- java
- AWS RDS
- MariaDB
- Today
- Total
기록이 힘이다.
[혼공 SQL] 제약조건으로 테이블을 견고하게 본문
제약조건의 기본 개념과 종류
테이블을 만들 때는 테이블의 구조에 필요한 제약조건을 설정해줘야 합니다. 앞에서 확인한 기본 키와 외래 키가 대표적인 제약조건입니다.
이메일, 휴대폰과 같이 중복되지 않는 열에는 고유 키를 지정할 수 있습니다. 회원의 평균 키는 당연히 200cm를 넘지 않겠죠? 이때 실수로 200을 입력하는 것을 방지하는 제약조건이 체크입니다. 회원 테이블에 국적을 입력한다면 99%는 대한민국일 것입니다. 매번 입력하기 귀찮다면 제약조건으로 기본값을 설정할 수 있습니다. 또한, 값을 꼭 입력해야 하는 NOT NULL 제약조건도 있습니다.
-PRIMARY KEY 제약조건
-FOREIGN KEY 제약조건
-UNIQUE 제약조건
-CHECK 제약조건
-DEFAULT 정의
-NULL 값 허용
기본 키 제약조건
테이블에는 많은 행 데이터가 있습니다. 이 중에서 데이터를 구분할 수 있는 식별자를 기본 키primary Key라고 부릅니다. 예로 회원 테이블의 아이디, 학생 테이블의 학번, 직원 테이블의 사번 등이 이에 해당합니다.
대부분의 테이블은 기본 키를 가져야 합니다. 물론, 기본 키가 없어도 테이블 구성이 가능하지만 실무에서 사용하는 테이블에는 기본 키를 설정해야 중복된 데이터가 입력되지 않습니다. 예를 들어 기본 키는 아이디가 동일한 회원이 입력되지 않도록 합니다. 기본 키로 생성한 것은 자동으로 클러스터형 인덱스가 생성됩니다.
한 가지 더 기억할 것은 테이블은 기본 키를 1개만 가질 수 있습니다. 어떤 열에 설정해도 문법상 문제는 없으나 테이블의 특성을 가장 잘 반영하는 열을 선택하는 것이 좋습니다.
CREATE TABLE에서 설정하는 기본 키 제약조건
USE naver_db;
DROP TABLE IF EXISTS buy, member;
CREATE TABLE member
( mem_id CHAR(8) NOT NULL PRIMARY KEY,
mem_name VARCHAR(10) NOT NULL,
height TINYINT UNSIGNED NULL
);
ALTER TABLE에서 설정하는 기본 키 제약조건
외래 키 제약조건
두 테이블 사이의 관계를 연결해주고, 그 결과 데이터의 무결성을 보장해주는 역할을 합니다. 외래 키가 설정된 열은 꼭 다른 테이블의 기본키와 연결됩니다.
우리가 사용하는 회원 테이블과 구매 테이블이 바로 대표적인 기본 키-외래 키 관계입니다. 여기서 기본 키가 있는 회원 테이블을 기준 테이블이라고 부르며, 외래 키가 있는 구매 테이블을 참조 테이블이라고 부릅니다.
구매 테이블의 아이디(FK)는 반드시 회원 테이블의 아이디(PK)로 존재합니다.
기본 키-외래 키 관계를 맺으면 오류가 없는 데이터가 됩니다.
참조 테이블이 참조하는 기준 테이블의 열은 반드시 기본 키나, 고유 키로 설정되어 있어야 합니다.
CREATE TABLE에서 설정하는 외래 키 제약조건
외래 키를 생성하는 방법은 CREATE TABLE 끝에 FOREIGN KEY 키워드를 설정하는 것입니다.
FOREIFN KEY( 열_이름) REFERENCES 기준_테이블(열_이름)
ALTER TABLE에서 설정하는 외래 키 제약조건
기준 테이블의 열이 변경될 경우
기타 제약조건
고유 키 제약조건
'중복되지 않는 유일한 값'을 입력해야 하는 조건입니다. 이것은 기본 키 제약조건과 거의 비슷하지만, 차이점은 고유 키 제약조건은 NULL 값을 허용한다는 것입니다. NULL 값은 여러 개가 입력되어도 상관없습니다. 또 기본 키는 테이블에 1개만 설정해야 하지만, 고유 키는 여러 개를 설정해도 됩니다.
체크 제약조건
입력되는 데이터를 점검하는 기능을 합니다.
기본값 정의
값을 입력하지 않았을 때 자동으로 입력될 값을 미리 지정해 놓는 방법입니다.
널 값 허용
'아무 것도 없다'라는 의미입니다. 공백(' ')이나 0과는 다르다는 점을 주의하세요.
NULL은 빈 값을 허용, NOT NULL은 빈 값을 허용하지 않는다는 의미입니다.
'SQL' 카테고리의 다른 글
[혼공 SQL] 인덱스 개념을 파악하자 (0) | 2022.12.14 |
---|---|
[혼공 SQL] 가상의 테이블: 뷰 (0) | 2022.12.14 |
[혼공 SQL] 테이블 만들기 (0) | 2022.12.13 |
[혼공 SQL] SQL 프로그래밍 (0) | 2022.12.13 |
[혼공 SQL] 두 테이블을 묶는 조인 (0) | 2022.12.13 |