Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 SERIAL을 컬럼 이름으로 사용하면 'NOT NULL'이 자동으로 포함될까요?

MySQL의 SERIAL에는 NOT NULL이 이미 포함되어 있습니다

MySQL에서 SERIALBIGINT 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 속성이 모두 적용되므로 코드가 간결해지는 장점이 있습니다.