数据操作---简单查询

一、 查询语句基本格式

SELECT 目标列名序列

FROM 数据表

WHERE 检索条件

GROUP BY 分组依据列

HAVING 组提取条件

ORDER BY 排序依据列

二、简单查询

1. 选择表中若干列

例1:查询全体学生的学号与姓名。 SELECT Sno, Sname FROM Student

例2:查询全体学生的记录 SELECT Sno,Sname,Ssex, Sage, Sdept FROM Student 等价于: SELECT * FROM Student

查询经过计算的列

例3:查询全体学生的姓名及其出生年份。 SELECT Sname,2010 - Sage FROM Student

例4:查询全体学生的姓名和出生年份所在系,并在出生年份列前加入一个列,此列的每行数据均为“出生年份”常量值。 SELECT Sname,'出生年份:', 2010-Sage FROM Student

改变列标题

 

2. 选择表中若干元组

2.1.消除取值相同的行

要去掉结果表中的重复行,可用DISTINCT

2.2. 查询满足条件的元组

 

 

 

例5:查询计算机系全体学生的姓名。 SELECT Sname FROM Student WHERE Sdept = '计算机系'

例6:查询年龄在20岁以下的学生的姓名及年龄。 SELECT Sname, Sage FROM Student WHERE Sage < 20

例7:查询考试成绩有不及格的学生的学号 SELECT DISTINCT Sno FROM SC WHERE Grade < 60

例8:查询年龄在20~23岁之间的学生的姓名、所在系和年龄。 SELECT Sname, Sdept, Sage FROM Student WHERE Sage BETWEEN 20 AND 23

例9:查询年龄不在20~23之间的学生姓名、所在系和年龄。 SELECT Sname, Sdept, Sage FROM Student WHERE Sage NOT BETWEEN 20 AND 23

例10:查询信息系、数学系和计算机系学生的姓名和性别。 SELECT Sname, Ssex FROM Student WHERE Sdept IN (‘信息系’,‘数学系’,’计算机系’)

例11:查询既不是信息系、数学系,也不是计算机系学生的姓名和性别。 SELECT Sname, Ssex FROM Student WHERE Sdept NOT IN (‘信息系’,‘数学系’,’计算机系’)

 

 

 

例12:查询姓‘张’的学生的详细信息。 SELECT * FROM Student WHERE Sname LIKE '张%'

例13:查询学生表中姓‘张’、‘李’和‘刘’的学生的情况。 SELECT * FROM Student WHERE Sname LIKE '[张李刘]%'

例14:查询名字中第2个字为‘小’或‘大’的学生的姓名和学号。 SELECT Sname, Sno FROM Student WHERE Sname LIKE '_[小大]%'

例15:查询所有不姓“王”也不姓“张”的学生姓名 SELECT Sname FROM Student WHERE Sname NOT LIKE ‘[王张]%'

或者: SELECT Sname FROM Student WHERE Sname LIKE '[^王张]%'

或者: SELECT Sname FROM Student WHERE Sname NOT LIKE '王%' AND Sname NOT LIKE '张%'

 

 

例16:查询没有考试成绩的学生的学号和相应的课程号。 SELECT Sno, Cno FROM SC WHERE Grade IS NULL

例17:查询所有有考试成绩的学生的学号和课程号。 SELECT Sno, Cno FROM SC WHERE Grade IS NOT NULL

 

 

例18:查询计算机系年龄在20岁以下的学生姓名。 SELECT Sname FROM Student WHERE Sdept = ‘计算机系' AND Sage < 20

3. 对查询结果进行排序

排序子句为: ORDER BY 列1名 ASC|DESC,列2名 ASC|DESC 说明: 按列名进行升序(ASC)或降序(DESC)排序。

例19:将学生按年龄的升序排序。 SELECT * FROM Student ORDER BY Sage

例20:查询选修了‘c02’号课程的学生的学号及其成绩,查询结果按成绩降序排列。 SELECT Sno, Grade FROM SC WHERE Cno='c02' ORDER BY Grade DESC

4. 使用计算函数汇总数据

 

 

 

例21:统计学生总人数。 SELECT COUNT(*) FROM Student

例22:统计选修了课程的学生的人数。 SELECT COUNT (DISTINCT Sno) FROM SC

注:计算函数不能出现在WHERE子句中 

5. 对查询结果进行分组计算

 

 

例23:统计每门课程的选课人数,列出课程号和人数。 SELECT Cno 课程号, COUNT(Sno) 选课人数 FROM SC GROUP BY Cno

对查询结果按Cno的值分组,所有具有相同Cno值的元组为一组,然后再对每一组使用COUNT计算,求得每组的学生人数。

 

posted on 2022-03-27 19:40  辰逸1  阅读(119)  评论(0编辑  收藏  举报