1.引言
在SQL Server中,设置默认值是一个非常有用的特性。通过设置默认值,您可以在插入新行时省略某些列的值,使得数据表操作变得更加高效和方便。在本文中,我们将探讨SQL Server设置默认值的威力。
2.默认值介绍
默认值是指针对某个列的默认值,如果在插入新行时,该列的值没有被提供,则数据库会使用该列的默认值。默认值可以指定为一个常量值、一个表达式或一个系统函数,例如GETDATE()。
以下是一个示例表,该表包含三个列:id、name和age,其中age列设置了默认值为18:
CREATE TABLE demo (
id int PRIMARY KEY,
name varchar(50),
age int DEFAULT 18
);
在使用INSERT语句插入新行时,您可以省略age列的值,如下所示:
INSERT INTO demo
(id, name)
VALUES
(1, 'Tom');
SQL Server 将自动使用age列的默认值18来填充这一列。
3.默认值的用途
3.1 省略列的值
默认值最常见的用途就是省略某些列的值,使得插入操作更加方便。
例如,假设您正在开发一个代码库,用于存储GitHub上的项目信息。每当用户使用您的代码库添加新项目时,您都需要向数据库中插入一行记录。大多数情况下,用户只会提供最重要的信息,例如项目名称和作者名称。其他信息,例如项目的创建时间和最近更新时间,可以使用默认值来填充:
CREATE TABLE projects (
id int PRIMARY KEY,
name varchar(50),
author varchar(50),
created datetime DEFAULT GETDATE(),
updated datetime DEFAULT GETDATE()
);
在执行INSERT语句时,用户只需要提供id、name和author列的值,如下所示:
INSERT INTO projects
(id, name, author)
VALUES
(1, 'My Project', 'John Doe');
SQL Server会自动使用系统函数GETDATE()的返回值填充created和updated列。
3.2 保证数据的一致性
使用默认值还可以帮助您保证数据的一致性。例如,假设您正在开发一个招聘网站,用于存储招聘信息。当您向数据库中插入新行时,可以使用默认值来填充一些必需的信息,从而确保每个记录都具有相同的信息样式:
CREATE TABLE job_posts (
id int PRIMARY KEY,
title varchar(50),
description varchar(500),
created datetime DEFAULT GETDATE(),
location varchar(50) DEFAULT '中国'
);
在上面的示例中,location列设置了默认值为“中国”。这意味着,即使用户没有在发布招聘信息时提供位置信息,每个职位都会被标记为位于中国。
4.修改默认值
如果您想修改表中某个列的默认值,可以使用ALTER TABLE语句:
ALTER TABLE table_name
ALTER COLUMN column_name SET DEFAULT new_default_value;
例如,如果您想将上面示例表中的age列的默认值更改为21,您可以执行以下代码:
ALTER TABLE demo
ALTER COLUMN age SET DEFAULT 21;
现在,如果您省略了age列的值,在插入新行时,将使用默认值21。
5.删除默认值
要删除某个列的默认值,可以使用以下ALTER TABLE语句:
ALTER TABLE table_name
ALTER COLUMN column_name DROP DEFAULT;
例如,如果您想从上面示例表中删除age列的默认值,可以执行以下代码:
ALTER TABLE demo
ALTER COLUMN age DROP DEFAULT;
现在,如果您省略了age列的值,在插入新行时,将不会使用默认值。相反,SQL Server 将会抛出一个错误。
6.结论
在SQL Server中,设置默认值是一种非常有用的技巧,可以使插入操作更加方便和高效。通过使用默认值,您可以省略某些列的值,使得插入表的新行变得更加容易和一致。默认值可以指定为常量值、表达式或系统函数。
此外,您还可以使用ALTER TABLE语句更改或删除某列的默认值。