高级SQL特性
约束(constraint)
管理如何插入或处理数据库数据的规则
主键
主键是一种特殊的约束,它用来保证一个列(或一组列)中的值是唯一的,并且永不改动。
表中任意列只要满足一下条件,都可以用于主键:
1、任意两列的主键值都不相同
2、每行都具有一个主键值(即列中不允许NULL值)
3、包含主键值的列不修改或更新
4、主键值不能重用。如果从表中删除某一行,其主键值不分配给新行。
CREATE TABLE Vendors
(
vend_id CHAR(10) NOT NULL PRIMARY KEY,
vend_name CHAR(30) NOT NULL,
vend_address CHAR(50) NOT NULL
)
给vend_id列定义添加关键字PRIMARY KEY,使其成为主键
ALTER TABLE Vendors
ADD CONSTRAINT PRIMARY KEY (vend_id);
外键
外键是表中的一个列,其值必须在另一表的主键中列出。外键是保证引用完整性的一个极重要的成分。
定义外键的一种方法:
CREATE TABLE Orders
(
order_num INTEGER NOT NULL PRIMARY KEY,
order_date DATETIME NOT NULL,
cust_id CHAR(10) NOT NULL REFERENCES
Customers(cust_id)
);
也可以用ALTER TABLE语句中CONSTRAINT语法来完成
ALTER TABLE Customers
ADD CONSTRAINT
FOREIGN KEY (cust_id) REFERENCES Customers(cust_id)
检查约束
CREATE TABLE OrderItems
(
order_num INTEGER NOT NULL,
order_item INTEGER NOT NULL,
quantity INTEGER NOT NULL CHECK (quantity > 0)
);
索引
创建索引
CREATE INDEX prod_name_ind
ON PRODUCTS (prod_name);
索引必须唯一命名。