Oracle数据库练习与解答:SQL查询技巧

"该资源是一份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则显示"无",否则显示实际工资。
108 浏览量
500 浏览量
117 浏览量
146 浏览量
2023-10-12 上传
2023-08-24 上传
2024-10-25 上传
144 浏览量
2024-10-25 上传

wxjdd03221119
- 粉丝: 1
最新资源
- Tailwind CSS多列实用插件:无需配置的快速多列布局解决方案
- C#与SQL打造高效学生成绩管理解决方案
- WPF中绘制非动态箭头线的代码实现
- asmCrashReport:为MinGW 32和macOS构建实现堆栈跟踪捕获
- 掌握Google发布商代码(GPT):实用代码示例解析
- 实现Zsh语法高亮功能,媲美Fishshell体验
- HDDREG最终版:DOS启动修复硬盘坏道利器
- 提升Android WebView性能:集成TBS X5内核应对H5活动界面问题
- VB银行代扣代发系统源码及毕设资源包
- Svelte 3结合POI和Prettier打造高效Web开发起动器
- Windows 7下VS2008试用版升级至正式版的补丁程序
- 51单片机交通灯系统完整设计资料
- 兼容各大浏览器的jquery弹出登录窗口插件
- 探索CCD总线:CCDBusTransceiver开发板不依赖CDP68HC68S1芯片
- Linux下的VimdiffGit合并工具改进版
- 详解SHA1数字签名算法的实现过程