当前位置:首页 » 数据仓库 » oracle数据库查询练习题
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

oracle数据库查询练习题

发布时间: 2022-11-21 09:45:32

❶ 求ORACLE数据库的练习题

使用scott/tiger用户下的emp表完成下列练习,表的结构说明如下

emp员工表 字段内容如下:

empno 员工号
ename 员工姓名
job 工作
mgr 上级编号
hiredate 受雇日期
sal 薪金
comm 佣金
deptno 部门编号

1.选择部门30中的所有员工.

2.列出所有办事员(CLERK)的姓名,编号和部门编号.

3.找出佣金高于薪金的员工.

4.找出佣金高于薪金的60%的员工.

5.找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料.

6.找出部门10中所有经理(MANAGER),部门20中所有办事员(CLERK),既不是经理又不是办事员但其薪金大于或等于2000的所有员工的详细资料.

7.找出收取佣金的员工的不同工作.

8.找出不收取佣金或收取的佣金低于100的员工.

9.找出各月倒数第3天受雇的所有员工.

10.找出早于12年前受雇的员工.

11.以首字母大写的方式显示所有员工的姓名.

12.显示正好为5个字符的员工的姓名.

13.显示不带有"R"的员工的姓名.

14.显示所有员工姓名的前三个字符.

15.显示所有员工的姓名,用a替换所有"A"

16.显示满10年服务年限的员工的姓名和受雇日期.

17.显示员工的详细资料,按姓名排序.

18.显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面.

19.显示所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同则按薪金排序.

20.显示所有员工的姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份相同则将最早年份的员工排在最前面.

21.显示在一个月为30天的情况所有员工的日薪金,忽略余数.

22.找出在(任何年份的)2月受聘的所有员工。

23.对于每个员工,显示其加入公司的天数.

24.显示姓名字段的任何位置包含"A"的所有员工的姓名.

25.以年月日的方式显示所有员工的服务年限. (大概)

❷ Oracle测试题

Oracle的体系结构是一个需要掌握的比较重要的概念,这个结构体系也比较复杂,我稍为总结了一下概念。

Oracle数据库主要的物理存储结构包括构成数据库的各种物理文件,包括数据文件、控件文件、重演日志文件、归档重演日志文件、参数文件、警告、跟踪日志文件和备份文件等。

数据文件:
每个Oracle数据库都有一个或者多个物理数据文件(datafile),数据文件包含了所有的数据库数据,数据库的逻辑结构的数据(如表、索引等)都被物理地存储在分给数据库的数据文件中。

数据文件包含下列类型的数据:
表数据
索引数据
数据字典定义
回滚事务所需的信息
存储过程、函数和数据包的代码
用来排序的临时数据

数据文件的特点:
一个数据文件只能与一个数据库相关联。
可以对数据文件设置一些特性,在数据库空间用完的情况下可以自动扩展。
一个或多个数据文件构成了一个数据库存储的逻辑单元——表空间(table space)。
数据会汇集在内存里,由数据库的书写进程(DBWR)决定。(DBWO?)

select status,bytes,name from v$datafile;

控制文件:
数据库控制文件(control file)是一个很小的二进制文件,它维护着数据库的全局物理结构,用以支持数据库成功地启动和运行。创建数据库时,同时就提供了与之对应的控制文件。
每一个控制文件只能与一个Oracle数据库相关联。
控制文件包含了数据库实例在启动和正常操作时,访问数据库所需的关于数据库的信息。

控制文件包含以下的信息:
数据库名称
数据库创建的时间戳
相关的数据文件、重演日志文件的名称和位置
表空间信息
数据文件脱机范围
日志历史
归档日志信息
备份组和备份块信息
备份数据文件和重演日志信息
数据文件拷贝信息
当前日志序列数
检查点(checkpoint)信息

保护控制文件,必须注意的几个方面:
每一个数据库都要使用多路复制的控制文件
把每一个控制文件的复件保存在不同的物理磁盘上
使用操作系统的冗余镜像机制
监控备份

select name from v$controlfile;

重演日志文件:
每一个Oracle数据库都有一个由两个或多个重演日志文件(redo log file)构成的文件组,这组重演日志文件合称为数据库的重演日志。
一个重演日志文件是由重做条目(redo entry,也叫重做记录)组成的。
重演日志的主要功能是记录下所有数据的改变。
重演日志文件中的信息可以用在数据库从系统失败或者介质失败的恢复之中 。

select * from v$logfile;

归档重演日志文件:
归档重演日志文件(archive log file)就是对写满的重演日志文件复制若保存生成的文件。可以通过设置数据库在归档模式(ARCHIVELOG mode)下来自动地保存日志文件。归档进程(ARCO)在后台负责把写满的重演日志文件复制到归档日志目标中。归档日志文件在数据库恢复时起决定性作用。

Select * From v$archived_log

参数文件:
参数文件(parameter file)包含了一组关于数据库和实例的配置参数。Oracle推荐用户使用一个服务器参数文件(SPFILE)作为维护初始化参数的动态手段。一个服务器参数文件允许用户在一个服务器端的磁盘文件里持久地保存和管理初始化参数。

警告、跟踪日志文件:
每一个服务器和后台进程都可以写入一个相关的跟踪文件(trace file)。当一个进程发现了一个内部错误的时候,它把关于错误的信息转储到它的跟踪文件里。写入到跟踪文件的一部分信息是给数据库管理员使用的,而其他信息是给Oracle支持服务的。跟踪文件信息还可以用于调整应用程序和实例。
警告文件(alert file)是一种特殊的跟踪文件,一个数据库的警告文件就是包括按时间排序的消息和错误的记录。

备份文件:
用户管理的备份和恢复实际上就是要求用户在试图恢复备份的时候先还原备份文件。服务器管理的备份和恢复管理了备份过程,例如,调度备份及恢复过程就是在需要恢复的时候施加正确的备份文件。

❸ 求解答:oracle数据库的题目.

a. 找出最贵的商品(item)的名称和价格
SELECT
name, price
FROM
item
WHERE
price = ( SELECT MAX(it.price) FROM item it);

b. 找出每个月每个商品的销售总金额;
SELECT
TO_CHAR(transaction.date, 'MM') AS 月,
item.name AS 商品名,
SUM( itemSale.quantity * item.price ) AS 销售额
FROM
transaction, itemSale, item
WHERE
transaction.transid = itemSale.transid
AND itemSale.itemid = item.itemid
GROUP BY
TO_CHAR(transaction.date, 'MM') ,
item.name

c. 找出从来也没有销售过的商品;
SELECT
*
FROM
item
WHERE
itemid NOT IN ( SELECT DISTINCT itemid FROM itemSale)
-- 上面这个估计执行效率不高...

d.找出从来也没有买过“酒”的所有客户。

SELECT
*
FROM
customer
WHERE
customer.custid NOT IN
( SELECT transaction.custid
FROM
transaction, itemSale, item
WHERE
transaction.transid = itemSale.transid
AND itemSale.itemid = item.itemid
AND item.name LIKE '%酒%'
)
-- 上面这个估计执行效率也是不高...

❹ 关于Oracle数据库的几个习题求答案。谢谢

2--c
3--b
7--
9--c
6--1~8
7--tnsping或者netca
9--dba_indexes (user_indexes)

❺ 急求 解 一道oracle 数据库 数据查询入门基础题 数据操作方面

DECLARE
v_id INT;
v_last_name VARCHAR2(20);
v_first_name VARCHAR2(20);
v_userid CHAR(8);
v_salary NUMBER(6);
BEGIN
v_id:=&输入ID;
v_last_name:='&请输入last_name';
v_first_name:='&请输入first_name';
v_salary:='&请输入salary';
v_userid:=SUBSTR(v_first_name,1,1)||SUBSTR(v_last_name,1,7);
INSERT INTO my_employee VALUES(v_id,v_last_name,v_first_name,v_userid,v_salary);
dbms_output.put_line(v_id);
dbms_output.put_line(v_last_name);
dbms_output.put_line(v_first_name);
dbms_output.put_line(v_userid);
dbms_output.put_line(v_salary);
commit;
END;

❻ oracle数据库关于查询的一些习题.

1、select * from t_download where down_date>=to_date('2012-03-07 15','yyyy-mm-dd HH24') and rownum<=100 order by down_date desc;
2、select price_id,app_date from t_appinfo where app_id in (select app_id from t_download where trunc(down_date)=trunc(sysdate-1);
3、select log_id from t_download group by log_id having count(log_id)>50;
4、select * from t_appinfo where app_name like '%中%';
5、select substr(app_id,5,1),substr(app_id,8,1) from t_appinfo;

❼ oracle练习题 列出至少有两个雇员的部门名称

既然求各部门总雇员数,应该要分组。你的语句没有分组选项。
各部门的雇员数:
select deptno,count(deptno) from emp group by deptno;
部门雇员大于1:
select deptno,count(deptno) from emp having count(*)>1 group by deptno;

❽ oracle数据库的上机题求助:

补齐函数lpad()或者rpad(),一个是左边补齐lpad(),一个是后边补齐rpad(),举例:
lpad('aa',5,‘0’)这个意思是在左边用0补齐5位,结果是000aa。
截取函数:substr(‘1234567’,1,5)意思是把1234567这个字符串从1个位置开始截取,截取到第五个

第一题:select substr(lpad('1234567',5,'0'),1,5) from al; 结果12345
select substr(lpad('123',5,'0'),1,5) from al; 结果00123
第二题:select case when length('1234567')>5 then '1234567' else lpad('1234567',5,'0') end from al; 结果1234567
select case when length('1234')>5 then '1234' else lpad('1234,5,'0') end from al; 结果01234

实验通过了,望采纳

❾ oracle练习题…………求解

1、select * from 员工表 where 上级 is null;
2、select * from 员工表 where bmid in (HY001,HY003,HY004)
3、select max(工资),姓名,岗位 from 员工表;
后面的看你了!