SQL 如何使用DEFAULT
在这篇SQL文章中,您将学习如何在结构化查询语言中使用DEFAULT来处理表格中的列。
什么是DEFAULT约束?
在SQL中,DEFAULT是一种约束,它允许用户将列填充为默认值或固定值。
如果在插入时未给列指定值,则默认值将自动添加到该列。
以下语法为表格创建时的列添加了DEFAULT约束:
CREATE TABLE Table_Name
(
Column_Name_1 DataType (character_size of the column_1) DEFAULT Value,
Column_Name_2 DataType (character_size of the column_2) DEFAULT Value,
Column_Name_3 DataType (character_size of the column_3) DEFAULT Value,
........,
Column_Name_N DataType (character_size of the column_N) DEFAULT Value,
) ;
在SQL DEFAULT语法中,我们必须使用DEFAULT约束来定义值。数据库用户可以轻松地为一个或多个列在一个SQL表中指定DEFAULT约束。
下面的语法在表已经存在时将DEFAULT约束添加到列中:
ALTER TABLE Table_Name ALTER COLUMN Column_Name datatype DEFAULT;
如果您想在创建表格时使用DEFAULT约束,需要按照以下步骤进行操作:
- 创建一个新的数据库
- 创建一个新的表格,并添加DEFAULT约束
- 插入记录
- 查看表格的数据
第1步:创建一个简单的新数据库
首先,您需要在结构化查询语言中创建一个新的数据库。
以下查询在SQL服务器中创建一个名为 Industry 的数据库:
CREATE Database Voting;
第2步:创建新表并添加默认值
以下查询在行业数据库中创建了 Client_Info 表,并向表的 Client_Age 列添加了CHECK约束:
CREATE TABLE Client_Info
(
Client_ID INT NOT NULL PRIMARY KEY,
Client_Name VARCHAR (100),
Client_Gender Varchar(20),
Client_Age INT NOT NULL DEFAULT 18,
Client_Address Varchar (80)
);
第3步:插入数值
以下 INSERT 查询将客户记录插入到 Client_Info 表中:
INSERT INTO Client_Info (Client_ID, Client_Name, Client_Gender, Client_Age, Client_Address) VALUES (1001, Arush, Male, Agra);
INSERT INTO Client_Info (Client_ID, Client_Name, Client_Gender, Client_Age, Client_Address) VALUES (1002, Bulbul, Female, Lucknow);
INSERT INTO Client_Info (Client_ID, Client_Name, Client_Gender, Client_Age, Client_Address) VALUES (1004, Saurabh, Male, 20, Lucknow);
INSERT INTO Client_Info (Client_ID, Client_Name, Client_Gender, Client_Age, Client_Address) VALUES (1005, Shivani, Female, Agra );
INSERT INTO Client_Info (Client_ID, Client_Name, Client_Gender, Client_Age, Client_Address) VALUES (1006, Avinash, Male, 22, Delhi);
INSERT INTO Client_Info (Client_ID, Client_Name, Client_Gender, Client_Age, Client_Address) VALUES (1007, Shyam, Male, Banglore);
第4步:查看表的数据
以下查询显示了Client_Info表的数据。
SELECT * FROM Client_Info;
Client_ID | Client_Name | Client_Gender | Client_Age | Client_Address |
---|---|---|---|---|
1001 | Arush | Male | 18 | Agra |
1002 | Bulbul | Female | 18 | Lucknow |
1004 | Saurabh | Male | 20 | Lucknow |
1005 | Shivani | Female | 18 | Agra |
1006 | Avinash | Male | 22 | Delhi |
1007 | Shyam | Male | 18 | Banglore |
在多个列上添加DEFAULT约束
以下CREATE TABLE查询在Doctor_Info表上指定了多个列上的DEFAULT约束:
CREATE TABLE Doctor_Info
(
Doctor_ID INT NOT NULL PRIMARY KEY,
Doctor_Name VARCHAR (100),
Doctor_Specialist VARCHAR (80) DEFAULT Heart,
Doctor_GenderVarchar (20) DEFAULT Male,
Doctor_Country Varchar (80) DEFAULT Russia
) ;
以下查询将多条医生记录插入到Doctor_Info表中:
INSERT INTO Doctor_Info (Doctor_ID, Doctor_Name, Doctor_Specialist, Doctor_Gender, Doctor_Country) VALUES ( 1035, Jones, U. K.),
(1015, Moris),
(1003, Harry, Fever, U. K.),
(1044, Bella, Female, U. K.),
(1025, Moria);
下面的查询显示了Doctor_Info表的详细信息:
SELECT * FROM Doctor_Info;
Doctor_ID | Doctor_Name | Doctor_Disease | Doctor_Gender | Doctor_Country |
---|---|---|---|---|
1035 | Jones | Heart | Male | U. K. |
1015 | Moris | Heart | Male | Russia |
1003 | Harry | Fever | Male | U. K. |
1044 | Bella | Heart | Female | U. K. |
1025 | Moria | Heart | Male | Russia |
从表中删除DEFAULT约束
使用ALTER TABLE语句的ALTER COLUMN关键字,允许数据库用户从表的列中去除DEFAULT约束。
以下ALTER语法用于从SQL表中移除DEFAULT约束,
ALTER TABLE Table_Name ALTER COLUMN Column_Name DROP DEFAULT;
以下查询从Doctor_Info表的Doctor_Country列中删除了DEFAULT值Russia:
ALTER TABLE Doctor_Info ALTER COLUMN Doctor_Country DROP DEFAULT;
要检查上述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 | - | Heart | - |
Doctor_Gender | Varchar(20) | NO | - | Male | - |
Doctor_Country | INT | Yes | - | NULL | - |
正如我们在上面的Doctor_Info表中看到的那样,Doctor Country字段的DEFAULT列的值为NULL,这表明DEFAULT值已经成功从Doctor_Country列中移除。
向现有表添加DEFAULT约束
数据库用户可以通过在SQL ALTER TABLE语句中使用ADD关键字来轻松地向现有表的列添加DEFAULT值。
以下是在现有表中使用的SQL语法来添加DEFAULT约束:
ALTER TABLE Table_Name ADD CONSTRAINT Constraint_Name DEFAULT Value FOR Column_Name;
以下查询将DEFAULT值添加到Doctor_Info表的Doctor_Country列中,值为INDIA:
ALTER TABLE Doctor_Info ADD CONSTRAINT add_India_default DEFAULT INDIA FOR Doctor_Country;
要检查上述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 | - | Heart | - |
Doctor_Gender | Varchar(20) | NO | - | Male | - |
Doctor_Country | INT | N0 | - | INDIA | - |