在 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 值。