前言
数据存储到数据库后,如果不对其进行分析和利用,数据是没有价值的。最终用户对数据库中数据进行的操作大多是查询和修改,其中修改操作包括插入、删除和更改数据。SQL提供了功能强大的数据查询和修改的功能。查询,插入和删除。这种东西还是需要多练,现在总结下来,没事儿了可以练练。分享:数据库文件,以下举例的语句都是根据这个数据库文件来操作,如有需要,请自行下载练习。
涉及到两张表
若一个查询同时涉及两个或两个以上的表,则称为连接查询。连接查询是关系数据库中最主要的查询,主要包括内连接、做外连接、右外连接、全外连接和交叉连接。内连接是一种最常用的连接类型。
使用内连接时,如果两个表的相关字段满足连接条件,则从这两个表中提取数据并组合成新的记录。连接操作在where子句中执行,连接是在join子句中执行的。
如:查询学生及其选课的详细信息
由于学生基本信息存放在student表中,学生选课信息存放在sc表中,因此这个查询涉及到两个表,这两个表之间进行连接的条件是两个表中的sno相等。
select s.Sno,s.Sname,s.Sex,s.Birthdate,s.Dept,c.Cno,c.Grade from Student s join Sc c on s.Sno=c.Sno
或者
select s.Sno,s.Sname,s.Sex,s.Birthdate,s.Dept,c.Cno,c.Grade from Student s ,Sc c where s.Sno=c.Sno
效果图
涉及到三张表
查询信息管理系选修了计算机文化学课程的学生信息,要求列出学生的姓名和考试成绩:
(此查询涉及到三张表,没连接一张表,就需要加一个join子句)
select Sname,Grade fromStudent s join SC on s.Sno=SC.Sno join Course c on c.Cno=SC.Cno where Dept = '信息管理系' and Cname ='计算机文化学'
效果图:
扩展
有分组和行选择条件的多表连接查询。统计计算机系每个学生的选课门数、平均成绩、最高成绩和最低成绩
select s.Sno,COUNT(*) as Total,AVG(grade) as AvgGrade,MAX(Grade) as MaxGrade,MIN(Grade) as MinGrade from Student s join SC on s.Sno=SC.Sno where Dept='计算机系' group by s.Sno
效果图