在数据库设计中,维护数据的完整性是至关重要的。SQL Server 提供了多种机制来保证数据的准确性和一致性。本文将详细介绍主键、外键、检查约束和默认值,并提供相应的SQL脚本来展示它们的使用。
主键(Primary Key)
主键是一列或列的组合,其值能唯一标识表中的每一行。主键不能包含NULL值,并且每个表只能有一个主键。
示例脚本:
创建一个包含主键的 Customers 表:
CREATE TABLE Customers (
CustomerID INT NOT NULL,
Name VARCHAR(100) NOT NULL,
Email VARCHAR(100) NOT NULL,
CONSTRAINT PK_Customers PRIMARY KEY (CustomerID)
);
示例数据:
CustomerID | Name | |
1 | Alice | alice@example.com |
2 | Bob | bob@example.com |
-- 插入Customers表数据
INSERT INTO Customers (CustomerID, Name, Email)
VALUES (1, 'Alice', 'alice@example.com'),
(2, 'Bob', 'bob@example.com');
外键(Foreign Key)
外键是一列或列的组合,它指向另一个表的主键,以此来建立两个表之间的关系,并确保参照完整性。
示例脚本:
创建一个包含外键的 Orders 表,CustomerID 是外键,它引用 Customers 表的主键。
CREATE TABLE Orders (
OrderID INT NOT NULL,
CustomerID INT,
OrderDate DATE NOT NULL,
TotalAmount DECIMAL(10, 2) NOT NULL,
CONSTRAINT PK_Orders PRIMARY KEY (OrderID),
CONSTRAINT FK_Orders_Customers FOREIGN KEY (CustomerID)
REFERENCES Customers (CustomerID)
);
示例数据:
OrderID | CustomerID | OrderDate | TotalAmount |
100 | 1 | 2023-01-10 | 2000.00 |
101 | 2 | 2023-01-11 | 800.00 |
-- 插入Orders表数据
INSERT INTO Orders (OrderID, CustomerID, OrderDate, TotalAmount)
VALUES (100, 1, '2023-01-10', 2000.00),
(101, 2, '2023-01-11', 800.00);
检查约束(Check Constraint)
检查约束确保列中的数据满足指定的条件,它可以用来验证数据的有效性。
示例脚本:
在 Products 表的 Price 列上添加检查约束,以确保价格不会小于0。
CREATE TABLE Products (
ProductID INT NOT NULL,
Name VARCHAR(100) NOT NULL,
Price DECIMAL(10, 2) NOT NULL,
CONSTRAINT PK_Products PRIMARY KEY (ProductID),
CONSTRAINT CHK_Products_Price CHECK (Price >= 0)
);
示例数据:
ProductID | Name | Price |
1 | Laptop | 1200.00 |
2 | Mouse | 20.00 |
默认值(Default Value)
默认值为列定义了一个默认数据值。如果在插入行时未指定列值,则会自动使用默认值。
示例脚本:
在 Orders 表的 Status 列上添加默认值约束,使得新订单的默认状态为 Processing。
ALTER TABLE Orders
ADD Status VARCHAR(50) NOT NULL CONSTRAINT DF_Orders_Status DEFAULT 'Processing';
示例数据:
OrderID | CustomerID | OrderDate | TotalAmount | Status |
100 | 1 | 2023-01-10 | 2000.00 | Processing |
101 | 2 | 2023-01-11 | 800.00 | Shipped |
总结
数据完整性是确保数据库信息准确无误的关键。通过正确地应用主键、外键、检查约束和默认值,我们可以有效地控制数据的输入和维护,保证数据的质量。主键提供了一种唯一标识每行数据的方法,外键帮助保持表之间的参照完整性,检查约束确保数据满足特定的规则,而默认值则简化了数据的输入过程。有效使用这些工具能够大大提升数据库的健壮性和可靠性。