永洪社区
标题: 从零开始学SQL数据分析(3)-SQL多表关联 [打印本页]
作者: 喝酸奶不舔盖 时间: 2024-6-13 15:57
标题: 从零开始学SQL数据分析(3)-SQL多表关联
本帖最后由 喝酸奶不舔盖 于 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;
文章源自:大话数据分析
欢迎光临 永洪社区 (https://club.yonghongtech.com/) |
Powered by Discuz! X3.4 |