Oracle数据库的数据提取(一道面试题)

Oracle数据库的数据提取(一道面试题),第1张

--建立临时视图1,检索每个部门第一名分数

create

or

replace

view

temp_v1

as

select

部门号,max(成绩)

as

成绩

from

Employee

group

by

部门号;

--在临时视图1的基础上建立临时视图2,检索第二名分数

create

or

replace

view

temp_v2

as

select

部门号,max(成绩)

as

成绩

from

Employee

where

(部门号,成绩)

not

in

(select

from

temp_v1)

group

by

部门号;

--联合两个临时视图的查询结果,建立临时视图3

create

or

replace

view

temp_v3

as

select

from

(select

from

temp_v1

union

select

from

temp_v2)

order

by

部门号,成绩;

--建立目标视图

create

or

replace

view

VdepEm2

as

select

部门号,员工号,成绩

from

Employee

where(部门号,成绩)

in

(select

from

temp_v3);

昨天有点事情耽搁了,这个应该可以实现你的要求。如果不允许建立临时视图的话,你把这几个临时视图糅进去就可以了。

oracle数据库优化的话主要有以下几个方面(我接触过的,可能不全面):

1 查询语句的优化,这个主要是根据语句和数据库索引的情况,结合查询计划的分析结果,对性能较低的查询语句进行重写,在执行查询前执行表分析语句也可以算这里;

2 数据结构优化,这个包括根据实际的应用中业务逻辑,对数据库的结构进行重新设计,或者创建相关索引里提高查询效率;

3 数据库设置优化,这方面主要是调整数据库和数据结构的相关参数提高应用访问系统的效率;

4 存储结构优化,在数据量较大的情况下,可以考虑通过数据库的存储结构进行优化,比如对数据进行partition,将数据存储在磁盘阵列服务器上等。

我的经验有限,以上是部分建议

WITH div_pm_ci AS(

select ci_id, substr( stu_ids, instr(','|| stu_ids, ',', 1, rn),

instr( stu_ids||',', ',', 1, rn) - instr(','|| stu_ids, ',', 1, rn) ) stu_id

from pm_ci,(select rownum rn from dual connect by rownum < 10)

where instr(','|| stu_ids, ',', 1, rn) > 0)

SELECT aci_id,wm_concat(bstu_name) stu_name

FROM div_pm_ci a,pm_stu b

WHERE astu_id=bstu_id

GROUP BY aci_id

提供参考

DECLARE

BEGIN

merge INTO t17_organ t1 

USING t40_organ t2 

ON t1organno=t2organno

WHEN matched THEN

  UPDATE 

  SET t1organname=t2organname,

    t1organlevel =t2organlevel,

    t1uporgankey =t2uporgankey,

    t1flag       =t2flag ;

COMMIT;

END;

/

1、首先明确一点,如果每条数据需要一秒的时间,假如是一亿条数据至少需要2年左右,意味着你两年都不能使用这个数据库,在现实生活中,你认为可能这样做吗?

2、解决这类问题的最好办法就是:时间换空间,例如:最早的新浪微薄的用户登陆日志就这样实现的,他的登陆日志并不是在用户每次登陆后进行更新的,而当用户量少的时间段进行数据的更新 *** 作,或则每次用户登陆的时候多执行一条更新的语句,不过这样做,缺少实时性。

3、正所谓:“鱼和熊掌二者不可得兼”,我认为并没有空间和时间可以得到完全平衡的方法,只是看你更在意空间还是时间问题。

系统权限: 允许用户执行特定的数据库动作,如创建表、创建索引、连接实例等(对用户而言)

对象权限: 允许用户 *** 纵一些特定的对象,如读取视图,可更新某些列、执行存储过程等(是针对表或视图而言的)

1系统权限

超过一百多种有效的权限(SELECT FROM SYSTEM_PRIVILEGE_MAP查)

数据库管理员具有高级权限以完成管理任务,例如:

–创建新用户

–删除用户

–删除表

–备份表

系统权限分类:

DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。

RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。

CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。

对于普通用户:授予connect, resource权限。

对于DBA管理用户:授予connect,resource, dba权限。

a常用的系统权限:

CREATE SESSION 创建会话

CREATE SEQUENCE 创建序列

CREATE SYNONYM 创建同名对象

CREATE TABLE 在用户模式中创建表

CREATE ANY TABLE 在任何模式中创建表

DROP TABLE 在用户模式中删除表

DROP ANY TABLE 在任何模式中删除表

CREATE PROCEDURE 创建存储过程

EXECUTE ANY PROCEDURE 执行任何模式的存储过程

CREATE USER 创建用户

DROP USER 删除用户

CREATE VIEW 创建视图

2对象权限

不同的对象具有不同的对象权限

对象的拥有者拥有所有权限

对象的拥有者可以向外分配权限

ORACLE一共有种对象权限

对象权限 表 视图 序列 过程

修改(alter) √ √

删除(delete) √ √

执行(execute) √

索引(index) √

插入(insert) √ √

关联(references) √ √

选择(select) √ √ √

更新(update) √ √

以上就是关于Oracle数据库的数据提取(一道面试题)全部的内容,包括:Oracle数据库的数据提取(一道面试题)、面试题:oracle数据库优化、关于oracle数据库的一道面试题,使用wm_concat()主函数完成等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10063130.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存