Oracle数据库练习与解答:SQL查询技巧
![](https://csdnimg.cn/release/wenkucmsfe/public/img/starY.0159711c.png)
"该资源是一份Oracle数据库的学习练习题及答案,旨在帮助学习者巩固已掌握的Oracle知识,包括用户管理、数据查询、SQL语句编写以及字符串和日期操作等核心技能。"
1. 查看当前登陆的用户命令:可以使用`SELECT USER FROM DUAL;`来查看当前登录的Oracle数据库用户。
2. 登录后切换到超级管理员用户:通过`ALTER SESSION SET CURRENT_SCHEMA = SYS AS SYSDBA;`可以切换到超级管理员用户SYS。
3. 再切换到普通用户:使用`ALTER SESSION SET CURRENT_SCHEMA = 用户名;`命令,将用户名替换为你想切换的普通用户。
4. 查看表结构:可以使用`DESCRIBE 表名;`命令来查看表的结构,包括字段名称、数据类型等信息。
5. 查看emp表中所有员工的工作(job),并消除重复行:使用`SELECT DISTINCT job FROM emp;`来去除重复的工作项。
6. SQL语句示例:显示特定格式的雇员信息,这需要使用`CONCAT`函数和子查询来组合字段,例如:
```sql
SELECT CONCAT('雇员编号是:', EMPNO, '的雇员姓名是:', ENAME, ',基本工资是:', SAL, ',职位是', JOB) AS 结果
FROM emp;
```
7. 查询工资在1500-3000之间的员工信息:使用`WHERE`子句进行区间筛选,例如:
```sql
SELECT * FROM emp
WHERE sal BETWEEN 1500 AND 3000;
```
8. 按工资降序、雇用日期升序查询所有雇员信息:
```sql
SELECT * FROM emp
ORDER BY sal DESC, HIREDATE ASC;
```
9. 将字符串转换为大写:使用`UPPER()`函数,如`SELECT UPPER('helloworld') FROM DUAL;`。
10. 动态查询ename为'smith'的人的所有信息,输入动态值为小写:使用`LOWER()`函数,例如:
```sql
SELECT * FROM emp
WHERE LOWER(ename) = 'smith';
```
11. 将所有雇员姓名按小写返回:使用`LOWER()`函数应用在查询中,例如:
```sql
SELECT LOWER(ename) FROM emp;
```
12. 将所有雇员姓名首字母大写:使用`INITCAP()`函数,例如:
```sql
SELECT INITCAP(ename) FROM emp;
```
13. 查询所有姓名长度为5的雇员信息:使用`LENGTH()`函数,例如:
```sql
SELECT * FROM emp
WHERE LENGTH(ename) = 5;
```
14. 使用“_”替换ename中的所有“A”:可以使用`REPLACE()`函数,例如:
```sql
SELECT REPLACE(ename, 'A', '_') FROM emp;
```
15. 截取每个雇员姓名的前三个字母:使用`SUBSTR()`函数,例如:
```sql
SELECT SUBSTR(ename, 1, 3) FROM emp;
```
16. 截取每个雇员姓名的后三个字母:同样使用`SUBSTR()`函数,但调整参数,例如:
```sql
SELECT SUBSTR(ename, -3) FROM emp;
```
17. 四舍五入数字:使用`ROUND()`函数,例如:
```sql
SELECT ROUND(805.53567) FROM DUAL;
SELECT ROUND(-805.53567) FROM DUAL;
```
18. 取余数:使用`MOD()`函数,例如:
```sql
SELECT MOD(10, 3) FROM DUAL;
```
19. 获取当前系统日期:使用`SYSDATE`关键字,例如:
```sql
SELECT SYSDATE FROM DUAL;
```
20. 求出本月最后一天的日期:结合`LAST_DAY()`函数,例如:
```sql
SELECT LAST_DAY(SYSDATE) FROM DUAL;
```
21. 下一个星期一是几号:结合`TRUNC()`和`NEXT_DAY()`函数,例如:
```sql
SELECT TRUNC(SYSDATE, 'IW') + 7 - MOD(SYSDATE - TRUNC(SYSDATE, 'IW'), 7) FROM DUAL;
```
22. 计算3个月之后的日期:结合`ADD_MONTHS()`函数,例如:
```sql
SELECT ADD_MONTHS(SYSDATE, 3) FROM DUAL;
```
23. 入学到现在的天数:需要知道具体的入学日期,然后减去日期,例如:
```sql
SELECT SYSDATE - DATE '2012-03-12' FROM DUAL;
```
24. 格式化当前系统时间为指定格式:使用`TO_CHAR()`函数,例如:
```sql
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM DUAL;
```
25. 显示当前系统具体时间(24小时制):结合`TO_CHAR()`函数和时间格式,例如:
```sql
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
```
26. 数字格式化为字符串:使用`TO_CHAR()`函数和货币格式,例如:
```sql
SELECT TO_CHAR(85098654132168, 'L99,999,999,999,999') FROM DUAL;
```
27. 查询每个雇员的全部年薪(无comm则设为300元):使用`NVL()`函数,例如:
```sql
SELECT EMPNO, ENAME, (SAL * 12) + NVL(COMM, 300) AS 年薪
FROM emp;
```
28. 将字符串转换成DATE类型数据:使用`TO_DATE()`函数,例如:
```sql
SELECT TO_DATE('1983-04-07', 'YYYY-MM-DD') FROM DUAL;
```
29. 查询语句示例,显示特定格式的结果:
```sql
SELECT EMPNO, ENAME, JOB, DECODE(SAL, 300, '无', SAL) AS SALARY
FROM emp;
```
这个查询会显示雇员编号、姓名、职位,如果工资为300则显示"无",否则显示实际工资。
点击了解资源详情
点击了解资源详情
181 浏览量
2023-06-05 上传
2011-03-27 上传
495 浏览量
114 浏览量
133 浏览量
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
wxjdd03221119
- 粉丝: 1
最新资源
- HTML教程:实现海绵宝宝案例式文本转换
- Tableau中缺失日期的快速填补解决方案
- ASP多媒体课程答疑系统:源代码与论文详解
- 声音报警系统设计与仿真实验教程
- 易语言菜单操作教程:基础例程解析
- WPF中控件拖动与尺寸自定义的实现方法
- Delphi实现窗体句柄遍历的截图工具方法
- 掌握MATLAB同态滤波技术,提升图像处理效果
- 第2周挑战赛决赛揭幕:技术与策略的较量
- HTML5蓝色拼图游戏实现与源码解析
- STM32工程模板:IAR集成UCOS-III源码
- ASP+ACCESS学生成绩查询系统毕业设计全套资料
- 使用Pygame制作动态主角及移动效果
- Spring Boot与Vue打造家庭食谱管理平台
- 易语言实现超级编辑框文本搜索选中功能
- 智能手机应用前端模板:HTML5与CSS3的完美结合