Oracle数据库SELECT查询实战示例
需积分: 13 10 浏览量
更新于2024-09-13
收藏 61KB DOC 举报
"Oracle数据库查询练习"
在Oracle数据库中,SELECT语句是用于从表中检索数据的关键命令。以下是从给定的练习中提取的一些重要知识点:
1. **基于条件的查询**:可以使用WHERE子句来指定查询的条件。例如,`SELECT * FROM emp WHERE deptno = 20;` 将返回20号部门的所有员工信息。`WHERE job LIKE 'CLERK'` 则用于查找所有工种为CLERK的员工。
2. **比较运算符**:`>` 和 `<` 分别表示大于和小于。例如,`WHERE comm > sal` 查找奖金高于工资的员工,而 `WHERE comm > (sal * 0.2)` 则是寻找奖金超过工资20%的员工。
3. **逻辑运算符**:`AND` 和 `OR` 运算符用于组合多个条件。例如,`WHERE (deptno = 10 AND job LIKE 'MANAGER') OR (deptno = 20 AND job LIKE 'CLERK')` 查询10号部门的MANAGER和20号部门的CLERK。
4. **NOT IN运算符**:`NOT IN` 用于排除特定值。`WHERE job NOT IN ('MANAGER', 'CLERK') AND sal >= 2000` 返回所有非MANAGER和CLERK职位且工资大于或等于2000的员工信息。
5. **聚合函数和NULL处理**:`DISTINCT` 关键字用于去除重复的值,如 `SELECT DISTINCT job FROM emp WHERE comm IS NOT NULL;` 查询所有有奖金的员工的不同工种。`NVL` 函数用于将NULL值替换为指定值,`NVL(comm, 0)` 在计算总薪资时处理NULL奖金。
6. **数学运算**:在查询中可以直接进行数学运算,如 `WHERE (sysdate - hiredate) / 365 >= 10;` 查找工龄大于或等于10年的员工。
7. **日期函数**:`LAST_DAY()` 函数返回月份的最后一天,`HIREDATE - SYSDATE` 计算员工的工龄,这两个结合可以找出月倒数第二天入职的员工。
8. **字符串函数**:`UPPER()` 转换字符串为大写,`LOWER()` 转换为小写,`SUBSTR()` 提取字符串的一部分。例如,`UPPER(SUBSTR(ename, 1, 1)) || LOWER(SUBSTR(ename, 2, LENGTH(ename) - 1))` 可以将每个员工的名字首字母转为大写,其余部分转为小写。
9. **长度函数**:`LENGTH()` 计算字符串的长度,`WHERE LENGTH(ename) = 6` 找到名字长度恰好为6个字符的员工。
10. **正则表达式**:虽然在给定的练习中没有直接使用,但可以使用正则表达式(如 `REGEXP_LIKE` 函数)来查找不包含特定字符(如"S")的员工名字。
以上是Oracle数据库中SELECT查询的基本用法和一些常见的条件过滤技巧。通过这些练习,你可以熟悉和掌握在实际工作中如何筛选和处理数据。
2011-03-23 上传
2010-04-13 上传
2020-12-14 上传
2011-03-23 上传
2020-12-14 上传
2023-04-20 上传
2023-04-20 上传
2020-12-14 上传
Rachel_Sammul
- 粉丝: 0
- 资源: 1
最新资源
- Android圆角进度条控件的设计与应用
- mui框架实现带侧边栏的响应式布局
- Android仿知乎横线直线进度条实现教程
- SSM选课系统实现:Spring+SpringMVC+MyBatis源码剖析
- 使用JavaScript开发的流星待办事项应用
- Google Code Jam 2015竞赛回顾与Java编程实践
- Angular 2与NW.js集成:通过Webpack和Gulp构建环境详解
- OneDayTripPlanner:数字化城市旅游活动规划助手
- TinySTM 轻量级原子操作库的详细介绍与安装指南
- 模拟PHP序列化:JavaScript实现序列化与反序列化技术
- ***进销存系统全面功能介绍与开发指南
- 掌握Clojure命名空间的正确重新加载技巧
- 免费获取VMD模态分解Matlab源代码与案例数据
- BuglyEasyToUnity最新更新优化:简化Unity开发者接入流程
- Android学生俱乐部项目任务2解析与实践
- 掌握Elixir语言构建高效分布式网络爬虫