技术文章和资源

技术文章(时间排序)

热门类别

Python PHP MySQL JDBC Linux

在 MySQL 中默认添加一个不为空值 NOT NULL 的列?

mysqlmysqli database

为此,您需要删除 default 关键字。语法如下:

ALTER TABLE yourTableName ADD COLUMN yourColumnName dataType NOT NULL AFTER yourColumnName;

为了理解上述语法,让我们创建一个表。创建表的查询如下:

mysql> create table AddingColumnDefaultValueNOTNULL
   -> (
   -> Id int NOT NULL AUTO_INCREMENT,
   -> FirstName varchar(20),
   -> LastName varchar(20),
   -> Age int,
   -> Address varchar(100),
   -> Salary int,
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (0.58 sec)

现在检查表的描述。查询如下:

mysql> desc AddingColumnDefaultValueNOTNULL;

输出结果如下:

+-----------+--------------+------+-----+---------+----------------+
| Field     | Type         | Null | Key | Default | Extra          |
+-----------+--------------+------+-----+---------+----------------+
| Id        | int(11)      | NO   | PRI | NULL    | auto_increment |
| FirstName | varchar(20)  | YES  |     | NULL    |                |
| LastName  | varchar(20)  | YES  |     | NULL    |                |
| Age       | int(11)      | YES  |     | NULL    |                |
| Address   | varchar(100) | YES  |     | NULL    |                |
| Salary    | int(11)      | YES  |     | NULL    |                |
+-----------+--------------+------+-----+---------+----------------+
6 rows in set (0.11 sec)

以下查询用于添加一个默认值为 NOT NULL 的列:

mysql> alter table AddingColumnDefaultValueNOTNULL add column City varchar(20) NOT NULL after Age;
Query OK, 0 rows affected (2.17 sec)
Records: 0 Duplicates: 0 Warnings: 0

现在您可以再次检查表的描述。表将有一个名为"City"的新列,其默认值默认为 NOT NULL。

检查表描述的查询如下:

mysql> desc AddingColumnDefaultValueNOTNULL;

输出结果如下:

+-----------+--------------+------+-----+---------+----------------+
| Field     | Type         | Null | Key | Default | Extra          |
+-----------+--------------+------+-----+---------+----------------+
| Id        | int(11)      | NO   | PRI | NULL    | auto_increment |
| FirstName | varchar(20)  | YES  |     | NULL    |                |
| LastName  | varchar(20)  | YES  |     | NULL    |                |
| Age       | int(11)      | YES  |     | NULL    |                |
| City      | varchar(20)  | NO   |     | NULL    |                |
| Address   | varchar(100) | YES  |     | NULL    |                |
| Salary    | int(11)      | YES  |     | NULL    |                |
+-----------+--------------+------+-----+---------+----------------+
7 rows in set (0.02 sec)

查看 City 字段。在 NULL 列中,值为 NO。这本身就说明我们不能将 City 字段设置为 NULL 值。


相关文章