首页 / MYSQL / MySql 多表查询
MySql 多表查询
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySql 多表查询,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2667字,纯文字阅读大概需要4分钟。
内容图文
![MySql 多表查询](/upload/InfoBanner/zyjiaocheng/488/fff9bc561ad247429ede6763961c8cef.jpg)
多表查询必然要用到多表关联
多表关联 分三类:
A:内部连接 join 或inner join
B:外部链接 外部连接又分为两类 :左外连接 left join 和右外连接 right join
C:交叉连接 cross join
以下 举例说明 有两张表
格 一张学生的 一张老师的 一张中间表的
一、内部链接 应用场景
这种条件下是得到 A B 共同的数据 同时满足AB 的条件 称之为内部连接
代码 是 :
SELECT *FROM stu_tea st JOIN student s ON st.学生=s.name
结果是:
从表中清楚 看出,studnet表中的信息会按照规定的规则(中间表中的“学生字段”=student表中的name 字段)拼接在关联的后面,并且仔细看 可以发现 少了学生陈建和李涛的信息,因为陈建和李涛这两个学生在两个表中并不同时存在
如果要对结果表中的学生和name重复的 只显示一行,可以对代码以下处理
SELECT st.`学生`,st.`老师`,s.`birth`FROM stu_tea st JOIN student s ON st.学生=s.name
结果如下:
还可以对s.birth中文化处理,在后面加上别名显示:
SELECT st.`学生`,st.`老师`,s.`birth` ‘生日‘ FROM stu_tea st JOIN student s ON st.学生=s.name
结果如下:
注意:以上代码中的中文字段,加不加引号都可以,系统一般默认加单引号;
二、外部链接 应用场景
左外连接
这种场景是得到A的所有数据和B满足一定条件的部分数据
代码是:SELECT *FROM stu_tea st LEFT JOIN student s ON st.`学生`=s.`name`
结果为:
从表中可以看出,左外连接完全以左边的中间表为模板,学生表接在中间标的后面,,没有数据用null补齐,学生表有的而中间表没有的数据则不会显示
对以上结果,还可以用where 从句 进一步筛选
比如要去掉没有学生信息的数据:SELECT *FROM stu_tea st LEFT JOIN student s ON st.`学生`=s.`name` WHERE s.`name`IS NOT NULL
结果是:
我们还查询一下,去掉了哪些学生信息:SELECT *FROM stu_tea st LEFT JOIN student s ON st.`学生`=s.`name` WHERE s.`name`IS NULL
结果是:
注意:MySQL 只能用 is 不能用”=“
右外连接
这种场景是得到B的所有数据和A满足一定条件的部分数据
右外部连接与左外部连接 完全相反,不具体介绍
三、交叉连接
实际应用中还有这样一种情形,想得到A,B记录的排列组合,即笛卡儿积,这个就不好用集合和元素来表示了。需要用到cross join
代码是:SELECT *FROM stu_tea st CROSS JOIN student
结果是:
可以发现student表中一共有5行数据 ,stu_tea表中 有12行数据,60=12*5;
此代码也可以写成SELECT *FROM stu_tea st JOIN student
注意事项:
1.连接表格使用的是逗号,会被解释为交叉连接;
即SELECT *FROM stu_tea st,student SELECT *FROM stu_tea st JOIN student SELECT *FROM stu_tea st CROSS JOIN student 是等价的
2.一般内连接都需要加上on限定条件,如果不加会被解释为交叉连接
3.一般交叉连接(, cross join join 都可以)后面加上where条件,也可以写成on
MySql 多表查询
标签:oss 条件 链接 外连接 学生 别名 统一 不同 log
本文系统来源:http://www.cnblogs.com/shilei182/p/7274981.html
内容总结
以上是互联网集市为您收集整理的MySql 多表查询全部内容,希望文章能够帮你解决MySql 多表查询所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。