SQL中的外键

外键

概念:

     外键与主键相对,作用就是通过主外键的之间关系使对张表中的数据更好的关联。

外键特点:

     从表外键的值是对主表主键的引用。

     从表外键类型,必须与主表主键类型一致。

作用:外键可以保证数据的完整性和一致性

格式:(2种)

[constraint 外键约束关系的名称] foreign key 从表(外键字段名称) references 主表(主键字段名称)
alter table 从表 add [constraint] [外键名称] foreign key (从表外键字段名) references 主表 (主表的主键);

egg:

数据:

#部门表:
CREATE TABLE dept(
id INT PRIMARY KEY AUTO_INCREMENT,
dname VARCHAR(20) UNIQUE NOT NULL,
dcode INT UNIQUE NOT NULL);
#员工表:
CREATE TABLE emp(
id INT PRIMARY KEY AUTO_INCREMENT,
ename VARCHAR(20) NOT NULL,
ecode INT UNIQUE NOT NULL,
did INT,
CONSTRAINT dept_emp FOREIGN KEY emp(did) REFERENCES dept(id));

插入数据:

#插入数据:
INSERT INTO dept VALUES(NULL,'技术部',100);
INSERT INTO dept VALUES(NULL,'财务部',200);
INSERT INTO dept VALUES(NULL,'人事部',300);
INSERT INTO emp VALUES(NULL,'张三',123,1);
INSERT INTO emp VALUES(NULL,'李四',124,2);
INSERT INTO emp VALUES(NULL,'王五',125,1);
INSERT INTO emp VALUES(NULL,'田七',126,1);

抛出异常:

问题:DELETE FROM dept WHERE id=1; 

出错原因:从表有员工关联部门中id为1的部门INSERT INTO emp VALUES(NULL,'haha',127,5);出错原因:主表中没有主键id为5的部门

### SQL Server 中的使用方法及配置教程 在关系中,(Foreign Key, FK)用于维护两个表之间的参照完整性。它确保一个表中的数据必须存在于另一个表中对应的列里[^1]。 #### 创建约束 可以通过 `ALTER TABLE` 或者在创建表时直接定义来实现约束。以下是两种方式的具体语法: ##### 方法一:通过 `ALTER TABLE` 添加 如果已经存在目标表,则可以使用以下命令为其添加: ```sql ALTER TABLE A ADD CONSTRAINT FK_A_AchievementID_B_ID FOREIGN KEY (AchievementID) REFERENCES B(ID); ``` 此语句表示,在表 `A` 的 `AchievementID` 列上建立对部表 `B` 的 `ID` 列的引用关系[^2]。 ##### 方法二:在创建表时定义 可以在创建新表的同时指定约束: ```sql CREATE TABLE A ( ID INT PRIMARY KEY, AchievementID INT, Name NVARCHAR(50), CONSTRAINT FK_A_AchievementID_B_ID FOREIGN KEY (AchievementID) REFERENCES B(ID) ); ``` 上述代码片段展示了如何在新建表的过程中设置约束。 #### 删除约束 当不再需要某个约束时,可执行如下操作删除该约束: ```sql ALTER TABLE A DROP CONSTRAINT FK_A_AchievementID_B_ID; ``` #### 解决常见问题 1. **无法插入违反约束的数据** 如果尝试向子表插入一条记录而其父表中不存在对应的关字值,则会抛出错误提示。这表明当前事务违背了所设定的规则。 2. **级联更新/删除** 可以为附加额选项以支持自动化的级联行为。例如允许当修改或移除主表条目时同步调整关联子项的状态: ```sql ALTER TABLE A ADD CONSTRAINT FK_A_AchievementID_B_ID FOREIGN KEY (AchievementID) REFERENCES B(ID) ON DELETE CASCADE ON UPDATE NO ACTION; ``` 以上内容涵盖了基本概念以及实际应用技巧,帮助理解并掌握 SQL Server 下机制的操作流程。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值