当前位置:网站首页>SQL数据查询之单表查询
SQL数据查询之单表查询
2022-06-11 13:54:00 【无忧#】
目录
语句格式
SELECT [ALL|DISTINCT] <目标列表达式>
[,<目标列表达式>] …
FROM <表名或视图名>[, <表名或视图名> ] …
[ WHERE <条件表达式> ]
[ GROUP BY <列名1> [ HAVING <条件表达式> ] ]
[ ORDER BY <列名2> [ ASC|DESC ] ];
选择表中的若干列
例子
查询全体学生的学号与姓名
SELECT Sno,Sname FROM Student查询表中所有列
在SELECT关键字后面列出所有列名
将<目标列表达式>指定为 *
例子
查询全体学生的详细记录
SELECT Sno,Sname,Ssex,Sage,Sdept
FROM Student;
OR
SELECT *
FROM Student;
选择表中的若干元组
消除取值重复的行
如果没有指定DISTINCT关键词,则缺省为ALL
例子
查询选修了课程的学生学号。
SELECT Sno FROM SC;
等价于
SELECT ALL Sno FROM SC;
指定DISTINCT关键词,去掉表中重复的行
SELECT DISTINCT Sno
FROM SC;
查询满足条件的元组
查 询 条 件 | 谓 词 |
比 较 | =,>,<,>=,<=,!=,<>,!>,!<;NOT+上述比较运算符 |
确定范围 | BETWEEN AND,NOT BETWEEN AND |
确定集合 | IN,NOT IN |
字符匹配 | LIKE,NOT LIKE |
空 值 | IS NULL,IS NOT NULL |
多重条件(逻辑运算) | AND,OR,NOT |
比较大小
例子
查询计算机科学系全体学生的名单
SELECT Sname
FROM Student
WHERE Sdept=‘CS’;
查询所有年龄在20岁以下的学生姓名及其年龄
SELECT Sname,Sage
FROM Student
WHERE Sage < 20;
确定范围
例子
查询年龄在20~23岁(包括20岁和23岁)之间的学生的 姓名、系别和年龄
SELECT Sname,Sdept,Sage
FROM Student
WHERE Sage BETWEEN 20 AND 23;
查询年龄不在20~23岁之间的学生姓名、系别和年龄
SELECT Sname,Sdept,Sage
FROM Student
WHERE Sage NOT BETWEEN 20 AND 23;
确定集合
例子
查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。
SELECT Sname,Ssex
FROM Student
WHERE Sdept IN ( 'IS','MA','CS' );
查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别
SELECT Sname,Ssex
FROM Student
WHERE Sdept NOT IN ( 'IS','MA','CS' );
字符匹配
例子
匹配串为固定字符串
SELECT *
FROM Student
WHERE Sno LIKE ‘200215121';
查询名字中第2个字为"阳"字的学生的姓名和学号
SELECT Sname,Sno
FROM Student
WHERE Sname LIKE ‘__阳%’;
查询所有不姓刘的学生姓名。
SELECT Sname,Sno,Ssex
FROM Student
WHERE Sname NOT LIKE '刘%';
涉及空值的查询
例子
某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号。
SELECT Sno,Cno
FROM SC
WHERE Grade IS NULL
查所有有成绩的学生学号和课程号。
SELECT Sno,Cno
FROM SC
WHERE Grade IS NOT NULL;
多重条件查询
例子
查询计算机系年龄在20岁以下的学生姓名
SELECT Sname
FROM Student
WHERE Sdept= 'CS' AND Sage<20查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。
SELECT Sname,Ssex
FROM Student
WHERE Sdept IN ( 'IS','MA','CS' )
ORDRD BY子句
升序:ASC;降序:DESC;缺省值为升序
当排序列含空值时:
ASC:排序列为空值的元组最后显示
DESC:排序列为空值的元组最先显示
例子
查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。
SELECT Sno,Grade
FROM SC
WHERE Cno= ' 3 '
ORDER BY Grade DESC;
查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列。
SELECT *
FROM Student
ORDER BY Sdept,Sage DESC;
聚集函数
- 计数:COUNT([DISTINCT|ALL] <列名>)
- 计算总和:SUM([DISTINCT|ALL] <列名>)
- 计算平均值:AVG([DISTINCT|ALL] <列名>)
- 计算最大值:MAX([DISTINCT|ALL] <列名>)
- 计算最小值:MIN([DISTINCT|ALL] <列名>)
例子
查询学生总人数
SELECT COUNT(*)
FROM Student;
查询选修了课程的学生人数
SELECT COUNT(DISTINCT Sno)
FROM SC;
计算1号课程的学生平均成绩
SELECT AVG(Grade)
FROM SC
WHERE Cno= '1'查询选修1号课程的学生最高分数
SELECT MAX(Grade)
FROM SC
WHER Cno= '1';
查询学生200215012选修课程的总学分数
SELECT SUM(Ccredit)
FROM SC, Course
WHER Sno='200215012' AND SC.Cno=Course.Cno;GROUP BY子句
细化聚集函数的作用对象
- 对查询结果分组后,聚集函数将分别作用于每个组
- 作用对象是查询的中间结果表
- 按指定的一列或多列值分组,值相等的为一组
例子
求各个课程号及相应的选课人数
SELECT Cno,COUNT(Sno)
FROM SC
GROUP BY Cno;
查询选修了3门以上课程的学生学号
SELECT Sno
FROM SC
GROUP BY Sno
HAVING COUNT(*) >3;
HAVING短语与WHERE子句的区别
- 作用对象不同
- WHERE子句作用于基表或视图,从中选择满足条件的元组
- HAVING短语作用于组,从中选择满足条件的组。
边栏推荐
猜你喜欢

The tree (AVL, 2-3-, red black, Huffman)

CVPR 2022 | 神经辐射场几何编辑方法NeRF-Editing

My struggle: my years in foreign enterprises (1)

Container -- reverse content -- use of explosion, splicing, and inversion functions

Collapse expression
Explanation of waitgroup usage in go language learning

About uni app configuration, app does not display the top title bar setting

Live share experience

程序员到了35岁之后的一些转型思考

Introduction to common fonts
随机推荐
Collapse expression
AGV机器人RFID传感器CK-G06A与西门子1200PLC应用手册
Ali talked about the use of strategic mode in the project
Jdbctemplate data background management. I don't know why roleid is empty when adding users
AGV robot RFID sensor ck-g06a and Siemens 1200plc Application Manual
How to manage the server to make the website stable and smooth
Invalid bound statement (not found)错误【已解决】
2022工具钳工(中级)操作证考试题库及答案
/usr/bin/gzip: 1: ELF : not found /usr/bin/gzip: 3: : not found /usr/bin/gzip: 4: Syntax erro
2022.2.27 library management system 3 - book borrowing and returning registration module
Container -- reverse content -- use of explosion, splicing, and inversion functions
C# 设置窗体和系统的光标形状
YOLOv3学习笔记:YOLOv3的模型结构
d区间到可空转换
SAP Spartacus checkout 流程使用 url 粘贴直接跳转到 delivery mode不能打开页面的原因
应用编排Nomad与Kubernetes对比
Kubernetes certificate collection
Can't understand kotlin source code? Starting with the contracts function~
Ponds(拓扑 + 优先队列)
Teatalk · online speech record | complete! It is important to select the right data migration strategy for safe cloud deployment