数据库多表联合查询

多表联合查询

多表联合查询可以通过连接运算实现,而连接运算又可以通过广义笛卡尔积后在进行选择运算来实现。

Select 多表联合查询语句

Select 列名 [[,列名]…] from 表名1,表名2,… Where 查询条件;

可以使用as为表或者字段(属性)取别名;

Select 列名 [[,列名]…] from 表名1 [as] 别名1,表名2 [as} 别名2,… Where 查询条件;

Select 列名1 [as] 列别名1 [[,列名2 [as] 列别名2]…] from 表名1 [as] 表别名1,表名2 [as] 表别名2,… Where 查询条件;

“[]”表示其中的内容可以省略;

查询条件中要包含连接条件,通过不同的连接条件可以实现等值连接、不等值连接等各种连接。

示例:

原表数据:

扫描二维码关注公众号,回复: 5683915 查看本文章

学生表 student
在这里插入图片描述

老师表 teacher:

在这里插入图片描述

课程表 course:
在这里插入图片描述

选课表 student_course:
在这里插入图片描述

1 按“0001”号课程成绩由高到低顺序显示所有学生学号、姓名、成绩(二表连接);

SELECT
student.student_id,
student.student_name,
student_course.score
FROM
student,
student_course
WHERE
student.student_id = student_course.student_id
AND student_course.course_id = ‘0001’
ORDER BY
student_course.score DESC;
当两个(多个)表中有相同的字段(属性,列名)时,使用表名(或表别名).列名的形式对查询内容和条件内容进行区分。

运行结果:

在这里插入图片描述

2 按“高等数学”课程成绩由高到低顺序显示所有学生姓名、学号、分数、课程名(三表连接);

SELECT
st.student_id,
st.student_name,
sc.score,
co.course_name
FROM
student AS st,
student_course AS sc,
course AS co
WHERE
st.student_id = sc.student_id
AND sc.course_id = co.course_id
AND co.course_name = ‘高等数学’
ORDER BY
sc.score DESC;
运行结果:

在这里插入图片描述

3 查询有薪水差额的任意两位教师(单表连接查询);

SELECT
t1.teacher_id AS ‘教工号1’,
t1.teacher_name AS ‘教师姓名1’,
t2.teacher_id AS ‘教工号2’,
t2.teacher_name AS ‘教师姓名2’
FROM
teacher t1,
teacher t2
WHERE
t1.teacher_salary > t2.teacher_salary;
运行结果:
在这里插入图片描述

(数据较多,这里只显示一部分)

4 查询既学过“0001”又学过“0002”号课程的所有学生学号;

SELECT
sc1.student_id ‘学号’
FROM
student_course sc1,
student_course sc2
WHERE
sc1.student_id = sc2.student_id
AND sc1.course_id = ‘0001’
AND sc2.course_id = ‘0002’;
运行结果:

在这里插入图片描述

5 查询“0001”号课程比“0002”号课程成绩低的所有学生学号姓名;

SELECT
st.student_id ‘学号’,
st.student_name ‘姓名’
FROM
student_course sc1,
student_course sc2,
student st
WHERE
sc1.student_id = sc2.student_id
AND sc1.student_id = st.student_id
AND sc1.course_id = ‘0001’
AND sc2.course_id = ‘0002’
AND sc1.score < sc2.score;
运行结果:

在这里插入图片描述

转载自:https://blog.csdn.net/linan_pin/article/details/70158259

猜你喜欢

转载自blog.csdn.net/Love_Polaris/article/details/88845856