MySQL의 SERIAL에는 NOT NULL이 이미 포함되어 있습니다
MySQL에서 SERIAL은 BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE의 별칭(alias)입니다. 즉, SERIAL 타입에는 NOT NULL 제약 조건이 기본적으로 내장되어 있기 때문에, 컬럼을 정의할 때 SERIAL 뒤에 NOT NULL을 중복해서 작성할 필요가 없습니다.
예제: SERIAL 컬럼을 가진 테이블 생성
다음 예제에서는 “serial”이라는 이름의 컬럼을 가진 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
(
Id serial
);
Query OK, 0 rows affected (0.42 sec)레코드 삽입하기
INSERT 명령어를 사용하여 테이블에 여러 개의 레코드를 삽입합니다. 이때 값을 명시적으로 지정하지 않아도 AUTO_INCREMENT 속성 덕분에 Id 값이 자동으로 채워집니다.
mysql> insert into DemoTable values(); Query OK, 1 row affected (0.24 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.09 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.06 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.09 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.07 sec)
결과 확인하기
SELECT 문을 사용하여 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+----+ | Id | +----+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | +----+ 6 rows in set (0.00 sec)
위 결과에서 확인할 수 있듯이, 값을 지정하지 않고 INSERT를 실행할 때마다 SERIAL로 선언된 Id 컬럼에 1부터 시작하는 고유한 번호가 순차적으로 자동 할당됩니다. 이처럼 SERIAL 하나만으로 NOT NULL, AUTO_INCREMENT, UNIQUE 속성이 모두 적용되므로 코드가 간결해지는 장점이 있습니다.