Oracle数据库试题:SQL查询实战

需积分: 10 0 下载量 126 浏览量 更新于2024-09-09 1 收藏 9KB TXT 举报
"这是一份关于Oracle SQL的上机练习题,主要针对数据库查询技能进行考核,使用了SCOTT账号下的各个表。题目包括查询雇员的部门信息、薪资比较、入职日期比较、上下级关系、部门人数、部门最高薪资员工以及部门薪资排名等常见SQL查询操作。" 在这些SQL语句中,涉及到了以下关键知识点: 1. 子查询:子查询用于在一个查询内部执行另一个查询,例如第1题和第2题,分别通过子查询找到部门编号和"SMITH"的薪资,然后在外部查询中使用这些结果。 2. 联接查询:第4题使用了简单的内联接来显示员工及其直接上级的名字,通过MGR字段匹配两个EMP表中的记录。 3. 外连接查询:第5题使用右外连接查询显示所有部门名称及对应的人数,即使某些部门没有员工,也会显示出来。 4. 分组和聚合函数:第5题中使用了`GROUP BY`语句和`COUNT()`函数来统计每个部门的员工人数。 5. 条件查询:在第3题中,使用了条件`<`来查找入职日期早于其直接上级的雇员。 6. 最值查询:第6题中,通过子查询找出每个部门的最高薪资,展示了如何使用`MAX()`函数结合子查询来获取特定列的最大值。 7. 排序与限制:第7题使用了窗口函数的概念,尽管这里没有明确写出`RANK()`或`ROW_NUMBER()`,但逻辑上是相似的,选取每个部门薪资前2名的员工。 8. 相关子查询:第8题用一个子查询找出员工7369所在的部门,然后在外部查询中匹配相同部门的员工及其薪资。 9. IN和NOT IN运算符:第1题中使用了`IN`运算符来查询至少有一个雇员的部门。 10. 比较运算符:第2题使用了比较运算符`>`来筛选薪资高于"SMITH"的雇员。 这些SQL语句体现了在实际数据库操作中对数据检索、筛选、聚合、关联、排序和限制等多种能力的需求,是学习和掌握数据库编程的基础。通过这样的练习,可以提升对SQL语言的理解和运用能力。
2013-04-05 上传
在sqlplus环境中,以HR用户(模式)使用数据库,在此用户下回 答下列问题(手写所有问题的答案并上交): 1. 在未知HR用户 密码的情况下,如何以HR用户的身份登录到数据库中? 2. 以HR 用户登录到数据库后,如何列出HR用户(模式)拥有那些数据表? 3. 如何查看EMPLOYEES数据表的结构? 4. 如果要求在sqlplus 中以下列要求显示数据列,该如何实现,写出相应格式化命令。 a)EMPLOYEE_ID列相对于列宽右对齐显示列名“员工编号”,并 在显示编号时以4位数 字显示,当不足4位数字时,前端以添加0 补齐。 b)SALARY列要求所有值均显示两位小数(如果是整数也 显示两位小数00),并在头位 数字前显示本地货币符号“¥” 5. 设置sqlplus页宽为200字符,页高为100行,应使用什么 sqlplus命令实现? 6. 如何查看当前用户是什么数据库用户? 7. 如何将第4、5题中的格式操作命令保留下来,并在今后每次使 用sqlplus登录数据库后都 自动执行进行设置?写出操作过程 8. 编写脚本QueryJobHisByDept.sql,此脚本的执行结果是显示由用 户指定某部门中进行职位 变动的次数为用户指定次数的职员姓名 等相关信息。脚本的运行步骤要求如下(请注意,在 最后还有对 结果显示的额外要求,请自行确定在何处使用何种命令实现相应 要求): 1.清除所有column指令设置的格式设置 2. 取消对于替 换变量进行验证显示的选项(提示:verify环境变量)3. 设置 employee_id 列的显示列名“员工编号” 4. 设置employee_name 列的显示列名为“员工姓名” 5. 设置JobName列的显示列名为“ 现任职位” 6. 设置Salary列的显示列名为“薪金”,并设置在数 字前显示字符“$”符号 7. 设置Department列的显示列名为“工 作部门” 8. 设置Country_Name列的显示列名为“所在国家” 9. 设置页宽为200,页高为150 10. 显示“请输入部门名称:”,并 接受用户的输入 11. 显示“需要参数已设置,请按<Enter>键继 续” 12. 等待用户按Enter键,待用户按下Enter键后继续下面的 操作 13. 查询由用户指定的部门中的员工信息,包括职员编号( 列名为employee_id,来源于 Employees表)、职员姓名(列名为 employee_name,来源于Employees表,由First_name 和 Last_name拼接形成,First_Name和Last_Name之间使用“,”符号 分隔)、员工的 职位(列名为JobName,来源于Jobs表)、员工 的薪金(列名为Salary,来源于Employees 表)、员工所在部门 名称(列名为department,来源于Departments表的 Department_name 列),员工所在国家(列名为Country_name, 来源于countries表的Country_name列), 要求按照员工姓名升 序排列。 额外要求: 1. 对于具有相同的职员姓名的临近多个数据行,只 显示第一个数据行的职员姓名 2. 最终在脚本中形成的查询语句 以及查询结果保存到“c:\queryResult.txt”文件中。注意,只 保存查询语句及其查询结果及不可避免的截屏结束语句。