【Oracle篇】常用查询与SQL92笔记(一)
-- 在scott.emp表中,输出工资大于本部门平均工资的人员信息(需要使用Oracle优先的查询类型 还要使用 SQL92标准查询) -- 方法一 select max(salnvl(comm,0)),e.empno from emp e group by empno; select avg(salnvl(comm,0)),e.empno from emp e group by
-- 在scott.emp表中,输出工资大于本部门平均工资的人员信息(需要使用Oracle优先的查询类型 还要使用 SQL92标准查询)
-- 方法一
select max(sal+nvl(comm,0)),e.empno from emp e group by empno;
select avg(sal+nvl(comm,0)),e.empno from emp e group by empno;
select distinct e.*
from emp e,emp e2
where e.deptno=e2.deptno and (select max(sal+nvl(comm,0))from emp e3)>(select avg(sal+nvl(comm,0)) from emp e4);
-- 方法二
select distinct e.*
from emp e join emp e2
on (e.deptno=e2.deptno and (select max(sal+nvl(comm,0))from emp e3)>(select avg(sal+nvl(comm,0)) from emp e4));
-- 外连接:输出20部门对应员工信息,及其他部门信息
-- 要求:使用Oracle外连接符号, 还要使用 SQL92标准 outer join;
-- 方法一
select e.*,d.*
from dept d,emp e
where d.deptno(+)=e.deptno and d.deptno(+)=20
union
select e2.*,d2.*
from dept d2,emp e2
where d2.deptno=e2.deptno(+) and e2.deptno(+)=20;
-- 方法二
select e.*,d.*
from dept d full join emp e
on (d.deptno=e.deptno and d.deptno=20);
-- --3、获取在98年10月15日加入项目的所有职员的部门编号、姓名、员工编号、部门名称
-- 方法一
select e.*,d.dept_name,w.*
from employee e,department d,works_on w
where e.dept_no=d.dept_no and e.emp_no=w.emp_no and w.enter_date=(to_date('1998-10-15','yyyy-mm-dd'));
select * from works_on;
-- 方法二
select e.*,d.dept_name
from employee e join department d on(e.dept_no=d.dept_no) join works_on w
on (e.emp_no=w.emp_no and w.enter_date=(to_date('1998-10-15','yyyy-mm-dd')));
--4、获取会计部门(ACCounting)中的职员所工作的项目名称
--方法一
select p.project_name,e.*
from employee e,department d,works_on w,eproject p
where e.dept_no=d.dept_no and e.emp_no=w.emp_no and w.project_no=p.project_no and lower(trim(d.dept_name))=lower('ACCounting');
--方法二
select p.project_name,e.*
from employee e join department d on(e.dept_no=d.dept_no and lower(trim(d.dept_name))=lower('ACCounting')) join works_on w on(e.emp_no=w.emp_no) join eproject p
on (w.project_no=p.project_no );
--5、获取与至少一个其他部门拥有相同所在地的所有部门的全部细节信息(自连接)
-- 方法一
select d.*,d2.*
from department d,department d2
where d.location=d2.location;
-- 方法二
select d.*,d2.*
from department d join department d2
on (d.location=d2.location);
select * from department;
--6、获取与至少一位其他职员工作在同一部门且居住在同一城市的每一名职员编号、姓名
-- 居住地(使用employee_enh)
-- 方法一
select en.*
from employee_enh en,department d
where en.dept_no=d.dept_no and en.emp_address=en.emp_address;
--方法二
select en.*
from employee_enh en join department d
on(en.dept_no=d.dept_no and en.emp_address=en.emp_address);
--7、获取为项目编号为p3工作的所有职员姓名
-- 方法一
select e.*
from eproject p,employee e,works_on w
where p.project_no=w.project_no and w.emp_no=e.emp_no and p.project_no='p3';
-- 方法二
select e.*
from eproject p join works_on w on(p.project_no=w.project_no)
join employee e on (w.emp_no=e.emp_no and p.project_no='p3');
--10、获取为项目p1工作的所有职员姓名
-- 方法一
select e.*
from eproject p,employee e,works_on w
where p.project_no=w.project_no and w.emp_no=e.emp_no and p.project_no='p1';
-- 方法二
select e.*
from eproject p join works_on w on(p.project_no=w.project_no)
join employee e on( w.emp_no=e.emp_no and p.project_no='p1');
--11、获取工作部门不再Seattle的所有职员的姓名
-- 方法一
select e.*
from employee e,department d
where not exists (select e2.* from employee e2,department d2 where e2.dept_no=d2.dept_no and lower(trim(d2.location))=lower('Seattle'));
-- 方法二
select e.*
from employee e join department d
on(e.dept_no=d.dept_no and d.location! ='Seattle');
--方法三
select e.*
from department d,employee e
where e.dept_no=d.dept_no and d.location! ='Seattle';
--12、获取工作部门所在地和员工居住地的相同的员工信息
-- 方法一
select en.*,d.*
from department d , employee_enh en
where (d.dept_no=en.dept_no and d.location=en.emp_address);
-- 方法二
select en.*
from department d , employee_enh en
union
select en2.* from department d2 join employee_enh en2 on(d2.dept_no=en2.dept_no and d2.location=en2.emp_address);
--13、获取工作部门所在地和员工居住地的不同的员工信息
-- 方法一
select en.*
from department d,employee_enh en
where exists(select en2.* from department d2,employee_enh en2 where d2.location!=en2.emp_address);
--方法二
select en.*
from department d ,employee_enh en
union
select en2.* from department d2 join employee_enh en2 on (en2.dept_no=d2.dept_no and d2.location !=en2.emp_address);
还未结束,下次继续更新。。。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

要查询 Oracle 表空间大小,请遵循以下步骤:确定表空间名称,方法是运行查询:SELECT tablespace_name FROM dba_tablespaces;查询表空间大小,方法是运行查询:SELECT sum(bytes) AS total_size, sum(bytes_free) AS available_space, sum(bytes) - sum(bytes_free) AS used_space FROM dba_data_files WHERE tablespace_

Oracle 视图加密允许您加密视图中的数据,从而增强敏感信息安全性。步骤包括:1) 创建主加密密钥 (MEk);2) 创建加密视图,指定要加密的视图和 MEk;3) 授权用户访问加密视图。加密视图工作原理:当用户查询加密视图时,Oracle 使用 MEk 解密数据,确保只有授权用户可以访问可读数据。

在 Oracle 中查看实例名的方法有三种:命令行中使用 "sqlplus" 和 "select instance_name from v$instance;" 命令。在 SQL*Plus 中使用 "show instance_name;" 命令。通过操作系统的任务管理器、Oracle Enterprise Manager 或检查环境变量 (Linux 上的 ORACLE_SID)。

数据导入方法:1. 使用 SQLLoader 实用程序:准备数据文件、创建控制文件、运行 SQLLoader;2. 使用 IMP/EXP 工具:导出数据、导入数据。提示:1. 大数据集推荐 SQL*Loader;2. 目标表应存在,列定义匹配;3. 导入后需验证数据完整性。

Oracle 安装失败的卸载方法:关闭 Oracle 服务,删除 Oracle 程序文件和注册表项,卸载 Oracle 环境变量,重新启动计算机。若卸载失败,可使用 Oracle 通用卸载工具手动卸载。

在 Oracle 中获取时间有以下方法:CURRENT_TIMESTAMP:返回当前系统时间,精确到秒。SYSTIMESTAMP:比 CURRENT_TIMESTAMP 更准确,精确到纳秒。SYSDATE:返回当前系统日期,不含时间部分。TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'): 将当前系统日期和时间转换为特定格式。EXTRACT:从时间值中提取特定部分,如年份、月份或小时。

可以通过使用 Oracle 的动态 SQL 来根据运行时输入创建和执行 SQL 语句。步骤包括:准备一个空字符串变量来存储动态生成的 SQL 语句。使用 EXECUTE IMMEDIATE 或 PREPARE 语句编译和执行动态 SQL 语句。使用 bind 变量传递用户输入或其他动态值给动态 SQL。使用 EXECUTE IMMEDIATE 或 EXECUTE 执行动态 SQL 语句。

AWR 报告是显示数据库性能和活动快照的报告,解读步骤包括:识别活动快照的日期和时间。查看活动、资源消耗的概览。分析会话活动,找出会话类型、资源消耗和等待事件。查找潜在性能瓶颈,如缓慢的 SQL 语句、资源争用和 I/O 问题。查看等待事件,识别并解决它们以提高性能。分析闩锁和内存使用模式,以识别导致性能问题的内存问题。
