前言
嘿,各位数据达人们!准备好迎接新的挑战了吗?今天,我们要探索的是数据库世界的魔法咒语——SQL语言!🔮💻
在这篇博文【Oracle】玩转Oracle数据库(四):SQL语言中,我们将进入数据库的奇妙世界,掌握SQL这把金钥匙,解锁数据的无限可能性!💡🌟
无论你是想成为数据分析大师,还是想拥有更好的数据库管理技能,相信我,这篇文章都会是你的贴心导师!我们要学会编写SQL查询,掌握增删改查等基本操作,更要深入了解SQL语言的核心原理和高级技巧!准备好让你的数据技能飞速提升了吗?跟着我一起踏上SQL的征程,让我们的数据库之旅更加精彩!🚀📊
☀️一、研究目的
- 掌握在Oracle中添加示例方案的方法
- 熟练掌握SQL语言的查询功能
- 掌握SQL Plus常用命令
🌼二、研究内容
一、需要访问HR示例方案中的表,先查询机器上是否已有HR方案,如果已有HR方案,则跳过该步骤。如果没有,则运行相关包和相应配置装入HR方案。
- 将hr.rar解压到D:\oracle\...\demo\schema\ human_resources目 (路径中“…”因不同机器不同安装目录而不同,根目录也可能不同,相应解压位置和下面的命令都要随之改变),然后在SQL*PLUS 中执行 hr_main.sql这个文件,以SYS用户登录执行。即
SQL>@D:\oracle\...\demo\schema\human_resources\hr_main.sql
- 然后按提示依次输入如下:
Specify passwordfor HR as parameter 1: Enter valuefor 1: hr Specify default tablespeacefor HR as parameter 2: Enter valuefor 2: users Specify temporary tablespacefor HR as parameter 3: Enter valuefor 3: temp Specify passwordfor SYS as parameter 4: Enter valuefor 4:runner Specify log path as parameter 5: Enter valuefor 5: D:\oracle\...\RDBMS\log
二、完成下面的查询,记录查询命令和结果。
- 查询HR方案种有哪些表,列出表名
- 设置行宽为160,每页行数为40
- 查询employees表中所有薪水在3000到6000元之间的员工编号、姓、名、受聘日期、工作代号、薪水、经理代号、部门号,按部门号升序排列,同一部门按员工编号降序排列
- 查询每个部门的人数、平均薪水、最高薪水、最低薪水,按部门编号升序排列
- 查询first_name的第三个字母是t的员工编号,first_name,电话号码,部门编号,部门名称
- 在job_history表中查询任职时间超过1年的员工编号,任职历时月份(保留整数),工作代号,部门代号。
- 查询每个部门经理的员工编号、姓名、薪水、部门号。
🌷三、研究结论
准备工作:
按住win+r输入sqlplus,如图1.
图1
输入用户名:sys as sysdba,密码:Csuft123.并输入startup启动实例如图2.
图2
【实验内容开始】
🔥3.1 需要访问HR示例方案中的表,先查询机器上是否已有HR方案,如果已有HR方案,则跳过该步骤。如果没有,则运行相关包和相应配置装入HR方案。
☀️1. 将hr.rar解压到E:\ora11gk\oracle11g\product\11.2.0\dbhome_1\demo\schema\human_resources目录如图3
图3
然后在SQL*PLUS 中执行 hr_main.sql这个文件,以SYS用户登录执行即 SQL>@E:\ora11gk\oracle11g\product\11.2.0\dbhome_1\demo\schema\human_resources\hr_main.sql
☀️2. 然后按提示依次输入
Specify passwordfor HR as parameter 1: Enter valuefor 1: hr Specify default tablespeacefor HR as parameter 2: Enter valuefor 2: users Specify temporary tablespacefor HR as parameter 3: Enter valuefor 3: temp Specify passwordfor SYS as parameter 4: Enter valuefor 4:runner Specify log path as parameter 5: Enter valuefor 5: E:\ora11gk\oracle11g\product\11.2.0\dbhome_1\RDBMS\log
输入完如图4
图4
运行完如图5
图5
🔥3.2 完成下面的查询,记录查询命令和结果。
☀️1. 查询HR方案种有哪些表,列出表名
答:7张表:使用命令命令如图6
select table_name from user_tables;
图6
☀️2. 设置行宽为160,每页行数为40
答:使用命令设置行宽为160
set linesize 160
使用命令设置每页行数为40如图7
set pagesize 40
图7
☀️3. 查询employees表中所有薪水在3000到6000元之间的员工编号、姓名、受聘日期、工作代号、薪水、经理代号、部门号,按部门号升序排列,同一部门按员工编号降序排列
答:在查询前我们需要查看employees表中的属性,使用指令如图8
desc employees
图8
使用命令如下:
select EMPLOYEE_ID,FIRST_NAME,LAST_NAME,HIRE_DATE,JOB_ID,SALARY,MANAGER_ID,DEPARTMENT_ID from employees where SALARY between 3000 and 6000 order by DEPARTMENT_ID asc,EMPLOYEE_ID desc;
需要注意的是姓名由FIRST_NAME和LAST_NAME组成而没有NAME,如图9
图9
我们发现其显示信息格式特别乱,为了显示更为美观,我们使用可视化PLSQL工具对其进行查询操作如图10
图10
☀️4. 查询每个部门的人数、平均薪水、最高薪水、最低薪水,按部门编号升序排列
答:为了方便显示所以后续截屏均在PLSQL可视化工具进行,在查询前我们需要查看employees表中的属性,使用指令如图11
desc employees
图11
这里使用查询命令如下:
select count(*)人数,avg(salary)平均薪水,max(salary)最高薪水,min(salary)最低薪水 From hr.employees Group by department_id order by department_id asc;
显示结果如图12
图12
☀️5. 查询first_name的第三个字母是t的员工编号,first_name,电话号码,部门编号,部门名称
答:这里先查看表的描述使用命令如图13
desc departments
图13
使用查询命令如图14
select EMPLOYEE_ID,FIRST_NAME,PHONE_NUMBER,hr.employees.DEPARTMENT_ID,DEPARTMENT_NAME from hr.employees,hr.departments where first_name like '__t%' and hr.employees.department_id=hr.departments.department_id;
图14
☀️6. 在job_history表中查询任职时间超过1年的员工编号,任职历时月份(保留整数),工作代号,部门代号。
答:这里先查看表的描述使用命令如图15
desc job_history
图15
这里使用查询命令如图16
select employee_id,round(months_between(end_date,start_date)),job_id,department_id From hr.job_history Where round(months_between(end_date,start_date))>12;
图16
7.查询每个部门经理的员工编号、姓名、薪水、部门号。
答:这里使用查询命令如图17
select distinct e1.employee_id,e1.first_name,e1.last_name,e1.salary,e1. department_id From hr.employees e1 inner join hr.employees e2 On e1.employee_id=e2.manager_id;
图17
📝四、研究心得
嗨,数据库探险家们!这次的Oracle数据库创建和管理实验简直就像是一场技术考验的狂欢!我不仅掌握了添加示例方案的技巧,还熟练运用起了SQL语言的查询功能,而且SQL Plus的命令也基本能驾驭得了!💻🔥
但嘿,挑战不止如此!这次的实验记录着无数的技术考验和小插曲!首先,我对表查询前得先研究属性,不然眼都懵了!desc命令成了我最亲密的伙伴!😅
然后,那个“TNS:协议适配器错误”,我尝试了各种神奇的解决方法,甚至还开了个小灶,结果只有关机重启才能搞定!这可真是技术小白魔咒的一次奇遇!🧙♂️✨
还有,在SQL语句里,引号得是英文状态下的,中文状态下的可不认!是不是有点儿小心机?😉
最后,我深深感受到了sqlplus窗口查询的种种不足:没错检查、格式乱糟糟!我觉得,时间应该花在解决问题上,而不是在调整格式上!所以,我决定转战PLSQLDEV,它的可视化结果简直美哭了!🎨💼
总的来说,这次实验就像是一场技术之旅,虽然充满挑战,但也充满了成长的味道!💪🌟
图18