728x90
NOT NULL | 값이 항상 있어야함. null이면 안 된다. |
UNIQUE | 해당 컬럼은 중복되는 값이 있어선 안 된다. 유일한 값으로 존재해야 함. |
PRIMARY KEY | 테이블을 대표하는 컬럼. NOT NULL + UNIQUE 제약조건이 들어감. |
FOREIGN KEY | 참조하는 테이블에 존재하는 값만 사용 가능 |
CHECK | 주어진 조건에 해당하는 값만 입력 가능 |
DEFAULT | 기본값 지정 |
NOT NULL
CREATE TABLE member (
id BIGINT(20) NOT NULL,
name VARCHAR(255) NOT NULL,
birth DATE,
primary key (id)
);
- INSERT 시 id와 name은 null값이 들어갈 수 없다
- 기본값은 nullable(null을 넣을 수 있음)이므로, birth는 null이 될 수 있다.
UNIQUE
CREATE TABLE member (
id BIGINT(20) NOT NULL,
name VARCHAR(255) UNIQUE,
primary key (id)
);
CREATE TABLE member (
id BIGINT(20),
name VARCHAR(255),
primary key (id)
unique key (name);
);
CREATE TABLE member (
id BIGINT(20),
name VARCHAR(255),
primary key (id)
constraint name_unq unique key (name);
);
- 테이블에는 중복되는 name이 없다.
- insert, update 시 같은 값을 넣으려고 하면 오류남
- null은 UNIQUE 제약이 적용되지 않는다. null은 중복 가능
PRIMARY KEY
CREATE TABLE member (
id BIGINT(20),
name VARCHAR(255),
primary key (id)
);
- member 테이블을 대표하는 id
- primary key로 테이블의 데이터를 식별할 수 있다. 테이블에서 유일한 값임
- NOT NULL + UNIQUE 속성을 가진다.
FOREIGN KEY
CREATE TABLE `child` (
`id` INT(11) NOT NULL,
`id1` INT(11) NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (`id1`) REFERENCES `parent` (`id1`) on delete cascade
)
- 다른 테이블을 참조함
- 외래키는 중복가능
CHECK
CREATE TABLE old_member (
id BIGINT(20),
age int,
primary key (id),
CHECK (age > 10)
);
- 10살 이상인 사람들만 insert 가능
- > >= < <= = AND OR 사용가능
DEFAULT
CREATE TABLE Test (
ID INT,
Name VARCHAR(30) DEFAULT 'Anonymous',
ReserveDate DATE,
RoomNum INT
);
- 이름을 설정하지 않으면 디폴트로 Anonymous 가 저정됨
참고:
728x90
'database > MySQL' 카테고리의 다른 글
[MySQL] Unique index와 Primary key 차이 (1) | 2024.02.12 |
---|---|
[MySQL] MySQL의 데이터 압축 방법 공부 (1) | 2024.01.28 |
workbench 프로그램 안켜지는 문제 (0) | 2023.09.09 |
MySQL Workbench 8.0.29 설치하기(Windows x86, 64-bit) (5) | 2022.07.07 |
visual studio code에서 MySQL 사용하기 (5) | 2022.07.06 |