概述
多表连接查询:
如果查询同时涉及到两个或两个以上的表,则称为连接查询。连接查询时关系数据库中最主要的查询,
主要包括内连接,左外连接,右外连接,全外连接和交叉连接等。
内连接
内连接是一种最常用的连接类型。使用内连接时,如果两个表的相关字段满足连接查询,则从这
两个表中提取出数据组合成新的记录。
ANSI连接方式的内连接语法格式:from 表1[inner] join 表2 on <连接条件>
连接条件一般格式为:<表名1.列名> <比较运算符> <表名2.列名>
注意,连接条件中的连接字段必须是可比的,即必须死语义相同的列
说明:在进行多表连接查询时,在select子句中出现的查询列是来自被连接表的全部列,而在where子句
能够涉及的列也是被连接表中的列。因此,根据要查询的列以及数据的选择条件涉及到的列可以确定
这些列所在的表,从而确定了进行连接查询的表。
注意:为表指定而来别名后,在查询语句中的其他地方,所有用到表名的地方都必须要使用别名,而
不能使用原表名。
内连接查询例子:
1)查询学生及选课的详细信息
SELECT * FROM student INNER JOIN sc ON student.`sno` = sc.`sno`;
2)查询计算机系学生的选课情况,要求列出学生的名字,所选课的课程号和成绩
SELECT sname,cno,grade FROM student JOIN sc ON student.`sno` = sc.`sno` WHERE sdept = '计算机系';
3)查询"计算机系"选修了"java语言"的学生信息,要求列出学生的姓名和考试成绩(涉及到了三张表,需要将三张表关联起来)
SELECT sname,grade FROM student JOIN sc ON student.`sno` = sc.`sno` JOIN course ON course.`cno` = sc.`cno` WHERE sdept = '计算机系' AND cname = 'java语言';
4)查询所有选修了java语言课程的学生情况,列出所有学生姓名和所在的系
SELECT sname,sdept FROM student JOIN sc ON student.`sno` = sc.`sno` JOIN course ON course.`cno` = sc.`cno` WHERE cname = 'java语言';
5)统计每个系的考试平均成绩(有分组的多表连接查询,使用GROUP BY进行分组)
SELECT sdept,AVG(grade) FROM student JOIN sc ON student.`sno` = sc.`sno` GROUP BY sdept;
有分组和进行条件查询的多表拦截查询,统计计算机系每个学生的选课门数、平均成绩、最高成绩和最低成绩。
select s.sno,count(*) as total,avg(grage) as avgGrade,from student s join sc on s.sno = sc.sno
where dept = '计算机系' group by s.sno
最后
以上就是傲娇路灯为你收集整理的多表连接查询笔记之一 -- 内连接的全部内容,希望文章能够帮你解决多表连接查询笔记之一 -- 内连接所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复