sql语句创建外键关联

本文介绍了如何在MySQL中使用SQL创建学生和教师表,并通过外键约束实现tid关联。通过实例展示了创建表结构、插入数据和查询的过程,重点在于理解并手写外键关联语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以创建学生教师表为例: 学生 id 关联教师 tid

学生表: student
学生表
教师表: teacher
在这里插入图片描述

sql语句 :

USE school;

CREATE TABLE student(
id INT(10) NOT NULL PRIMARY KEY,
NAME VARCHAR(30) DEFAULT NULL,
tid INT(10) DEFAULT NULL,
KEY `fktid` (`tid`),
CONSTRAINT `fktid` FOREIGN KEY(`tid`) REFERENCES `teacher` (`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

INSERT INTO student VALUES(1,'小明',1);
INSERT INTO student VALUES(2,'小红',1);
INSERT INTO student VALUES(3,'小刚',1);
INSERT INTO student VALUES(4,'小王',1);
INSERT INTO student VALUES(5,'小智',1);

SELECT * FROM student;

CREATE TABLE teacher (
id INT(10) PRIMARY KEY NOT NULL,
NAME VARCHAR (30) DEFAULT NULL
)ENGINE=INNODB DEFAULT CHARSET=utf8


INSERT INTO teacher VALUES(1,'陈老师');
SELECT * FROM teacher;

重点: 外键关联语句,会手写才可以!

KEY `fktid` (`tid`),
CONSTRAINT `fktid` FOREIGN KEY(`tid`) REFERENCES `teacher` (`id`)
### SQL 中的概念 #### 定义 在定义方面,当创建两个具有关联关系的数据时,为了维护数据的一致性和完整性,可以在子中建立一个字段作为来参照父中的主。这有助于确保子中的每一条记录都对应于父中存在的有效条目。 #### 作用 通过使用可以实现不同格之间的逻辑连接,从而保持引用完整性的规则得以实施。具体来说,这意味着如果试图向子插入不匹配任何现有父项的新行,则该操作会被拒绝;同样地,不允许删除或更改父内的某个值而破坏这种联系[^2]。 #### 创建语法 在创建的同时声明的方式如下所示: ```sql CREATE TABLE 子 ( id INT PRIMARY KEY, name VARCHAR(50), parent_id INT, FOREIGN KEY (parent_id) REFERENCES 父(id) ); ``` 对于已经存在的结构而言,可以通过 `ALTER TABLE` 来增加新的约束条件: ```sql ALTER TABLE 子 ADD CONSTRAINT fk_name FOREIGN KEY (child_column) REFERENCES parent_table(parent_column); ``` 其中 `fk_name` 是给定的一个唯一名称用于识别这个特定的约束,`child_column` 和 `parent_column` 分别代和父里用来建立关联的具体列名。 #### 删除语法 要移除约束,可采用下面的方法: ```sql ALTER TABLE 子 DROP FOREIGN KEY fk_name; ``` 这里需要注意的是,一旦决定去除某张上的限制后,就无法再简单地对其进行修改——只能先将其彻底消除然后再重新设定一个新的。 #### 特殊情况处理 有时可能遇到需要临时禁用对检查的情况(比如批量导入大量数据),此时可以通过设置全局变量 `foreign_key_checks=0` 来绕过这些验证机制,但在完成后记得及时恢复默认状态以防止意发生[^3]。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值