컬럼 만들 때 제약조건을 걸어둘 수 있다.
CREATE TABLE new_table (
id INT NOT NULL,
이름 VARCHAR(100) NOT NULL,
나이 INT
)
컬럼 만들 때 우측에 NOT NULL을 체크해주면 NULL 금지라는 제약을 걸 수 있다.
까먹고 데이터를 넣지 않으면 저장이 되지 않는다.
CREATE TABLE new_table (
id INT,
이름 VARCHAR(100) UNIQUE,
나이 INT
)
컬럼 만들 때 우측에 UNIQUE를 체크해주면 그 컬럼 안에선 각 행이 다른 데이터를 가지고 있어야 한다.
중복되는 데이터가 있을 수 없다.

이름에 unique 제약이 걸려있으므로 위의 테이블은 저장할 수 없다.
CREATE TABLE new_table (
id INT,
이름 VARCHAR(100),
나이 INT,
UNIQUE(이름, 나이)
)
위와 같이 UNIQUE 제약을 걸 수도 있는데

이렇게 이름과 나이가 둘 다 같은 값으로 중복되어야만 저장을 막을 수 있다.
CREATE TABLE new_table (
id INT,
이름 VARCHAR(100),
나이 INT CHECK (나이 > 0),
)
컬럼 만들 때 우측에 CHECK()을 넣으면 컬럼에 들어갈 값에 제약을 둘 수 있다.
등호, 부등호, AND, OR 써서 조건식처럼 입력하면 된다.
IN 연산자도 가능하다.
그래서 위처럼 해놓으면 나이 컬럼에 음수를 넣을 수 없다.

primary key는 각 행을 구분짓기 위해 유니크한 데이터를 담고 있는 컬럼이다.
예를 들자면 위의 테이블 처럼 이름과 학년, 반이 같은 학생이 두 명이 있을 때 학번이 있다면 구분을 할 수 있다.
여기서 학번이 primary key이다.
CREATE TABLE new_table (
id INT PRIMARY KEY,
이름 VARCHAR(100),
나이 INT CHECK (나이 > 0),
)
컬럼 만들 때 우측에 PRIMARY KEY라고 표기하면 그 컬럼은 PRIMARY KEY가 되고 NOT NULL과 UNIQUE 제약조건이 자동으로 부여된다.
CREATE TABLE new_table (
id INT AUTO_INCREMENT PRIMARY KEY,
이름 VARCHAR(100),
나이 INT,
)
넣어두면 테이블에 행이 추가될 때 자동으로 알아서 1씩 증가된 값이 부여된다.
테이블의 마지막 행에 id가 100으로 기록되어있다면 새로 행을 추가했을 때 알아서 id를 101로 설정해준다.
PRIMARY KEY 조건 넣을 때 자주 함께 사용된다.
CREATE TABLE new_table (
id INT,
이름 VARCHAR(100),
나이 INT,
PRIMARY KEY (id),
CHECK(나이 > 10)
)
제약조건 줄 때 밑에 써도 된다.
CREATE TABLE new_table (
id INT,
이름 VARCHAR(100),
나이 INT,
CONSTRAINT 제약조건작명 PRIMARY KEY (id),
CONSTRAINT 제약조건작명2 CHECK(나이 > 10)
)
제약조건마다 작명을 하고싶다면 CONSTRAINTS 문법을 쓰면 된다. 장점은 에러가 났을 때 제약조건이름을 알려줘서 버그를 쉽게 찾을 수 있다.
(참고) 이미 있는 컬럼에 제약을 추가하고 싶으면
ALTER TABLE 테이블명 MODIFY 컬럼명 int NOT NULL;
ALTER TABLE을 사용하면 된다.
위 코드는 기존 컬럼에 NOT NULL이 추가된다.