【小白说】数据库系统概念 7

连接字段就是两个表进行连接时用来匹配数据的字段。比如学生表有学号,选课表也有学号,查询时用两个表的学号相等来匹配,学号就是连接字段。
可比的意思就是两个字段的数据类型必须能进行大小比较或相等比较。比如整数可以和整数比,字符串可以和字符串比,但整数不能直接和字符串比。
名字不必相同,意思是连接的两个字段可以有不同的字段名,只要数据类型可比就行。比如学生表的学号是整数,选课表的学生编号也是整数,虽然字段名不同,但类型可比,就可以作为连接字段。
可比的含义是,两个字段的数据类型必须能够进行相等或不等的比较。比如整数可以和整数比大小,字符串可以和字符串比是否相同。因为连接操作本质上就是在比较两个字段的值,看它们是否满足连接条件。如果类型不同,比如拿整数和字符串去比,系统不知道该怎么比较,也就无法判断两个记录是否应该连接在一起。
循环嵌套法拿着学生表的每一条记录,去选课表里从头到尾找匹配。先拿学号001去选课表里逐条对比,找到所有001的选课记录,再拿学号002去选课表里逐条对比,直到所有学生都找完。适合小表连接。
排序合并法

先把两个表按学号排好序,比如学生表排成001,002,003,选课表排成001,001,002,004。然后像合并两个有序列表一样,两个指针从头开始走,学号相等就输出,小的那边继续往下走。适合两个表数据量都大且已排序的情况。
索引连接

如果选课表的学号上建有索引,查询时就先遍历学生表,每取一个学生,直接通过索引快速找到选课表里所有匹配的学号,而不是全表扫描。适合大表连接且有索引的情况。




例题1:

查询了选修了全部课程的学生姓名




例题2:

查询至少选修了学生200215122选修的全部课程的学生学号

END

相关推荐
字节跳动数据库1 天前
火山引擎 Milvus 发布官方 CLI + Skill ,终端与对话双通道掌控向量数据库
数据库·人工智能
夜白宋1 天前
【Redis深入】一、快的原因
数据库·redis·缓存
念越1 天前
【数据库系统概论期末复习】 绪论重点与常考题重点与常考题整理第一章
数据库·数据库系统概论
SXJR1 天前
langchain4j是如何保证tools或者funcation call不出错的
java·网络·数据库·ai·语言模型
AIMath~1 天前
兼容pymongo=4.16版本如何安装mongodb
数据库·mongodb
念恒123061 天前
MySQL连接池原理与简易网站数据流动是如何进行的
数据库·mysql
宇砾1 天前
浅谈Redis(2)
数据库·redis·缓存
cfm_29141 天前
Redis Stack 零基础入门
数据库·redis·缓存
海南java第二人1 天前
ClickHouse 列式存储深度解析:优点、缺点与选型实战
数据库·clickhouse
李白客1 天前
MySQL迁移操作手册:一次完整迁移的实战路径
数据库·mysql