oracle常见面试题

news/2024/11/8 9:44:28/

1.你要对操纵Oracle数据库中的数据。下列哪个选项表示Oracle中select语句的功能,

并且不需要使用子查询(C)

A.可以用select语句改变Oracle中的数据

B.可以用select语句删除Oracle中的数据

C.可以用select语句和另一个表的内容生成一个表

D.可以用select语句对表截断

2. 你要在Oracle中定义SQL查询。下列哪个数据库对象不能直接从select语句中引用(C)

A.表 B.序列 C.索引 D.视图

3. 用下列代码块回答问题:

SQL> select ______(-45) as output from dual;

OUTPUT

——

-45

下列哪个单行函数无法产生这个输出(A)

A.abs() B.ceil() C.floor() D.round()

4. SQL *Plus中发出的下列语句:

SQL> select ceil(-97.342),

2 floor(-97.342),

3 round(-97.342),

4 trunc(-97.342)

5 from dual;

下列哪个函数不返回结果-97(B)

A.ceil() B.floor() C.round() D.trunc()

5. 你要定义外连接,下列哪个选项正确描述了外连接语句?( D )

A.由于外连接操作允许一个表中有NULL值,因此连接这些表时不必指定相等性比较。

B.在表A与B的外连接语句中,如果不管B表有无相应记录,都要显示表A的所有行,则可以使用右外连接。

C.在表A与B的外连接语句中,如果不管A表有无相应记录,都要显示表B的所有行,则可以使用左外连接。

D.尽管外连接操作允许一个表中有NULL值,但连接这些表时仍要指定相等性比较

6. 对数据库运行下列哪个group by查询时会从Oracle产生错误?( C )

A.select deptno, job, sum(sal) from emp group by job, deptno;

B.select sum(sal), deptno, job from emp group by job, deptno;

C.select deptno, job, sum(sal) from emp;

D. select deptno, sum(sal), job from emp group by job, deptno;

7.若account表中有14条记录,则用户执行了以下操作,结果是( A )

declare

cursor mycur is select * from emp;

begin

open mycur;

dbms_output.put_line(mycur%rowcount);

close mycur;

end;

A.0

B.14

C.7

D.编译不通过,无法执行。

8. 数据库系统的核心是__B____。

A、数据模型B、数据库管理系统C、软件工具D、数据库

9. 下列叙述中正确的是___C__。

A、数据库是一个独立的系统,不需要操作系统的支持

B、数据库设计是指设计数据库管理系统

C、数据库技术的根本目标是要解决数据共享的问题

D、数据库系统中,数据的物理结构必须与逻辑结构一致

10. SQL 语句中修改表结构的命令是_C___。

A、MODIFY TABLE B、MODIFY STRUCTURE C、ALTER TABLE

D、ALTER STRUCTURE

11. 如果要创建一个数据组分组报表,第一个分组表达式是”部门”,第二个分组表达

式是”性别”,第三个分组表达式是”基本工资”,当前索引的索引表达式应当是___B__。

A、部门+性别+基本工资

B、部门+性别+STR(基本工资)

C、STR(基本工资)+性别+部门

D、性别+部门+STR(基本工资)

12. 数据库DB、数据库系统DBS、数据库管理系统DBMS 三者之间的关系是___A___。

A、DBS 包括DB 和DBMS

B、DBMS 包括DB 和DBS

C、DB 包括DBS 和DBMS

D、DBS 就是DB,也就是DBMS

13. 定位第一条记录上的命令是__A____。

A、GO TOP B、GO BOTTOM C、GO 6 D、SKIP

14. 在关系模型中,实现”关系中不允许出现相同的元组”的约束是通过__B____。

A、候选键B、主键C、外键D、超键

15. 只有满足联接条件的记录才包含在查询结果中,这种联接为__C____。

A、左联接

B、右联接

C、内部联接

D、完全联接

16. 索引字段值不唯一,应该选择的索引类型为____B__。

A、主索引

B、普通索引

C、候选索引

D、唯一索引

17. 10. 从数据库中删除表的命令是___A__。

A、DROP TABLE

B、ALTER TABLE

C、DELETE TABLE

D、USE TABLE

18. DELETE FROM S WHERE 年龄>60 语句的功能是___B__。

A、从S 表中彻底删除年龄大于60 岁的记录

B、S 表中年龄大于60 岁的记录被加上删除标记

C、删除S 表

D、删除S 表的年龄列

19. SELECT-SQL 语句是__B___。

A、选择工作区语句

B、数据查询语句

C、选择标准语句

D、数据修改语句

20. SQL 语言是__C___语言。

A、层次数据库

B、网络数据库

C、关系数据库

D、非数据库

21. 在SQL 中,删除视图用__C____。

A、DROP SCHEMA 命令

B、CREATE TABLE 命令

C、DROP VIEW 命令

D、DROP INDEX 命令

22. 在数据库设计器中,建立两个表之间的一对多联系是通过以下索引实现的

__ A____。

A、”一方”表的主索引或候选索引,”多方”表的普通索引

B、”一方”表的主索引,”多方”表的普通索引或候选索引

C、”一方”表的普通索引,”多方”表的主索引或候选索引

D、”一方”表的普通索引,”多方”表的候选索引或普通索引

23. 下列函数中函数值为字符型的是___B___。

A、DATE()

B、TIME()

C、YEAR()

D、DATETIME()

24. 将查询结果放在数组中应使用___A___短语。

A、INTO CURSOR B、TO ARRAY C、INTO TABLE D、INTO ARRAY

简答题

1. 如何判断游标是否到了末尾。

答: cursor_name%notfound

2.写一个‘游标’并使用它。

答:

Declare

cursor cursor_name is

Select real_name from account;

Name varchar2(10);

Begin

open cursor_name;

loop

fetch cursor into name;

exit when cursor_name%notfound;

sql…

end loop;

close cursor_name;

end;

3. 使用存储过程访问数据库比直接用SQL语句访问有哪些优点?

答:

存储过程是预编译过的,执行时勿须编译,执行速度更快;存储过程封装了一批SQL语句,便于维护数据的完整性与一致性;可以实现代码的复用。

4.简述数据库的第一范式,第二范式,第三范式。并举例

答:

第一范式:(1NF)无重复的列。

第二范式:(2NF)属性完全依赖于主键。

第三范式:(3NF)属性不依赖于其它非主属性。

5. 试述事务的概念及事务的四个特性。

答:

事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。事务具有四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability)。这个四个特性也简称为ACID特性。

原子性:事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。隔离性:一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。

持续性:持续性也称永久性(Permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其执行结果有任何影响。

6. Truncate与 delete的区别?

答:

delete一般用于删除少量记录的操作,而且它是要使用回滚段并且要进行显示的提交事务。而truncate则使用于大量删除数据,而且隐式提交事务,其速度要比使用delete快的。

7. Truncate与 delete的区别?

答:

DDL表示数据定义语言,在ORACLE中主要包括CREATE,ALTER,DROP;

DML表示数据操作语言,主要的DML有SELECT,INSERT,UPDATE,DELETE。

8.如何获取系统时间。

答:

select sysdate from dual;

编程题

1、一个日期判断的sql 语句?

请取出tb_send 表中日期(SendTime 字段) 为当天的所有记录?(SendTime 字段为

datetime 型,包含日期与时间)

答:select * from tb where datediff(dd,SendTime,getdate())=0

2.一道SQL 语句面试题,关于group by 表内容:

2005-05-09 胜

2005-05-09 胜

2005-05-09 负

2005-05-09 负

2005-05-10 胜

2005-05-10 负

2005-05-10 负

如果要生成下列结果, 该如何写sql 语句?

胜负

2005-05-09 2 2

2005-05-10 1 2

答:

create table #tmp(rq varchar(10),shengfu nchar(1))

insert into #tmp values(‘2005-05-09′,’胜’)

insert into #tmp values(‘2005-05-09′,’胜’)

insert into #tmp values(‘2005-05-09′,’负’)

insert into #tmp values(‘2005-05-09′,’负’)

insert into #tmp values(‘2005-05-10′,’胜’)

insert into #tmp values(‘2005-05-10′,’负’)

insert into #tmp values(‘2005-05-10′,’负’)

1)select rq, sum(case when shengfu=’胜’ then 1 else 0 end)’胜’,sum(case when shengfu=’负’

then 1 else 0 end)’负’ from #tmp group by rq

2) select N.rq,N.勝,M.負from (

select rq,勝=count(*) from #tmp where shengfu=’胜’group by rq)N inner join

(select rq,負=count(*) from #tmp where shengfu=’负’group by rq)M on N.rq=M.rq

3)select a.col001,a.a1 胜,b.b1 负from

(select col001,count(col001) a1 from temp1 where col002=’胜’ group by col001) a,

(select col001,count(col001) b1 from temp1 where col002=’负’ group by col001) b

where a.col001=b.col001

3、请用SQL 语句实现:从TestDB 数据表中查询出所有月份的发生额都比101 科目相应月份的发生额高的科目。请注意:TestDB 中有很多科目,都有1-12 月份的发生额。

AccID:科目代码,Occmonth:发生额月份,DebitOccur:发生额。

数据库名:JcyAudit,数据集:Select * from TestDB

答:select a.*

from TestDB a

,(select Occmonth,max(DebitOccur) Debit101ccur from TestDB where AccID=’101′ group

by Occmonth) b

where a.Occmonth=b.Occmonth and a.DebitOccur>b.Debit101ccur

4.有一个两维表,M行N列,请用Oracle的存储过程,转置成N行M列。

答: CREATE OR REPLACE PROCEDURE row_col_convert(p_tabname IN VARCHAR2,view_name IN VARCHAR2 DEFAULT ‘v_tmp’)

AUTHID CURRENT_USER

AS

sqlstr VARCHAR2(4000);

sqlstr1 varchar2(500):=’select ”??” newid’;

cur sys_refcursor;

id_col VARCHAR2(30);

id varchar2(100);

BEGIN

if trim(p_tabname) is null then return; end if;

SELECT column_name INTO id_col FROM user_tab_cols WHERE table_name=upper(p_tabname) AND column_id=1;

OPEN cur FOR ‘select to_char(‘||id_col||’) from ‘||p_tabname||’ order by 1′;

loop

fetch cur INTO ID;

exit WHEN cur%notfound;

sqlstr1:=sqlstr1||’,max(decode(‘||id_col||’,”’||id||”’,to_char(??)))”‘||id||'”‘;

END loop;

sqlstr1:=sqlstr1||’ from ‘||p_tabname;

FOR cur1 IN(SELECT column_name FROM user_tab_cols WHERE table_name=upper(p_tabname) AND column_id>1) loop

sqlstr:=sqlstr||chr(10)||’union all ‘||REPLACE(sqlstr1,’??’,cur1.column_name);

END loop;

execute immediate ‘create or replace view ‘||view_name||’ as ‘||substr(sqlstr,12);

END;

5.请根据以下的描述,编写存储过程 sp_terminal

用户资料表:serv( serv_id number(10), pro_id number(10), user_type varchar2(30), terminal_name varchar2(30) )

其中,serv_id 为用户标识,是serv表的主键,prod_id为产品标识;user_type为用户类型;terminal_name为终端类型

终端类型临时表:terminal(serv_id number(10),terminal_name varchar2(30))

初始化的情况下,serv表的serv_id,prod_id,user_type字段是已知的,terminal_name字段是空的,现在主要根据prod_id,user_type字段的值来更新terminal_name字段

更新条件为:

当条件满足“prod_id = 1 and user_type=’A’“时,terminal_name更新为‘固话’

当条件满足”prod_id = 1 and user_type=’B’“时,terminal_name更新为‘小灵通’

当条件满足”prod_id = 2“时,terminal_name更新为‘宽带’

当条件满足”user_type=‘C’“时,terminal_name更新为‘CDMA’

以上条件均不满足时,terminal_name更新为 -1;

答:

create or replace procedure sp_terminal

is

begin

update serv t

set t.terminal_name = case when t.pro_id = 1 and t.user_type = ‘A’ then ‘固话’

when t.pro_id = 1 and t.user_type = ‘B’ then ‘小灵通’

when t.pro_id = 2 then ‘宽带’

when t.user_type = ‘C’ then ‘CDMA’

else ‘-1’

end;

update terminal a

set a.terminal_name = (select t.terminal_name

from serv t

where t.serv_id = a.serv_id)

where exists (select ‘x’

from serv t

where t.serv_id = a.serv_id);

end;


http://www.ppmy.cn/news/141663.html

相关文章

OpenMMLab实训营二期第一节笔记

OpenMMLab是深度学习视觉算法开源平台,是目前最大最全的开源深度学习视觉算法库,为学术和产业界提供一个可跨方向、结构精良、易复现的统一算法工具库。与NLP领域的HuggingFace类似,我们可以将OpenMMLab理解为CV领域的HuggingFace。 OpenMMLa…

3D打印机DIY之六------G代码命令

切片软件对模型进行切片后会生成.gcode文件,这就是我们常说的G代码。G代码是用于指导3D打印机怎么动作的文件,其实最主要就是指导打印机的3轴电机和挤出机如何动作,比如某个电机正转多少、速度多少。 3D打印机本质就是gcode的执行器&#xff…

GLSurfaceView 与 SurfaceView 联系与区别

同系列文章: SurfaceView为什么不能做动画? SurfaceViewMediaPlayer实现视频播放 本文目录 笔试题解析有了SurfaceView,为什么还要提供一个GLSurfaceView?SurfaceView有哪些用途? 笔试题解析 下面是属于GLSurfaceView特性的是&a…

ES6-ES13学习笔记(5.0)

ES2022的函数 //findLast findLastIndex() ES2022 发现在电脑自带的联想浏览器不支持此函数,还报错了 对于ECMA的支持还和浏览器有关以及浏览器版本有关,然后我使用Google浏览器就可以正常使用, 1.扩展运算符:三个点... ..…

【QCA6174】QCA6174 DFS认证4.6.2.3 Channel Shutdown信道不跳转及检测不到雷达信号问题分析及解决方案

WIFI DFS测试要求 4.6.2.3 Channel Shutdown ---信道关闭 是指一个设备自检测到雷达信号后,到停止相应的信道传输的过程,包括信道关闭传输时间和信道移除时间。 QCA6174 DFS测试调试指令 setRadar This command is used to inject a fake radar indication to the protoc…

浙江大华后端开发一面面经

目录 1.SpringBuffer和SpringBuilder的区别是什么?2.常用的集合类有哪些?HashMap的底层数据结构?推荐一下线程安全的Map?3.TCP和UDP的差异是什么?4.MySQL的左连接和右连接的区别?5.MySQL慢查询如何排查&…

包含合并单元格的表格快速排序

实例需求:现需要将原料配方成分表按照“原料含量”从高到低排序,如下图所示。由于表格中包含合并单元格,因此Excel的排序功能无法正常。 示例代码如下。 Sub demo()Dim data(), i, idx, k, slstRow Cells(Rows.Count, 2).End(xlUp).RowReDi…

Spring Boot 3.1中如何整合Spring Security和Keycloak

在今年2月14日的时候,Keycloak 团队宣布他们正在弃用大多数 Keycloak 适配器。其中包括Spring Security和Spring Boot的适配器,这意味着今后Keycloak团队将不再提供针对Spring Security和Spring Boot的集成方案。但是,如此强大的Keycloak&…