首页 > 数据库 >SQL数据分析,多表拼接

SQL数据分析,多表拼接

时间:2022-11-10 10:01:06浏览次数:40  
标签:数据分析 JOIN SQL 拼接 score Sid 多表 连接 SELECT


SQL数据分析,多表拼接_数据分析

在日常数据查询时,绝大多数情况是将表格关联起来进行查询的,而不仅仅是对一张表格的数据进行查询,在之前的例子中,学生表用于存储学生信息、课程表用于存储课程信息、成绩表用于存储成绩信息,比如查询某学生的成绩信息就可以关联学生表和成绩表进行查询。

常用的数据拼接有两种方法,一种是以行为单位纵向连接,另一种是以列为单位水平拼接,纵向连接使用的函数是UNION,水平拼接使用的函数是JOIN,下面一起来学习。

SQL数据分析,多表拼接_数据分析_02


UNION纵向连接

首先学习的是UNION函数,如下有两张课程表,需要将这两张课程表连接为一张课程表,使用UNION函数。

SQL数据分析,多表拼接_字段_03

课程1表

SQL数据分析,多表拼接_字段_04

课程2表

SELECT * FROM course
UNION
SELECT * FROM course_1;

SQL数据分析,多表拼接_字段_05

连接结果如上所示,需要注意的是,使用UNION,重复的数的会去重,如果将UNION换成UNION ALL,重复的数的会保留。

JOIN水平拼接

JOIN水平拼接常用的模式有INNER JOIN,LEFT JOIN和RIGHT JOIN三种,下面分别给出三种匹配模型的代码和结果。

INNER JOIN是内连接,在两张表中取公共列的部分进行连接,学生表和成绩表中学号Sid是公共列,取交集进行连接。

SQL数据分析,多表拼接_数据_06

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

SQL数据分析,多表拼接_字段_07

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

SQL数据分析,多表拼接_数据分析_08

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

SQL数据分析,多表拼接_数据分析_09

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

SQL数据分析,多表拼接_数据_10

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

SQL数据分析,多表拼接_字段_11


ORDER BY排序

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

#数据升序排序
SELECT * FROM score
ORDER BY score;

SQL数据分析,多表拼接_数据分析_12

如果使用降序排列,可以在字段后面加一个DESC,该函数可以对该字段降序排列。

#数据降序排序
SELECT * FROM score
ORDER BY score DESC;

SQL数据分析,多表拼接_数据_13

有时候需要对字段进行自定义排序,比如课程号升序排列,学生成绩降序排列,可以分别对字段进行设置 。

#多列数据进行排序
SELECT * FROM score
ORDER BY Cid,score DESC;

SQL数据分析,多表拼接_数据分析_14


标签:数据分析,JOIN,SQL,拼接,score,Sid,多表,连接,SELECT
From: https://blog.51cto.com/u_15828536/5839669

相关文章