找文章 / 找答案
精选问答 更多内容

[SQL独家资料] 从零开始学SQL数据分析(3)-SQL多表关联

喝酸奶不舔盖青铜四 显示全部楼层 发表于 2024-6-13 15:57:08 |阅读模式 打印 上一主题 下一主题
本帖最后由 喝酸奶不舔盖 于 2024-6-13 15:58 编辑


在日常数据查询时,绝大多数情况是将表格关联起来进行查询的,而不仅仅是对一张表格的数据进行查询,在之前的例子中,学生表用于存储学生信息、课程表用于存储课程信息、成绩表用于存储成绩信息,比如查询某学生的成绩信息就可以关联学生表和成绩表进行查询。
常用的数据拼接有两种方法,一种是以行为单位纵向连接,另一种是以列为单位水平拼接,纵向连接使用的函数是UNION,水平拼接使用的函数是JOIN,下面一起来学习。
UNION纵向连接
首先学习的是UNION函数,如下有两张课程表,需要将这两张课程表连接为一张课程表,使用UNION函数。
            


课程1表

课程2表SELECT * FROM course UNION SELECT * FROM course_1;

连接结果如上所示,需要注意的是,使用UNION,重复的数的会去重,如果将UNION换成UNION ALL,重复的数的会保留。
JOIN水平拼接
JOIN水平拼接常用的模式有INNER JOIN,LEFT JOIN和RIGHT JOIN三种,下面分别给出三种匹配模型的代码和结果。
INNER JOIN是内连接,在两张表中取公共列的部分进行连接,学生表和成绩表中学号Sid是公共列,取交集进行连接。

内连接#INNER JOIN匹配查询 SELECT * FROM student as st INNER JOIN score as sc ON st.Sid=sc.Sid;

LEFT JOIN是左连接,以左边的表为基准,右边的表有左边的公共列部分则进行拼接,如果没有,则为Null,这里仍然以学生表和成绩表为例,以学生表为基准,按照公共列学号Sid匹配学生成绩。

左连接# LEFT JOIN匹配查询 SELECT * FROM student as st LEFT JOIN score as sc ON st.Sid=sc.Sid;

RIGHT JOIN是右连接,以右边的表为基准,连接方法与左连接相对应,以学生表和成绩表为例,右连接以成绩表为基准,按照公共列学号Sid匹配学生信息。

右连接# RIGHT JOIN匹配查询 SELECT * FROM score as sc  RIGHT JOIN  student as st ON sc.Sid=st.Sid;

ORDER BY排序
数据拼接后,可以对拼接的数据做一次排序,使用ORDER BY函数,默认是按照升序排列。
#数据升序排序 SELECT * FROM score  ORDER BY score;

如果使用降序排列,可以在字段后面加一个DESC,该函数可以对该字段降序排列。
#数据降序排序 SELECT * FROM score  ORDER BY score DESC;

有时候需要对字段进行自定义排序,比如课程号升序排列,学生成绩降序排列,可以分别对字段进行设置 。
#多列数据进行排序 SELECT * FROM score  ORDER BY Cid,score DESC;



文章源自:大话数据分析

回复

使用道具 举报

高级模式
您需要登录后才可以回帖 登录 | 免费注册

  • 官方微信

    欢迎关注永洪服务号!收费为0,价值无限

    扫码关注
  • 新浪微博

    让每位用户轻松挖掘数据价值!

    访问新浪微博
  • 智能客服
50W

会员等你来哦

Copyright   ©2012-2024  北京永洪商智科技有限公司  (京ICP备12050607) 京公网安备110110802011451号 |《永洪社区协议》
返回顶部