SQL 如何使用NOT NULL
在本篇SQL文章中,您将学习在结构化查询语言中如何对列使用NOT NULL。
什么是NOT NULL约束?
NOT NULL是SQL中的约束,它不允许您在指定的列中插入NULL值。
如果在表中某一列被定义为NOT NULL约束,我们将无法在表中插入新记录而不给该列添加值。
以下语法在创建表时添加NOT NULL约束:
CREATE TABLE Table_Name
(
Column_Name_1 DataType (character_size of the column_1) NOT NULL,
Column_Name_2 DataType (character_size of the column_2) NOT NULL,
Column_Name_3 DataType (character_size of the column_3) NOT NULL,
........,
Column_Name_N DataType (character_size of the column_N) NOT NULL,
) ;
我们可以在一个SQL表中对一个或多个列定义NOT NULL约束。
当表已经存在时,以下语法将向列添加NOT NULL约束:
ALTER TABLE Table_Name ALTER COLUMN Column_Name datatype NOT NULL;
如果您想在表创建时使用NOT NULL约束,请按照以下步骤操作:
- 创建新数据库
- 创建新表并添加NOT NULL
- 查看表结构
第1步:创建简单的新数据库
首先,您需要在结构化查询语言中创建一个新数据库。
以下查询将创建Fortis_Hospital数据库:
CREATE Database Fortis_Hospital;
第2步:创建新表并添加NOT NULL
以下查询在Fortis_Hospital数据库中创建Doctor_Info表,并在表的Doctor_ID列上添加NOT NULL约束条件:
CREATE TABLE Doctor_Info
(
Doctor_ID INT NOT NULL,
Doctor_Name VARCHAR (100),
Doctor_Specialist VARCHAR (80),
Doctor_GenderVarchar (20),
Doctor_Country Varchar (80)
) ;
以下CREATE TABLE查询添加了Doctor_Info表的每个列的NOT NULL约束:
CREATE TABLE Doctor_Info
(
Doctor_ID INT NOT NULL,
Doctor_Name VARCHAR (100) NOT NULL,
Doctor_Specialist VARCHAR (80) NOT NULL,
Doctor_GenderVarchar (20) NOT NULL,
Doctor_Country Varchar (80) NOT NULL
) ;
第3步:查看表结构
以下查询描述了Doctor_Info表的结构:
DESC Doctor_Info;
输出:
Field | Type | NULL | Key | Default | Extra |
---|---|---|---|---|---|
Doctor_ID | INT | NO | - | NULL | - |
Doctor_Name | INT | NO | - | NULL | - |
Doctor_Specialist | Varchar(20) | NO | - | NULL | - |
Doctor_Gender | Varchar(20) | NO | - | NULL | - |
Doctor_Country | INT | N0 | - | NULL | - |
删除表中的NOT NULL约束
使用ALTER语句的MODIFY关键字,允许数据库用户从表的列中删除NOT NULL约束。
如果您想从SQL表中删除NOT NULL约束,可以使用以下语法进行删除:
ALTER TABLE Table_Name MODIFY Column_Name Datatype [size] NULL;
以下查询从Doctor_Info表的Doctor_Country列中删除非空约束:
ALTER TABLE Doctor_Info MODIFY Doctor_Country Varchar[80] NULL;
为了检查上述ALTER查询的结果,您需要输入以下DESC命令,该命令描述了Doctor_Info表的结构:
DESC Doctor_Info;
输出:
Field | Type | NULL | Key | Default | Extra |
---|---|---|---|---|---|
Doctor_ID | INT | NO | - | NULL | - |
Doctor_Name | INT | NO | - | NULL | - |
Doctor_Specialist | Varchar(20) | NO | - | NULL | - |
Doctor_Gender | Varchar(20) | NO | - | NULL | - |
Doctor_Country | INT | Yes | - | NULL | - |
如我们在上面的SQL表中可以看到,Doctor Country字段的NULL列的值为Yes,这表明Doctor_Country列将接受NULL值。
向现有表添加NOT NULL约束。
任何数据库用户都可以通过使用SQL ALTER TABLE语法轻松地向现有表添加NOT NULL约束。
向现有表添加NOT NULL约束的语法:
ALTER TABLE Table_Name MODIFY Column_Name Datatype [size] NOT NULL;
以下SQL语句将NOT NULL约束条件定义到Doctor_Info表上:
ALTER TABLE Doctor_Info MODIFY Doctor_Country Varchar[80] NOT NULL;
要检查上述ALTER查询的结果,请键入以下DESC命令来查看Doctor_Info表的结构:
DESC Doctor_Info;
输出:
Field | Type | NULL | Key | Default | Extra |
---|---|---|---|---|---|
Doctor_ID | INT | NO | - | NULL | - |
Doctor_Name | INT | NO | - | NULL | - |
Doctor_Specialist | Varchar(20) | NO | - | NULL | - |
Doctor_Gender | Varchar(20) | NO | - | NULL | - |
Doctor_Country | INT | N0 | - | NULL | - |