数据操作---简单查询
一、 查询语句基本格式
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计算,求得每组的学生人数。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗