Oracle数据库练习与解答:SQL查询技巧
5星 · 超过95%的资源 需积分: 9 117 浏览量
更新于2024-09-13
1
收藏 30KB DOC 举报
"该资源是一份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则显示"无",否则显示实际工资。
2011-03-27 上传
2017-08-10 上传
2023-06-05 上传
2010-03-08 上传
2010-06-01 上传
2010-06-01 上传
2021-10-27 上传
2008-04-30 上传
wxjdd03221119
- 粉丝: 1
- 资源: 2
最新资源
- Flex 3 Cookbook中文版
- uf2008_WhyUDesign.pdf
- Oracle9i Database Error Messages.pdf
- RS232 通讯原理.doc
- Ubuntu实用学习手册
- SQL 语法教程不错
- 8051串口通信源程序
- 风中叶 cvs教程(浪曦)
- struts,spring,hibernate面试题
- 如何实现动态窗口的创建
- Addison.Wesley.MySQL.4th.Edition.Sep.2008
- vigeneer的加解密以及破译的代码
- FreeMarker中文文档
- Java学生成绩管理系统源代码
- WCDMA核心网及其演进
- 电子现金、电子信用卡、电子支票、网上银行和第三方支付的区别