网站没建设可以访问吗,seo搜索引擎优化实战,陕西省建设厅安全证考试官网,漳州最便宜的网站建设价格复习表别名
之前已经学习过#xff0c;查询的时候可以使用as来对检索的列进行重命名#xff0c;这样可以让sql更加简介#xff0c;增强易读性#xff08;as可以省略#xff09;
此外#xff0c;使用表别名还可以支持在一条select语句中#xff0c;一个表是被多次使用 …复习表别名
之前已经学习过查询的时候可以使用as来对检索的列进行重命名这样可以让sql更加简介增强易读性as可以省略
此外使用表别名还可以支持在一条select语句中一个表是被多次使用
自连接
我们来构建一个需求
我知道有一位教师名字叫做王小强我想知道王小强是什么级别的教师并且全校跟他一个级别的教师都有谁
selectt1.teacher_name,t1.title
fromteachers as t1,teachers as t2
wheret1.title t2.titleand t2.teacher_name 王小强;这里边引申一下 我们如果把上边的sql改成这样子
selectt1.teacher_name,t1.title
fromteachers as t1,teachers as t2
wheret1.title t2.titleand t1.teacher_name 王小强;t1和t2不是都是同一个teachers的别名吗为什么第二条sql执行的结果是这样的呢
首先因为teachers表建立了自连接所以就会形成教师表自身的笛卡尔积
对于第一条sqlwhere过滤条件执行
t2.teacher_name 王小强只保留 t2 中姓名为“王小强”的记录t1.title t2.title筛选 t1 中与 t2即王小强职称相同的记录
解释找到所有职称与“王小强”相同的教师包括王小强自己
对于第二条sql执行逻辑
t1.teacher_name 王小强只保留 t1 中姓名为“王小强”的记录t1.title t2.title筛选 t2 中与 t1即王小强职称相同的记录
解释
t1 中固定为“王小强”的记录1行。
t2 中所有职称与“王小强”相同的记录共2行王小强和张伟。
最终结果会 重复显示“王小强”次数等于 t2 中满足条件的行数。
为什么第二条SQL出现重复
其实本质是笛卡尔积的副作用当 t1 固定为“王小强”时t2 中每一条职称相同的记录都会与 t1 组合导致重复。
结果行数公式 结果行数 t1 中匹配 teacher_name‘王小强’ 的行数 × t2 中匹配相同职称的行数。
外部连接
左连接left join
假如我们要查询下边的数据
找出来所有教师的工号以及教师担任班主任的班级名称
这里边可能包含一种情况就是有的教师可能不是班主任没有关系也要一起查询出来
selectteachers.teacher_id,classes.class_name
fromteachersleft join classes on teachers.teacher_id classes.head_teacher_id;这里边我们使用的是left join左连接这样会指向join左边表的所有记录包括没有在右边表关联起来的行
右连接right join
同样对应的右连接就是righjt join我们直接使用上一条sql举例
selectteachers.teacher_id,classes.class_name
fromteachersright join classes on teachers.teacher_id classes.head_teacher_id;这样就是把右边表的所有记录查询出来
以上就是关于连接相关的内容了下期不讲理论直接找几个实际的例子实战演练