SQL笔记22:高级特性:约束

内容要点

  1. 主键
  2. 外键
  3. 唯一约束
  4. 检查约束

约束

  1. 关系型数据库存储分解为多个表的数据
  2. 每个表存储相应的数据
  3. 利用键建立从一个表到另一个表的引用(引用完整性)

正确的关系型数据库设计,需要保证只在表中插入合法数据,DBMS通过在数据库表上施加约束来实施引用完整性。

主键

主键是一种特殊的约束,表中的一列的值唯一标识表中的每一行。

任意列满足以下条件,都可用于主键:

  1. 任意两行的主键值都不相同
  2. 每行都具有一个主键值
  3. 包含主键值的列从不修改或更新
  4. 主键值不能重用

创建表时定义

CREATE TABLE Vendors
(
	vend_id			CHAR(10) 	NOT NULL PRIMARY KEY,
    vend_name 		CHAR(50)	NOT NULL,
    vend_address 	CHAR(50)    NULL,
    vend_city		CHAR(50)	NULL,
    vend_state  	CHAR(5)	    NULL,
    vend_zip		CHAR(10)	NULL,
    vend_country 	CHAR(50)	NULL
);

添加关键字PRIMARY KEY,使其成为主键

使用CONSTRAINT语法

ALTER TABLE Vendors
ADD CONSTRAINT PRIMARY KEY (vend_id);

也可以用于CREATE TABLE 。

外键

  1. 外键是表中的一列,其值必须列在另一表的主键中
  2. 外键是保证引用完整性的及其重要部分

创建表时定义

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)
);

使用REFERENCES关键字

使用CONSTRAINT语法

ALTER TABLE Orders
ADD CONSTRAINT
FOREIGN KEY (cust_id) REFERENCES Customers(cust_id);

同上。

唯一约束

唯一约束用来保证一列中的数据时唯一的,类似于主键,但存在以下差别:

  1. 表中可包含多个唯一约束,但只允许一个主键
  2. 唯一约束列可包含NULL
  3. 唯一约束列可修改或更新
  4. 唯一约束列的值可重复使用
  5. 与主键不同,唯一约束不能用来定义外键

定义唯一约束

  1. 使用UNIQUE关键字定义
  2. 使用单独的CONSTRAINT定义

检查约束

检查约束用来保证列中的数据满足一组特定的条件。
常见用途:

  1. 检查最小或最大值
  2. 指定范围
  3. 只允许特定的值

数据类型限制了列中可保存的数据的类型,检查约束在数据类型内又做了进一步的限制,不需要依赖客户端或用户来保证正确获取它,DBMS本身将拒绝无效数据。

例1

CREATE TABLE OrderItems
(
	order_num 	INTEGER 		NOT NULL,
    order_item	INTEGER 		NOT NULL,
    prod_id		CHAR(10)		NOT NULL,
    quantity	INTEGER			NOT NULL CHECK (quantity>0),
    item_price	DECIMAL(8,2)	NOT NULL
)

任何插入的行都会被检查,保证quantity大于0

例2

ADD CONSTRAINT CHECK (gender LIKE '[MF]');

使用CONSTRAINT语法添加检查约束,使gender的值为M或F。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值