제약 조건
- 제약 조건(constraint) : 데이터의 무결성을 지키기 위해 제한하는 조건
- 무결성 : 데이터에 결함이 없음
- 기본 키 제약 조건
- 기본 키(Primary Key) : 많은 행 데이터에서 데이터를 구분할수 있는 식별자
- 특징
- NULL 값이 입력될 수 없음
- 테이블은 기본키를 1개만 가질 수 있음
CREATE TABLE member(
mem_id CHAR(8) NOT NULL PRIMARY KEY,
mem_name VARCHAR(10) NOT NULL,
height TINYINT UNSIGNED NULL
);
CREATE TABLE member(
mem_id CHAR(8) NOT NULL,
mem_name VARCHAR(10) NOT NULL,
height TINYINT UNSIGNED NULL,
PRIMARY KEY (mem_id)
);
CREATE TABLE member(
mem_id CHAR(8) NOT NULL,
mem_name VARCHAR(10) NOT NULL,
height TINYINT UNSIGNED NULL
);
ALTER TABLE member
ADD CONSTRAINT
PRIMARY KET (mem_id);
- 외래 키 제약조건
- 외래 키(Foreign Key) : 두 테이블 사이의 관계를 연결해주고, 그 결과 데이터의 무결성을 보장해주는 역할
- 회원 테이블(기준 테이블)과 구매 테이블(참조 테이블)이 대표적인 기본 키-외래 키 관계
- 특징
- 참조 테이블이 참조하는 기준 테이블의 열은 반드시 기본 키나, 고유 키로 설정되어 있어야함
- 외래키의 형식 : FOREIGN KEY(열_이름) REFERENCES 기준_테이블(열_이름)
- 기준 테이블의 열이 Primary Key 또는 Unique가 아니라면 외래 키 관계는 설정되지 않음
CREATE TABLE member(
mem_id CHAR(8) NOT NULL PRIMARY KEY,
mem_name VARCHAR(10) NOT NULL,
height TINYINT UNSIGNED NULL
);
CREATE TABLE buy(
num INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
mem_id CHAR(8) NOT NULL,
prod_name CHAR(6) NOT NULL,
FOREIGN KEY(mem_id) REFERENCES member(mem_id)
)
CREATE TABLE member(
mem_id CHAR(8) NOT NULL PRIMARY KEY,
mem_name VARCHAR(10) NOT NULL,
height TINYINT UNSIGNED NULL
);
ALTER TABLE member
ADD CONSTRAINT
FOREIGN KEY(mem_id)
REFERENCES member(mem_id);
- 기본 키-외래 키로 맺어진 후에는 기준 테이블의 열 이름이 변경되지 않음(삭제 또한 불가능)
- 이를 해결하기 위해 ON UPDATE CASCADE 문을 활용
CREATE TABLE member(
mem_id CHAR(8) NOT NULL PRIMARY KEY,
mem_name VARCHAR(10) NOT NULL,
height TINYINT UNSIGNED NULL
);
ALTER TABLE member
ADD CONSTRAINT
FOREIGN KEY(mem_id)
REFERENCES member(mem_id)
ON UPDATE CASCADE
ON DELETE CASCADE
;
- 고유키 제약조건
- 고유 키(Unique) : 중복되지 않은 유일한 값을 입력
- 기본 키 제약조건과 비슷하지만, 차이점은 고유 키 제약조건은 NULL을 허용
CREATE TABLE member(
mem_id CHAR(8) NOT NULL PRIMARY KEY,
mem_name VARCHAR(10) NOT NULL,
height TINYINT UNSIGNED NULL,
email CHAR(30) NULL UNIQUE
);
- 체크 제약조건
- 체크(Check) : 입력되는 데이터를 점검하는 기능
CREATE TABLE member(
mem_id CHAR(8) NOT NULL PRIMARY KEY,
mem_name VARCHAR(10) NOT NULL,
height TINYINT UNSIGNED NULL CHECK (height >= 100)
);
ALTER TABLE member
ADD CONSTRAINT
CHECK (phone1 IN ('02', '031'))
;
- 기본값 정의
- 값을 입력하지 않았을때, 자동으로 입력될 값을 미리 지정하는 방법
CREATE TABLE member(
mem_id CHAR(8) NOT NULL PRIMARY KEY,
mem_name VARCHAR(10) NOT NULL,
height TINYINT UNSIGNED NULL DEFAULT 160
phone1 CHAR(3) NULL
);
ALTER TABLE member
ALTER COLUMN phone1 SET DEFAILT '02'
;
INSERT INTO member VALUES('RED', '레드', 161, default)
가상의 테이블 : 뷰
- 뷰(view) : 데이터베이스 개체 중에 하나
- 단순 뷰 : 하나의 테이블과 연관된 뷰
- 복합 뷰 : 2개 이상의 테이블과 연관된 뷰
- 특징
- 테이블처럼 데이터를 가지고 있지 않음
- 뷰의 실체는 SELECT 문으로 만들어져 있기 때문에 뷰에 접근하는 순간 SELECT가 실행되고 그 결과가 화면에 출력 되는 방식
- '바로 가기 아이콘'과 비슷
- 뷰의 이름만 보고도 뷰인지를 알아볼 수 있도록 이름 앞에 v_를 붙이는 것이 일반적
- 뷰를 사용하는 이유
- 보안에 도움이 됨
- 복잡한 SQL을 단순하게 만듬
- 뷰의 생성
- CREATE VIEW 뷰_이름
- CREATE OR REPLACE VIEW는 기존에 뷰가 있어도 덮어씀
CREATE VIEW 뷰_이름
AS
SELECT 문;
SELECT 열_이름 FROM 뷰_이름
[WHERE 조건];
- 뷰의 수정
ALTER VIEW 뷰_이름
AS
SELECT 문;
- 뷰의 삭제
DROP VIEW 뷰_이름;
- 뷰의 정보 확인
DESCRIBE v_viewtest2;