- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MYSQL_多表查询学习
MYSQL_多表查询学习
103f
MYSQL 多表查询学习 - Web源码共享 - ╄中国飞客网╄ 技术前线首页 共享 论坛 Web前台开发 | 虚拟机研讨区 | 虚拟现实技术 |
Web项目开发 | Web源码共享 | 谈天说地 转至论坛 你的位置:╄中国飞客网╄ 论坛 Web源码共享 查看帖子
MYSQL 多表查询学习
发布: 2010-1-15 17:12 | 作者: feiker | 来源: ╄中国飞客网╄
多表查询
1.简单查询
内连接查询
1】简单的连接查询
给两个表找中间桥梁: select 字段列表 from 表1,表2 where 表1.s_id=表2.s_id;
eg: select s_name,marks from student_info,marks_info where
student_info.s_id=marks_info.s_id;
eg: select s_name,marks,c_name from
student_info,marks_info,class_info where marks_info.s_id=student_info.s_id and
marks_info.c_id=class_info.c_id;
问题: 如果表名很长,书写繁琐,代码不清晰。
解决: 使用表别名
定义格式 :1】表名 as 别名
2】表名 别名
别名作用域只在本查询语句中
eg : select s_name,c_name,marks from student_info s,marks_info
m,class_info c where s.s_id=m.s_id and m.c_id=c.c_id
查询学生的编号,姓名,科目,成绩
问题: 如果查询的字段在多个表中存在,那么就必须在字段前添加表名或表的别名
select s.s_id,s_name,c_name,marks from student_info s,marks_info
m,class_info c where s.s_id=m.s_id and m.c_id=c.c_id
2】SQL内外连接 (是SQL语言中的多表分类,查询效率比简单查询和子查询在某种情况下要高)
内连接格式:select 字段列表 from 表1 inner join 表2 on 表1.字段=表2.字段
eg :查询学生的姓名和成绩
select s_name,c_name,marks from student_info inner join marks_info on
student_info.s_id=marks_info.s_id inner join class_info on
marks_info.c_id=class_info.c_id;
3】自然查询 : 是简单的查询中去掉重复的记录 在字段中添加distinct
外连接查询 outer join
1】左连接 (left join)select 字段列表 from 表1 left join 表2 on 表1.字段=表2.字段
(查询语句以表1为参照表) 如果表2中有与表1相匹配的记录,那么就显示记录,如果表2中没有与表1相匹配的记录则在相对应的字段上填充null)
问题:如果查询的记录,必须以某个表作为参照表,打印出记录相同的所有的记录
SELECT s_name, marks FROM student_info s LEFT JOIN marks_info m ON
s.s_id = m.s_id
2】右连接 (right join) (查询语句以表2为参照表)
如果表1中有与表2相匹配的记录,那么就显示记录,如果表1中没有与表2相匹配的记录则在相对应的字段上填充null)
SELECT s_name, marks FROM marks_info m RIGHT JOIN student_info s ON
s.s_id = m.s_id
3】全连接 full join (将两个记录集进行合并,并且去掉重复的记录)
mysql 不支持全连接
文档评论(0)