SQL查询基础:单表操作详解
3 浏览量
更新于2024-08-30
收藏 76KB PDF 举报
SQL数据查询是数据库管理中的基础操作,主要用于从数据库中获取所需信息。本篇主要讲解的是单表查询,涵盖了`SELECT (FROM)`子句、`WHERE`子句、`ORDER BY`子句、`TOP`子句、集函数以及`GROUP BY (HAVING)`子句的基本使用。
一、`SELECT (FROM)`子句
1. 查询指定列:你可以通过指定列名来查询需要的数据。例如,`SELECT Sname, Sno, Sdept FROM Student;`将返回学生表中所有学生的姓名、学号和所在院系。
2. 查询全部列:使用星号`*`代表所有列,如`SELECT * FROM Student;`会返回学生表中的所有信息。
3. 查询经过计算的值:在`SELECT`语句中可以包含算术表达式、字符串常量或函数,如`SELECT Sname, 'Year of Birth:', 2020 - Sage, LOWER(Sdept) FROM Student;`将返回学生的姓名、出生年份(当前年份减去年龄)和小写的院系名。
4. 去除取值重复行:使用`DISTINCT`关键字,例如`SELECT DISTINCT Sno FROM SC;`将返回选修课程表中所有不重复的学生学号。
二、`WHERE`子句
`WHERE`子句用于设定查询条件,包括比较大小、确定范围、集合操作、字符匹配、判断空值以及多重条件连接。
1. 比较大小:例如,`WHERE Sage < 20`可以找出年龄小于20的学生。
2. 确定范围:如`WHERE Sage BETWEEN 18 AND 22`可查出年龄在18至22之间的学生。
3. 确定集合:`IN`操作符可用于查找特定集合内的值,例如`WHERE Sdept IN ('CS', 'EE')`将找出计算机科学与电子工程系的学生。
4. 字符匹配:`LIKE`操作符用于模式匹配,如`WHERE Sname LIKE '张%'`会找到所有姓张的学生。
5. 判断空值:`IS NULL`或`IS NOT NULL`用于查询字段值是否为空,如`WHERE Semail IS NULL`找无邮箱的学生。
6. 多重条件连接:`AND`和`OR`用于连接多个条件,如`WHERE Sage > 20 AND Ssex = 'M'`将找出年龄大于20且性别为男的学生。
三、`ORDER BY`子句
`ORDER BY`用于对查询结果进行排序,如`SELECT * FROM Student ORDER BY Sage DESC;`将按照年龄降序排列学生信息。
四、`TOP`子句
在某些SQL方言中(如SQL Server),`TOP`用于限制返回的行数,如`SELECT TOP 10 * FROM Student ORDER BY Sage DESC;`将返回年龄最高的前10名学生。
五、集函数
集函数用于对一组值进行计算,包括:
1. 统计个数:`COUNT()`,如`SELECT COUNT(*) FROM Student;`返回学生总数。
2. 计算平均值:`AVG()`,如`SELECT AVG(Sage) FROM Student;`计算平均年龄。
3. 计算最小/大值:`MIN()`和`MAX()`,如`SELECT MIN(Sage), MAX(Sage) FROM Student;`找出最小和最大年龄。
六、`GROUP BY (HAVING)`子句
1. `GROUP BY`用于按指定列进行分组,如`SELECT Sdept, COUNT(*) FROM Student GROUP BY Sdept;`将返回每个院系的学生数量。
2. `GROUP BY HAVING`用于在分组后设置条件,如`SELECT Sdept, AVG(Sage) FROM Student GROUP BY Sdept HAVING AVG(Sage) > 20;`找出平均年龄大于20的院系及其平均年龄。
这些基本的SQL查询操作构成了查询数据的基础,通过组合运用,可以满足复杂的数据检索需求。在实际应用中,根据具体需求灵活组合这些子句,能有效地从数据库中提取所需信息。
2020-12-14 上传
2021-10-12 上传
2019-02-18 上传
2021-10-07 上传
2022-07-13 上传
2008-09-25 上传
2019-03-18 上传
weixin_38529486
- 粉丝: 7
- 资源: 942
最新资源
- SSM动力电池数据管理系统源码及数据库详解
- R语言桑基图绘制与SCI图输入文件代码分析
- Linux下Sakagari Hurricane翻译工作:cpktools的使用教程
- prettybench: 让 Go 基准测试结果更易读
- Python官方文档查询库,提升开发效率与时间节约
- 基于Django的Python就业系统毕设源码
- 高并发下的SpringBoot与Nginx+Redis会话共享解决方案
- 构建问答游戏:Node.js与Express.js实战教程
- MATLAB在旅行商问题中的应用与优化方法研究
- OMAPL138 DSP平台UPP接口编程实践
- 杰克逊维尔非营利地基工程的VMS项目介绍
- 宠物猫企业网站模板PHP源码下载
- 52简易计算器源码解析与下载指南
- 探索Node.js v6.2.1 - 事件驱动的高性能Web服务器环境
- 找回WinSCP密码的神器:winscppasswd工具介绍
- xctools:解析Xcode命令行工具输出的Ruby库