约束——外键约束

目录

1.概念

2.语法

(1) 添加约束

(2) 删除约束

创建表 填入内容 

添加外键

删除外键


1.概念

外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性

2.语法

(1) 添加约束

-- 创建表时添加外键约束

CREAT TABLE 表名(

列名 数据类型,

...

[CONSTRA AINT] [外键名称] FOREIGN KEY (外键列名) REFERENCES 主表 (主表列名称)

);
-- 建完表后添加外键约束
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名字) REFERENCES 主表名称(主列表名称);

(2) 删除约束

ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

创建表 填入内容 

添加外键

-- 添加外键dep_id 关联dept 表的id主键
	CONSTRAINT fk_emp1_dept FOREIGN KEY ( dep_id ) REFERENCES dept ( id ) 

即为成功添加外键

删除外键

-- 删除外键
ALTER TABLE emp1 DROP FOREIGN KEY fk_emp1_dept;

和上述操作一样 

 

即为删除成功 

### 主约束约束的作用与应用场景 #### 主约束 (Primary Key Constraint) 主约束是一种用于唯一标识数据库表中每一行记录的机制。它确保每条记录都有唯一的标识符,从而防止重复数据并提供高效的检索能力。 - **作用**: 主约束的主要功能是强制执行实体完整性,即保证表中的每一行都具有唯一性。通过指定某一列或多列为组合主,可以有效避免数据冗余和不一致的情况发生[^1]。 - **用途**: 主通常应用于需要快速查找特定记录的场景。例如,在订单管理系统中,`order_id` 可以作为主,以便于追踪每一个具体的订单详情。此,主还常与其他表建立关联关系的基础条件之一,比如在设计中充当参照对象。 ```sql CREATE TABLE orders ( order_id INT PRIMARY KEY, customer_name VARCHAR(100), total_amount DECIMAL(10,2) ); ``` --- #### 约束 (Foreign Key Constraint) 约束主要用于维护两个或多个表格之间的参照完整性。它是实现关系型数据库核心理念——规范化的重要工具。 - **作用**: 它规定了一个表中的某些字段必须匹配另一个表中的主值或其他唯一值。这样做的目的是为了保障跨表间的数据一致性以及减少孤立数据的存在可能性[^2]。 - **具体行为模式**: - `CASCADE`: 当父表中的某一行被更新或者删除时,所有依赖它的子表相应行也会同步更改或移除。 - `SET NULL`: 若允许NULL值存在的情况下,当父项被删去之后,相关联的子项目会被置为空状态。 - `NO ACTION / RESTRICT`: 默认情况下阻止任何可能破坏引用完整性的操作尝试完成;如果试图违反此规则,则事务失败回滚处理[^3]. - **实际应用案例分析**: 考虑一所大学内部的学生信息系统管理需求,其中涉及到了“学院”和“学生”两部分信息存储。“学院编号”可设为主表(`department`)里的主而成为次表(`student`)中外的一部分。如此一来便能轻松达成如下目标: 1. 防止录入错误导致非法部门代号进入学员档案; 2. 自动化调整因机构重组引起的变化传播至全体受影响成员资料之中; 3. 控制权限范围内的增删改查动作合法性验证过程等等[^4]. ```sql -- 创建 department 表 CREATE TABLE department( dept_no CHAR(5) NOT NULL, dname VARCHAR(28), CONSTRAINT pk_dept PRIMARY KEY(dept_no) ); -- 创建 student 表 并设置指向 department 的主 CREATE TABLE student( stuid INT AUTO_INCREMENT, sname VARCHAR(30), major CHAR(5), -- 假定为所属院系编码 FOREIGN KEY(major) REFERENCES department(dept_no) ON DELETE CASCADE ); ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

钢铁大侠.

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值