如何区分代码中的check是列级完整性约束还是表级完整性约束
时间: 2024-10-17 20:04:15 浏览: 15
在数据库设计中,检查(Check)通常用于定义数据完整性规则,以确保存储的数据满足特定条件。区分类别级(Column-Level)完整性约束和表级(Table-Level)完整性约束主要看它们的作用范围:
1. **列级完整性约束**(也称为字段级约束):这类约束应用于单个列或一组相关的列。例如,在SQL中,你可以使用`NOT NULL`, `CHECK`, 或者`DEFAULT`等关键字来限制某个字段的值。比如规定某个日期字段不允许为空,或者数值字段只能在特定范围内。
```sql
CREATE TABLE Employees (
ID INT NOT NULL,
Name VARCHAR(50) CHECK (Name <> ''),
Salary DECIMAL(10, 2) CHECK (Salary > 0)
);
```
在这里,`Name <> ''` 和 `Salary > 0` 就是列级完整性约束。
2. **表级完整性约束**(也称为全局约束):它们影响整个表的结构。通常涉及到多个列,甚至涉及所有行,如唯一键(UNIQUE)、外键(FOREIGN KEY)、主键(PRIMARY KEY)以及唯一索引(INDEX)。这些约束确保了整个表在整个数据集中的一致性和关联性。
```sql
CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
CustomerID INT,
ProductID INT,
Quantity INT,
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID),
UNIQUE (OrderID, ProductID)
);
```
在这个例子中,`Primary Key` 是主键约束,`Foreign Key` 是外键约束,`UNIQUE` 则表示组合键值不能重复。
阅读全文