테이블 생성 시 null이 아닌 열을 추가하거나 기존 테이블에 사용할 수 있습니다.
사례 1 − 테이블 생성 시 not null 컬럼을 추가한다. 구문은 다음과 같습니다.
CREATE TABLE yourTableName ( yourColumnName1 dataType NOT NULL, yourColumnName2 dataType . . . N );
테이블 생성 쿼리는 다음과 같습니다.
mysql> create table NotNullAtCreationOfTable -> ( -> Id int not null, -> Name varchar(100) -> ); Query OK, 0 rows affected (0.60 sec)
위의 표에서는 NULL 값을 받지 않는 int 타입으로 Id를 선언했습니다. NULL 값을 넣으면 오류가 발생합니다.
오류는 다음과 같습니다.
mysql> insert into NotNullAtCreationOfTable values(NULL,'John'); ERROR 1048 (23000): Column 'Id' cannot be null
NULL 이외의 값을 삽입하십시오. 그것은 받아 들일 수 있습니다
mysql> insert into NotNullAtCreationOfTable values(1,'Carol'); Query OK, 1 row affected (0.13 sec)
select 문을 사용하여 테이블의 레코드를 표시합니다. 쿼리는 다음과 같습니다
mysql> select *from NotNullAtCreationOfTable;
다음은 출력입니다.
+----+-------+ | Id | Name | +----+-------+ | 1 | Carol | +----+-------+ 1 row in set (0.00 sec)
사례 2 − 기존 테이블에 null이 아닌 열을 추가합니다. 구문은 다음과 같습니다.
ALTER TABLE yourTableName ADD yourColumnName NOT NULL
테이블 생성 쿼리는 다음과 같습니다.
mysql> create table AddNotNull -> ( -> Id int, -> Name varchar(100) -> ); Query OK, 0 rows affected (1.43 sec)
다음은 alter 명령을 사용하여 기존 테이블에 not null 열을 추가하는 쿼리입니다.
컬럼을 not null 컬럼으로 변경하는 쿼리는 다음과 같다. 여기에 NOT NULL 제약 조건이 있는 Age 열을 추가합니다.
mysql> alter table AddNotNull add Age int not null; Query OK, 0 rows affected (0.44 sec) Records: 0 Duplicates: 0 Warnings: 0
이제 desc 명령을 사용하여 테이블의 설명을 확인할 수 있습니다. 쿼리는 다음과 같습니다
mysql> desc AddNotNull;
다음은 출력입니다.
+-------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+-------+ | Id | int(11) | YES | | NULL | | | Name | varchar(100) | YES | | NULL | | | Age | int(11) | NO | | NULL | | +-------+--------------+------+-----+---------+-------+ 3 rows in set (0.08 sec)
Age 열에 NULL 값을 삽입해 보겠습니다. Age 열에 NULL 값을 삽입하려고 하면 오류가 발생합니다.
레코드를 삽입하는 쿼리는 다음과 같습니다.
mysql> insert into AddNotNull values(1,'John',NULL); ERROR 1048 (23000): Column 'Age' cannot be null
이제 다른 레코드를 삽입하십시오. 오류가 발생하지 않습니다.
mysql> insert into AddNotNull values(NULL,NULL,23); Query OK, 1 row affected (0.22 sec)
이제 select 문을 사용하여 테이블의 모든 레코드를 표시할 수 있습니다. 쿼리는 다음과 같습니다
mysql> select *from AddNotNull;
다음은 출력입니다.
+------+------+-----+ | Id | Name | Age | +------+------+-----+ | NULL | NULL | 23 | +------+------+-----+ 1 row in set (0.00 sec)