自身连接查询
自身连接,就是将表本身和表进行笛卡尔积计算,得到结果,但是由于表名相同,因此要先起一个别名:
SELECT * FROM 表名 别名1, 表名 别名2
自身连接查询的连接对象变成自己和自己了。
例如1:student 表自身连接查询
# 自身连接查询,笛卡尔积:81 条数据 select * from student t1, student t2; # 自身连接查询,只展示出:t1.sid = t2.sid,有 9 条数据 select * from student t1, student t2 where t1.sid = t2.sid;
重点:表名后续再跟一个表的名称,意为:给表起别名!
例如2:查询学生表自身连接,只展示出:t1.sid = t2.sid 的 t1学生姓名,t2学生年龄
select t1.name as 't1姓名', t2.age as 't2年龄' from student t1, student t2 where t1.sid = t2.sid;
外连接查询
外连接就是专门用于联合查询情景的,比如现在有一个存储所有用户的表,还有一张用户详细信息的表,我希望将这两张表结合到一起来查看完整的数据,我们就可以通过使用外连接来进行查询,外连接有三种方式:
-
通过使用
inner join
进行内连接,只会返回两个表满足条件的交集部分:
-
通过使用
left join
进行左连接,不仅会返回两个表满足条件的交集部分,也会返回左边表中的全部数据,而在右表中缺失的数据会使用null
来代替(右连接right join
同理,只是反过来而已,这里就不再介绍了):
例如1:查询出 teach 表中有被授课学生的学生详情【使用 inner join 包含了老师的编号 stu.sid = teach.sid】
select stu.*, teach.tid as '老师编号' from student stu inner join teach on stu.sid = teach.sid;
重点理解:inner join 取两张表的交集部分!
例如2:查询出 teach 表中有授课老师的老师详情,学生学号
-- 查询有被授课的学生详情 select t.*, teach.sid from teacher t inner join teach on t.tid = teach.tid;
查询的结果中:表名.* 意为:展示表中所有的属性信息,例如:stu.* 展示student表中所有属性信息!
标签:查询,MYSQL,t2,t1,sid,teach,内外,连接 From: https://www.cnblogs.com/blogtech/p/17796066.html