SQL 默认值
在SQL中,默认值(Default Value) 是指当向表中插入新记录时,如果未为某列指定值,数据库将自动为该列填充的预定义值。默认值可以简化数据插入操作,确保数据的完整性,并减少人为错误。
默认值的作用
默认值的主要作用包括:
- 简化插入操作:当某些列的值通常是固定的或可预测的,设置默认值可以避免每次插入时都显式指定这些值。
- 确保数据完整性:默认值可以防止某些列因未提供值而出现空值(NULL),从而确保数据的完整性。
- 减少错误:通过设置默认值,可以减少因忘记为某些列赋值而导致的错误。
如何设置默认值
在创建表时,可以使用 DEFAULT
关键字为列指定默认值。以下是一个简单的示例:
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
表中插入一条新记录:
INSERT INTO Employees (EmployeeID, FirstName, LastName)
VALUES (1, 'John', 'Doe');
由于未指定 HireDate
的值,数据库将自动使用当前日期填充该列。查询结果如下:
SELECT * FROM Employees;
EmployeeID | FirstName | LastName | HireDate |
---|---|---|---|
1 | John | Doe | 2023-10-01 |
修改默认值
如果需要在表创建后修改某列的默认值,可以使用 ALTER TABLE
语句。例如,将 HireDate
列的默认值修改为 '2023-01-01'
:
ALTER TABLE Employees
ALTER COLUMN HireDate SET DEFAULT '2023-01-01';
删除默认值
如果需要删除某列的默认值,可以使用以下语句:
ALTER TABLE Employees
ALTER COLUMN HireDate DROP DEFAULT;
实际应用场景
场景1:用户注册表
假设我们有一个用户注册表 Users
,其中包含 RegistrationDate
列。我们希望每次用户注册时,自动记录注册日期:
CREATE TABLE Users (
UserID INT PRIMARY KEY,
Username VARCHAR(50) NOT NULL,
RegistrationDate DATE DEFAULT CURRENT_DATE
);
场景2:订单表
在订单表 Orders
中,我们可以为 OrderStatus
列设置默认值 'Pending'
,表示新订单的初始状态为“待处理”:
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
表中插入一条记录,仅指定 ProductID
和 ProductName
,观察 StockQuantity
的值。