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

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

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

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




例题1:

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




例题2:

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

END

相关推荐
NCIN EXPE1 小时前
redis 使用
数据库·redis·缓存
MongoDB 数据平台1 小时前
为编码代理引入 MongoDB 代理技能和插件
数据库·mongodb
极客on之路1 小时前
mysql explain type 各个字段解释
数据库·mysql
代码雕刻家1 小时前
MySQL与SQL Server的基本指令
数据库·mysql·sqlserver
lThE ANDE1 小时前
开启mysql的binlog日志
数据库·mysql
yejqvow121 小时前
CSS如何控制placeholder文字的颜色_使用--placeholder伪元素
jvm·数据库·python
oLLI PILO2 小时前
nacos2.3.0 接入pgsql或其他数据库
数据库
m0_743623922 小时前
HTML怎么创建多语言切换器_HTML语言选择下拉结构【指南】
jvm·数据库·python
pele2 小时前
Angular 表单中基于下拉选择动态启用字段必填校验的完整实现
jvm·数据库·python