数据库学习 – 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年5月28日
  • JS正则表达式完整版

    JS正则表达式完整版目录引言第一章正则表达式字符匹配攻略1两种模糊匹配2.字符组3.量词4.多选分支5.案例分析第1章小结第二章正则表达式位置匹配攻略1.什么是位置呢?2.如何匹配位置呢?3.位置的特性4.相关案例第二章小结第三章正则表达式括号的作用1.分组和分支结构2.引用分组3.反向引用4.非捕获分组…

    2022年7月26日
  • phpstorm-2021.5.1激活码【在线注册码/序列号/破解码】「建议收藏」

    phpstorm-2021.5.1激活码【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月20日
  • jquery的delegate实现原理[通俗易懂]

    jquery的delegate实现原理[通俗易懂]//对标签绑定点击事件但是该方法对动态生成的元素无法生效$(‘.btn’).bind(‘click’,function(){alert(‘点击了’);})//jquery处理$(‘document’).delegate(‘.btn’,’click’,function(){alert(‘点击了’);});//其实原理就是利用了J

    2022年8月30日
  • oracle 正则 x00-xff,xff(xff头注入)

    oracle 正则 x00-xff,xff(xff头注入)你好!\xff(十六进制转义序列,对应的十进制ASCII码是255,在扩展ASCII中)\xhh代表十六进制模式希望对你有所帮助,望采纳。一到二位十六进制数所代表的字符,是c的转义字符没见过这种正则,如果是[^\x00-\xFF]表示匹配Ascii码大于255的那些字符了a328846994的说法完全错误。’\xff’这个是合法的,表示扩展ASCII码为255的字符,xff表示16进制f…

    2022年6月23日
  • WPF Visifire使用

    WPF Visifire使用引言:  由于项目中需要使用Visifire所以自己就写了一些demo,大家一起共享!基础Visifire图表的展示1.Visifire的创建需要引用的DLL包【WPFToolkit.dll;WPFVisifire.Charts;WPFVisifire.Gauges(这个以后会用到)】2.我们开始创建简单的Visifire图表第一步:前台代码

    2022年7月21日

发表回复

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

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