💗 关系数据库建立在关系模型上⭐ 关系模型本质上就是若干个存储数据的二维表
记录
(Record): 表的每一行称为记录(Record),记录
是一个逻辑意义上的数据
字段
(Column):表的每一列称为字段(Column),同一个表的每一行记录
都拥有相同的若干字段
- 字段定义了数据类型,及是否允许为NULL(NULL表示字段数据不存在)
id | class_id | name | gender | score |
---|---|---|---|---|
1 | 1 | 小明 | M | 90 |
2 | 1 | 小红 | F | 95 |
- 外键(字段):通过外键,可以把数据与
另一张
表关联起来-
上述为以
id
为主键 的students
表,可以通过外键
class_id
与classes
表关联起来 (一对多关系:一个classes
的记录对应多个students
的记录) -
示例:小明 (小红) 的
class_id
是1
,因此,对应的classes
表的记录是id=1
的一班,下方为class
表示例:id name … 1 一班 … 2 二班 …
-
外键并不是通过列名实现的,而是通过定义外键约束实现的:
ALTER TABLE students /* 通过 ALTER TABLE 实现 */ ADD CONSTRAINT fk_class_id /* 外键约束的名称 fk_class_id 可以任意 */ FOREIGN KEY (class_id) /* 指定 class_id 作为外键 */ REFERENCES classes (id); /* 指定该外键将关联到 classes 表的 id 列*/ DROP FOREIGN KEY fk_class_id; /* 删除外键约束,不会删除外键对应列 */
通过定义外键约束,关系数据库可以保证无法插入无效的数据
- 即如果
classes
表不存在id=99
的记录,students
表就无法插入class_id=99
的记录- 也可以不设置约束,仅依靠应用程序的逻辑来保证
- 关系数据库通过外键可以实现一对多 (本文示例)、多对多和一对一的关系
欢迎关注 、订阅专栏 【SQL 新手教程】谢谢你的支持!💜💜
参考资料:廖雪峰的官方网站 – SQL 教程