일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
31 |
- java
- workbench
- 배열
- CSS
- Linux
- HTML
- SQL
- 다이어그램
- 이클립스
- 자바스크립트
- MySQL
- git
- DML
- Spring_오류정리
- Git_정리
- vb.net
- 아파치톰캣
- SQL_용어정리
- JavaScript
- asp.net
- Spring_에러정리
- Git_명령어정리
- github
- 인스턴스
- 자바
- spring
- json
- Linux_명령어정리
- 인덱스
- jsp
- Today
- Total
데브마우스
[SQL] 제약 조건(PK, FK, UNIQUE, CHECK, DEFAULT, NOT NULL) 정리 본문
제약 조건이란 무엇인가요?
제약 조건은 데이터의 무결성을 지키기 위해 제한하는 조건입니다. 대표적인 제약 조건은 다음과 같습니다.
- 기본 키
- 외래 키
- 고유 키
- 체크
- 기본값
- NOT NULL
기본 키(PRIMARY KEY)는 무엇인가요?
만약 인터넷 사이트에 같은 아이디를 가진 회원이 2명 있다고 가정해보겠습니다. 그렇다면 본인의 아이디 임에도 누구 누구인지 큰 혼란이 될 것입니다. 즉 기본 키란 특정 행을 구별할 수 있는 행(Record)입니다.
기본 키를 사용하는 이유는 무엇인가요?
- 기본 키로 생성한 것은 자동으로 클러스터형 인덱스(책의 페이지 찾는 인덱스)가 생성됩니다. 그러므로 기본 키로 검색하면 행을 더 빠르게 찾을 수 있습니다.
- 기본 키는 Unique와 NOT NULL을 가집니다.
기본 키(PRIMARY KEY)로 만드는 방법은 무엇인가요?
기본 키로 만들기 위해서는 2가지 방법이 있습니다.
2가지 방법 중 하나를 사용하시면 되며 2가지 방법 다 사용하실 경우 에러가 발생합니다.
기본 키 만드는 방법은 아래 코드로 작성하였습니다.
CREATE TABLE buy (
pro_id varchar(10) primary key, -- 방법1
PRIMARY KEY (pro_id) -- 방법2
);
혹은 AUTO_INCREMENT를 사용하는 방법도 있습니다.
게시판 테이블에서 주로 사용하는 방법으로 AUTO_INCREMENT를 사용하면 PK가 됩니다.
외래 키(Foreign Key)는 무엇인가요?
외래 키(Foreign Key) 제약조건은 두 테이블의 사이의 관계를 연결해줍니다. 그렇게 데이터의 무결성을 보장해줍니다. 외래 키가 설정된 열은 반드시 다른 테이블의 기본 키와 연결됩니다.
기본 키-외래 키 관계에 주의하셔야합니다. 기본 키가 있는 테이블을 기준 테이블이며 외래 키가 있는 테이블을 참조 테이블이라고 부릅니다.
왜 외래 키(Foreign Key)를사용하나요?
회원만 구매 가능한 쇼핑몰 사이트가 있다고 가정해보겠습니다. 이때 회원 테이블과 물건 구매 테이블이 필요한데 물건 구매 테이블에는 누가 구매했는지 데이터가 있어야합니다. 이때 누가 구매했는지 물건 구매 테이블의 회원 ID를 회원 테이블의 회원 ID와 외래 키로 연결하면 회원이 구매 했는지 데이터 일관성을 유지할 수 있습니다.
어떻게 외래 키를 사용하나요?
외래 키를 만드는 방법은 다음과 같습니다.
CREATE TABE buy_table (
buyer_id CHAR(8) NOT NULL,
FOREIGN KEY(buyer_id) REFERNCES meber_table(member_id);
);
외래 키 테이블을 삭제할 때는 주의하셔야합니다.
외래 키로 연결된 테이블(기준 테이블)을 삭제하려고 하면 바로 삭제되지 않습니다.
- 회원 테이블(기본 키 테이블)과 구매 테이블(외래 키 테이블)이 있습니다. 이럴 경우 기본 키 테이블 바로 삭제하는게 불가능합니다.
- 구매 테이블(외래 키 테이블)을 먼저 삭제합니다.
- 회원 테이블(기본 키 테이블)을 삭제합니다.
외래 키 테이블과 기본 키 테이블을 동시에 수정 및 삭제하는 방법
코드 | 설명 |
ON UPDATE CASCADE | 기준 테이블의 키를 변경하면 참조 테이블의 열도 함께 자동으로 변경됩니다. |
ON DELETE CASCADE | 기준 테이블의 데이터가 삭제되면 참조 테이블의 데이터도 삭제되는 기능입니다. |
테이블 생성 시 CASCADE 코드 형식은 아래와 같습니다.
create table 테이블이름(
mem_id varchar(10) not null,
FOREIGN key (참조테이블의_mem_id) REFERENCES 기존테이블_이름(기존테이블의_mem_id)
ON UPDATE CASCADE
ON DELETE CASCADE
) ;
이미 생성된 테이블을 ALTER를 활용하여 수정하는 코드 양식은 아래와 같습니다.
ALTER TABLE 테이블_이름
ADD CONSTRAINT
FOREIGN KEY(mem_id) REFERENES member(mem_id)
ON UPDATE CASCADE
ON DELETE CASCADE;
고유 키는 무엇인가요?
고유 키(Unique) 제약조건은 중복되지 않는 유일한 값을 입력해야합니다.
기본 키 제약조건과 비슷하지만 고유 키 제약조건은 NULL 값을 허용합니다.
컬럼 생성 시 컬럼의 데이터 타입 뒤에 작성합니다.
체크는 무엇인가요?
체크(Check) 제약조건은 입력되는 데이터를 점검하는 기능을 합니다.
아래 코드 형식으로 작성하며 두번째 줄의 코드는 예제코드입니다.
CHECK (조건)
CHECK (age >= 18)
기본값은 무엇인가요?
기본값(DEFAULT) 정의는 값을 입력하지 않았을 때 자동으로 입력될 값을 미리 지정해 놓는 방법입니다.
phone_01 VARCHAR(3) DEFAULT '010'; 이런 방법으로 작성합니다.
널 값 허용
NULL 값은 아무 것도 없다는 의미이며 공백("")이나 0과는 다릅니다.
NULL을 허용하려면 생략하거나 NULL이라고 작성합니다.
NULL을 허용하지 않으려면 NOT NULL이라고 작성합니다.
member_address VARCHAR(30) NOT NULL 처럼 사용합니다.
'데이터베이스 > SQL: 정리' 카테고리의 다른 글
[SQL] 인덱스의 개념 정리 (0) | 2024.01.05 |
---|---|
[SQL] 뷰(View) 정리 (0) | 2024.01.04 |
[SQL] 테이블 만드는 방법 정리 (0) | 2024.01.04 |
[SQL] 스토어드 프로시저(함수), PREPARE와 EXECUTE 정리 (0) | 2024.01.04 |
[SQL] 조인 정리: 내부 조인, 외부 조인, 상호 조인, 자체 조인 (0) | 2024.01.03 |