数据库学习 – select(多表联查)[通俗易懂]

多表联合查询多表联合查询可以通过连接运算实现,而连接运算又可以通过广义笛卡尔积后在进行选择运算来实现。 Select多表联合查询语句Select列名[[,列名]…]from表名1,表名2,,…Where查询条件; 可以使用as为表或者字段(属性)取别名; Select列名[[,列名]…]from表名1[as]别名1,表名

大家好,又见面了,我是你们的朋友全栈君。

多表联合查询

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

 

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 查询条件;

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

 

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

 

示例:

原表数据

学生表 student

 数据库学习 - select(多表联查)[通俗易懂]

老师表 teacher:

 数据库学习 - select(多表联查)[通俗易懂]

课程表 course:

 数据库学习 - select(多表联查)[通俗易懂]

选课表 student_course:

 数据库学习 - select(多表联查)[通俗易懂]

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;

当两个(多个)表中有相同的字段(属性,列名)时,使用表名(或表别名).列名的形式对查询内容和条件内容进行区分。

运行结果:

 数据库学习 - select(多表联查)[通俗易懂]

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;

运行结果:

 数据库学习 - select(多表联查)[通俗易懂]

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;

运行结果:

 数据库学习 - select(多表联查)[通俗易懂]

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

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';

运行结果:

 数据库学习 - select(多表联查)[通俗易懂]

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;

运行结果:

 数据库学习 - select(多表联查)[通俗易懂]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/124750.html原文链接:https://javaforall.net

(1)
上一篇 2022年4月4日 上午10:35
下一篇 2022年4月4日 上午11:00


相关推荐

  • 还在手动部署?Claude Code + Playwright MCP 3分钟上线你的项目

    还在手动部署?Claude Code + Playwright MCP 3分钟上线你的项目

    2026年3月16日
    3
  • 海康威视rtsp取流地址(海康威视设置教程)

    RTSP视频流显示(海康威视)VLCSDK(C++)ffmpeg+Nginx本文目的主要是想要在html上实时显示海康威视的摄像头数据,笔者尝试了如下三种方式:VLCSDK(C++)ffmpeg+Nginx下面分别说说通过这几种方式如何实现在web页面上显示。VLC填的地址就是摄像头RTSP视频流地址,然后点串流:左上角是这样的说明就已经在转换了:网页显示注意…

    2022年4月17日
    2.6K
  • SPI接口扫盲 SPI定义/SPI时序(CPHA CPOL)

    SPI接口扫盲 SPI定义/SPI时序(CPHA CPOL)SPI接口扫盲为何要写这篇文档?百度上找出来的SPI接口中文描述都说的太过简略,没有一篇文档能够详尽的将SPI介绍清楚的。wikipedia英文版[注释1]中,SPI接口介绍的很好,但是毕竟是英文版,读起来终究不如母语舒服,所以我结合自己的工作经验,对其进行了汉化、整理。个人SPI接口相关经验:1.参与过国产某芯片SPI接口样品验证、SPI接口服务DEMO开发(C语言)。2.使

    2022年6月18日
    46
  • 点云数据格式转换(使用CloudCompare软件)

    点云数据格式转换(使用CloudCompare软件)在网上找了一些点云数据格式的转换方法 突然发现 CloudCompare 软件转换点云数据的格式很方便 所以就记录一下 CloudCompare 软件下载地址 http www cloudcompare org 注 要注意一下 如果你的电脑显卡有点旧 就不要下载最新版的 CloudCompare 11 否则你启动软件的时候可能会报错 解决办法就是下载相对老一点的 CloudCompare 6 版本

    2025年9月15日
    4
  • V4L2框架概述

    V4L2框架概述几乎所有的设备都有多个 IC 模块 它们可能是实体的 例如 USB 摄像头里面包含 ISP sensor 等 也可能是抽象的 如 USB 设备里面的抽象拓扑结构 它们在 dev 目录下面生成了多个设备节点 并且这些 IC 模块还创建了一些非 v4l2 设备 DVB ALSA FB I2C 和输入设备 正是由于硬件的复杂性 v4l2 的驱动也变得非常复杂 特别是 v4l2 驱动要支持 IC 模块来进行音 视频的混合 编解码操作 这就更加使得 v4l2 驱动变得异常复杂

    2026年3月20日
    2
  • PHP优化01 PHP引擎优化 PHP引擎加速器的安装

    PHP优化01 PHP引擎优化 PHP引擎加速器的安装

    2021年9月10日
    53

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号