sql查询语句-01

1.单表查询

◆限制显示结果

·使用limit限制显示的行数,分页函数limit m,n,从m+1行开始显示n条记录

例:查询选修课程成绩排在前5的学生的学号和成绩。

select sno,score from SC order by score desc limit 5;

limit 1,3 零是第一条

◆汇总数据(聚集函数)

5个聚集函数 count、avg、sum、min和max

(1)count

·统计元组个数:COUNT(*)

统计一列中值的个数:COUNT(DISTINCTIALL]<列名>)

例:查询学生总人数。
SELECT COUNT(*) FROM Student; as 给字段名
例:查询选修课程的学生人数·
SELECT COUNT( DISTINCT Sno) FROM SC; 去重,根据学号统计

sql查询语句-01_第1张图片

sql查询语句-01_第2张图片

sql查询语句-01_第3张图片

例:计算01号课程的学生平均成绩、最高分和最低分。

SELECT avg(score),max (score),min(score) FROM SC WHERE Cno='01':

如何汇总每门课程的成绩?

sql查询语句-01_第4张图片

◆分组统计

(1)group by

sql查询语句-01_第5张图片

例:查询各课程的课程号及平均分

SELECT Cno,avg(Score) FROM SC GROUP BY Cno;

sql查询语句-01_第6张图片

例:查询各课程的课程号及选课人数·

SELECT Cno,COUNT(Sno) FROM SC GROUP BY Cno;
计数

sql查询语句-01_第7张图片

(2)having分组以后设条件

分组后,如果要按条件筛选某些组,需要用having子句,不能用where。

例:查询各选课人数超过3人的课程号。

select Cno,count(Sno) from sc group by cno having count(sno)>=3;

sql查询语句-01_第8张图片

多表

连接查询(关联插叙)

例:查询每个学生及其选修课程的情况

SELECT Student.*,SC.* #表前缀 .

FROM

Student,SC

WHERE Student.Sno =SC.Sno;

sql查询语句-01_第9张图片

自然链接

Select Student.sno,sname,ssex,sage,sclass,scol,cno,score
from Student,SC
where Student.sno=SC.sno; #注意:两个表都有的字段要加表名前缀。
where Student.sno=SC.sno and score>=90;

sql查询语句-01_第10张图片

例:查询每个学生的学号、姓名、选修的课程名及成绩

select Student.sno,sname,cname,score
from Student,SC,course
where Student.sno=SC.sno and course.cno=SC.cno;

自链接插叙(与自己的副本链接 ,有别名)

sql查询语句-01_第11张图片

◆外连接查询

两张表在连接查询时,要求输出一张表的所有元组,而另一张表只输出满足条件的元组。

例:查询所有学生的基本情况和选课情况。

Select Student.sno,sname,ssex,sage,sclass,scol,cno,score
from Student left outer join SC on(student.sno=sc.sno);

左连接left outer join:输出左边关系中所有的元组

右连接right outer join:输出右边关系中所有的元组

sql查询语句-01_第12张图片

子查询

sql查询语句-01_第13张图片

(1)不相关的子查询

sql查询语句-01_第14张图片

【例】查询和李四(条件)在同一个班的学生的信息。

select from Student
where sclass=(select sclass from Student where sname='李四');
子查询先查哪个班
再来父亲查询

你可能感兴趣的:(数据库,数据库,sql)