跳到主要内容

SQL 默认值

在SQL中,默认值(Default Value) 是指当向表中插入新记录时,如果未为某列指定值,数据库将自动为该列填充的预定义值。默认值可以简化数据插入操作,确保数据的完整性,并减少人为错误。

默认值的作用

默认值的主要作用包括:

  1. 简化插入操作:当某些列的值通常是固定的或可预测的,设置默认值可以避免每次插入时都显式指定这些值。
  2. 确保数据完整性:默认值可以防止某些列因未提供值而出现空值(NULL),从而确保数据的完整性。
  3. 减少错误:通过设置默认值,可以减少因忘记为某些列赋值而导致的错误。

如何设置默认值

在创建表时,可以使用 DEFAULT 关键字为列指定默认值。以下是一个简单的示例:

sql
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
FirstName VARCHAR(50) NOT NULL,
LastName VARCHAR(50) NOT NULL,
HireDate DATE DEFAULT CURRENT_DATE
);

在这个例子中,HireDate 列的默认值被设置为当前日期(CURRENT_DATE)。如果在插入新记录时未指定 HireDate 的值,数据库将自动使用当前日期填充该列。

插入数据时的默认值

假设我们向 Employees 表中插入一条新记录:

sql
INSERT INTO Employees (EmployeeID, FirstName, LastName)
VALUES (1, 'John', 'Doe');

由于未指定 HireDate 的值,数据库将自动使用当前日期填充该列。查询结果如下:

sql
SELECT * FROM Employees;
EmployeeIDFirstNameLastNameHireDate
1JohnDoe2023-10-01

修改默认值

如果需要在表创建后修改某列的默认值,可以使用 ALTER TABLE 语句。例如,将 HireDate 列的默认值修改为 '2023-01-01'

sql
ALTER TABLE Employees
ALTER COLUMN HireDate SET DEFAULT '2023-01-01';

删除默认值

如果需要删除某列的默认值,可以使用以下语句:

sql
ALTER TABLE Employees
ALTER COLUMN HireDate DROP DEFAULT;

实际应用场景

场景1:用户注册表

假设我们有一个用户注册表 Users,其中包含 RegistrationDate 列。我们希望每次用户注册时,自动记录注册日期:

sql
CREATE TABLE Users (
UserID INT PRIMARY KEY,
Username VARCHAR(50) NOT NULL,
RegistrationDate DATE DEFAULT CURRENT_DATE
);

场景2:订单表

在订单表 Orders 中,我们可以为 OrderStatus 列设置默认值 'Pending',表示新订单的初始状态为“待处理”:

sql
CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
OrderDate DATE DEFAULT CURRENT_DATE,
OrderStatus VARCHAR(20) DEFAULT 'Pending'
);

总结

SQL中的默认值是一个非常有用的功能,它可以帮助我们简化数据插入操作,确保数据的完整性,并减少错误。通过为表中的列设置默认值,我们可以确保在未提供特定值时,数据库会自动填充这些值。

在实际应用中,默认值常用于记录创建时间、设置初始状态等场景。通过合理使用默认值,可以提高数据库操作的效率和可靠性。

附加资源与练习

练习1

创建一个名为 Products 的表,包含以下列:

  • ProductID(主键)
  • ProductName
  • Price
  • StockQuantity(默认值为 0

练习2

Products 表中插入一条记录,仅指定 ProductIDProductName,观察 StockQuantity 的值。

附加资源