欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

oracle面试模拟试题

程序员文章站 2022-05-28 20:05:52
一、选择题(40分) oracle发出下列select语句: sql> select e.empno, e.ename, d.loc 2 from emp e, dept d 3 where...

一、选择题(40分)

oracle发出下列select语句:

sql> select e.empno, e.ename, d.loc

2 from emp e, dept d

3 where e.deptno = d.deptno

4 and substr(e.ename, 1, 1) = ‘s’;

下列哪个语句是oracle中可用的ansi兼容等价语句?

a.select empno, ename, loc from emp join dept on emp.deptno = dept.deptno where

substr(emp.ename, 1, 1) = ‘s’;

b.select empno, ename, loc from emp, dept on emp.deptno = dept.deptno where

substr(emp.ename, 1, 1) = ‘s’;

c.select empno, ename, loc from emp join dept where emp.deptno = dept.deptno and

substr(emp.ename, 1, 1) = ‘s’;

d.select empno, ename, loc from emp left join dept on emp.deptno = dept.deptno and

substr(emp.ename, 1, 1) = ‘s’;

下列哪个选项表示oracle中select语句的功能?

a.可以用select语句改变oracle中的数据 b.可以用select语句删除oracle中的数据

c.可以用select语句和另一个表的内容生成一个表 d.可以用select语句对表截断

你要操纵oracle数据,下列哪个不是sql命令?

a.select * from dual; b.set define

c.update emp set ename = 6543 where ename = ‘smithers’;

d.create table employees(empid varchar2(10) primary key);

你要在oracle中定义sql查询。下列哪个数据库对象不能直接从select语句中引用?

a.表 b.序列c.索引 d.视图

你要根据product_name列从profits表查询中过滤返回的数据。下列哪个子句包含相应过滤条件的引用?

a.select b.from c.whered.having

用下列代码所示的内容回答后面五个问题:

empno ename job mgr hiredate sal comm deptno

------ ---------- --------- ---- --------- ---- ---- ------

7369simthclerk790217-dec-8080020

7499allensalesman769820-feb-81160030030

7521wardsalesman769822-feb-81125050030

7566jonesmanager783902-apr-81297520

7654martinsalesman769828-sep-811250140030

7698blakemanager783901-may-81285030

7782clarkmanager783909-jun-81245010

7788scottanalyst756619-apr-82300020

7839kingpresident17-nov-81500010

7844turnersalesman769808-set-811500030

7876adamsclerk778823-dec-82110020

7900jamesclerk769803-dec-8195030

7902 ford analyst 7566 03-dec-81 3000 20

7934 miller clerk 7782 23-jan-82 1300 10

以下选项中哪个是下列查询返回的值:select sum(sal) + sum(comm) from emp where job = ‘analyst’ or ename like ‘j%’

a.6000 b.9925c.9975 d.null null参与运算后的结果还是null

以下选项中哪个是下列查询返回的值:select count(mgr) from emp where deptno = 10

a.1 b.2 count运算可以忽略空行c.3 d.null

以下选项中哪个是下列查询返回的值:select count(*) from emp where mgr = 7700-2

a.5 b.6 c.7 d.null

以下选项中哪个是下列sql命令产生的第三个员工:select ename, sal from emp where job= ‘salesman’ order by empno desc

a.allen b.martin c.turner d.ward

以下选项中哪个是发出下列查询后oracle返回的值:select substr(job, 1, 3) from emp where ename like upper(‘__ar%’)

a.ana b.cle c.mand.sal

要从orders表中取得数据,其中包括三个列customer、order_date与order_amt。可以用下列哪个where子句查询orders表,取得客户leslie超过2700的订单?

a.where customer = ‘leslie’;

b.where customer = ‘leslie’ and order_amt < 2700;

c.where customer = ‘leslie’ or order_amt > 2700;

d.where customer = ‘leslie’ and order_amt > 2700;

对表中的某一行,varchar2列包含数值smithy,应用程序在右侧填充七个空格。length()函数处理这个列值时,返回什么值?

a.6 b.13c.30 d.60

在oracle中发出的下列查询:

sql> select months_between(‘15-mar-83’,’15-mar-97’) form dual;

oracle返回什么?

a.14 b.-14 c.168d.-168

开发报表时,要连接三个表的信息,这些表为emp、dept与salgrade。只需要公司10级员工相应的员工姓名、部门地址与工资的记录。这个查询需要多少条件?

a.2 b.3c.4 d.5

oracle中发出下列命令:

sql> select e.ename,a.street_address,a.city,a.post_code

2 from emp e,addr a

3 where e.empno = a.empno(+)

4 and a.state = ‘texas’;

下列哪个选项显示等价ansi/iso语句?

a.select e.ename, a.street_address, a.city, a.state, a.post_code from emp e outer join addr a on e.empno = a.empno where a.state = ‘texas’;

b.select e.ename, a.street_address, a.city, a.state, a.post_code from emp e left outer join addr a on e.empno = a.empno where a.state = ‘texas’;

c.select e.ename, a.street_address, a.city, a.state, a.post_code from emp e right outer join addr a on e.empno = a.empno where a.state = ‘texas’;

d.select e.ename, a.street_address, a.city, a.state, a.post_code from emp e right outer join addr a where e.empno = a.empno(+) and a.state = ‘texas’;

对数据库运行下列哪个group by查询时会从oracle产生错误?

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;

检查下列sql的输出

sql> select a.deptno,a.job,b.loc,sum(a.sal)

2 from dmp a,dept b

3 where a.deptno = b.depton

4 group by a.deptno,a.job,b.loc

5 order by sum(a.sal);

这个查询按哪个列的顺序返回输出?

a.a.deptno b.a.job c.b.loc d.sum(a.sal)

用下列代码块回答问题:

sql> select deptno,job,avg(sal)

2 from emp

3 group by deptno,job

4 having avg(sal)>

5 ( select sal

6 from emp

7 where ename = ‘martin’ );

上述语句使用下面哪种子查询?

a.单行子查询b.多行子查询 c.from子句子查询 d.多列子查询

查询语句返回的结果是单行就是单行子查询

查询语句返回的是多行就是多行子查询

oracle中要生成数据库表,下列哪个选项是无效表生成的语句?

a.create table cats(c_name varchar2(10), c_weight number, c_owner varchar2(10));

b.create table my_cats as select * from cats where owner = ‘me’;

c.create global temporary table temp_cats(c_name varchar2(10), c_weight number, c_owner varchar2(10));

d.create table 51cats as select c_name, c_weight from cats where c_weight > 5;

job表有三个列job_name、job_desc和job_wage。用下列命令在job_desc表中插入新行:

sql> insert into job(job_name, job_desc)

2 values (‘luckey’, ‘makes coffee’);

之后查询这个表时得到的结果:

sql> select * from job where job_name = ‘luckey’;

job_name job_desc job_wage

--------- ------------ --------

luckey makes coffee 35

数据是如何填信job_wage表的?

a.job表中的luckey行已经存在,job_wage设置为35。

b.生成表时job_wage列定义的default子句指定插入行时的值。

c.insert语句的values子句包含隐藏值,在插入行时加入。

d.惟一理由是对job表发出的后一个update语句增加了job_wage值

二、问答题(20分)

1.写出常见的事务控制语句?举例说说事务具体的应用?

答:常见事物语句:commit,rollback,savepoint

举例:① dml a ……;

② commit;

③ dml b……;

④ rollback;

⑤ dml c;

⑥ savepoint sp;

⑦ dml d……;

⑧ rollback to sp;

分析:第二行提交语句执行过后,第四行的rollback语句回滚只能回滚到第二行,说明第三行的dml语句对数据库操作失效;第六行的设置保存点标记过以后,第八行的回滚就能回滚到sp保存点。

2. oracle中如何获取时间?

答:select to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) from dual;

3.truncate与 delete的区别?

答:两者都删除了表中数据,区别在于,delete语句只删除了数据,没有释放表的存储空间,而truncate语句既删除了表数据,也自动释放了表的存储空间,效率更高。

4. ddl和dml分别代表什么?

答:ddl:date definition language(数据定义语言),包括alter、rename、create、drop……

dml:date manipulation language(数据操作语言)

5. oracle使用什么语句给用户分配权限?

答:grant……to……

三、有员工表emp(eno,ename,salary,dno),其中各字段的含义依次为职工号、姓名、工资和所在部门号;有部门表dept(dno,dname),其中各字段的含义依次为部门号、部门名称。(10分)

1)请用sql语句将”销售部”的那些工资数额低于3000元的职工的工资上调10%.

update emp

set salary=salary*1.1

where salary<3000 and dno=(

select dno from dept where dname=’销售部’);

四、有下列一张数据表:(10分)

姓名

课程

成绩

张三

数学

88

李四

语文

80

张三

英语

51

王五

英语

62

李四

数学

92

王五

语文

78

张三

语文

56

王五

数学

42

李四

英语

73

……

……

……

1)写一个通用的查询语句,找出所有课程都及格的学生姓名。

select sname

from table_name

group by sname

having min(grade)>=60;