Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm cách nào để thêm cột NOT NULL trong MySQL?


Bạn có thể thêm cột không rỗng tại thời điểm tạo bảng hoặc bạn có thể sử dụng cột đó cho bảng hiện có.

Trường hợp 1 - Thêm cột không rỗng tại thời điểm tạo bảng. Cú pháp như sau

CREATE TABLE yourTableName
(
   yourColumnName1 dataType NOT NULL,
   yourColumnName2 dataType
   .  
   .
   .
   N
);

Truy vấn để tạo bảng như sau

mysql> create table NotNullAtCreationOfTable
   -> (
   -> Id int not null,
   -> Name varchar(100)
   -> );
Query OK, 0 rows affected (0.60 sec)

Trong bảng trên, chúng ta đã khai báo Id là kiểu int không nhận giá trị NULL. Nếu bạn chèn giá trị NULL, bạn sẽ gặp lỗi.

Lỗi như sau

mysql> insert into NotNullAtCreationOfTable values(NULL,'John');
ERROR 1048 (23000): Column 'Id' cannot be null

Chèn một giá trị khác NULL. Điều đó có thể chấp nhận được

mysql> insert into NotNullAtCreationOfTable values(1,'Carol');
Query OK, 1 row affected (0.13 sec)

Hiển thị các bản ghi từ bảng bằng cách sử dụng câu lệnh select. Truy vấn như sau

mysql> select *from NotNullAtCreationOfTable;

Sau đây là kết quả

+----+-------+
| Id | Name  |
+----+-------+
|  1 | Carol |
+----+-------+
1 row in set (0.00 sec)

Trường hợp 2 - Thêm một cột không rỗng trong bảng hiện có. Cú pháp như sau

ALTER TABLE yourTableName ADD yourColumnName NOT NULL

Truy vấn để tạo bảng như sau

mysql> create table AddNotNull
   -> (
   -> Id int,
   -> Name varchar(100)
   -> );
Query OK, 0 rows affected (1.43 sec)

Đây là truy vấn để thêm một cột không rỗng trong bảng hiện có bằng cách sử dụng lệnh thay đổi.

Truy vấn để thay đổi một cột thành cột không rỗng như sau. Ở đây chúng ta sẽ thêm cột Tuổi có ràng buộc NOT NULL.

mysql> alter table AddNotNull add Age int not null;
Query OK, 0 rows affected (0.44 sec)
Records: 0 Duplicates: 0 Warnings: 0

Bây giờ bạn có thể kiểm tra mô tả của bảng bằng lệnh desc. Truy vấn như sau

mysql> desc AddNotNull;

Sau đây là kết quả

+-------+--------------+------+-----+---------+-------+
| 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)

Chúng ta hãy thử chèn giá trị NULL vào cột Tuổi. Nếu bạn cố gắng chèn giá trị NULL vào cột Tuổi, bạn sẽ gặp lỗi.

Truy vấn để chèn bản ghi như sau

mysql> insert into AddNotNull values(1,'John',NULL);
ERROR 1048 (23000): Column 'Age' cannot be null

Bây giờ chèn bản ghi khác. Điều đó sẽ không gây ra lỗi

mysql> insert into AddNotNull values(NULL,NULL,23);
Query OK, 1 row affected (0.22 sec)

Bây giờ bạn có thể hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select. Truy vấn như sau

mysql> select *from AddNotNull;

Sau đây là kết quả

+------+------+-----+
| Id   | Name | Age |
+------+------+-----+
| NULL | NULL | 23 |
+------+------+-----+
1 row in set (0.00 sec)