数据库查询及数据库对象 考试题原题和答案

一、单项选择题(每题1分)
1、安装oracle数据库过程中系统表空间是哪一个:( B )
A.sys B.system C.user D.myspace
2、系统中有权利启动和关闭数据库的用户是:( C )。
A.hr B.user C.system D.scott
3、在创建索引的时候,哪一类索引时默认的类型( A)
A . B-tree索引
B. 位图索引
C. 反转索引
D. 索引编排表
4、下面哪个操作会导致用户连接到ORACLE数据库,但不能创建表( A )
A. 授予了CONNECT的角色,但没有授予RESOURCE的角色
B. 没有授予用户系统管理员的角色
C. 数据库实例没有启动
D. 数据库监听没有启动
5、有一产品表(编号,名称,价格,数量,所属分类),下列语法不正确的是( D )
A、select * from 产品表 where价格>1000
B、select sum(价格) from 产品表 group by 所属分类 having max(价格)>1000
C、select所属分类,sum(价格) from 产品表 where 价格>1000 group by 所属分

D、select所属分类,sum(价格) from 产品表 where max(价格)>1000 group by 所属分类

6、在emp表中查找名字以G开头的SQL语句是:( A)。
A. SELECT ename, hiredate
FROM emp
WHERE ename like ‘G%’;
B. SELECT last_name, hiredate
FROM emp
WHERE ename == ‘G%’;
C. SELECT last_name, hiredate
FROM emp
WHERE ename in ‘G%’;
D. SELECT ename, hiredate
FROM emp
WHERE ename like ‘G___’;
7、下面的语句是可以显示(D )。
SELECT ename, sal, comm+12*sal
FROM emp;
A.雇员编号 B.岗位 C.上级主管 D.年薪
8、能够统计表中记录行数的函数是(A )。
A.COUNT B.TO_NUMBER C.AVG D.SUBSTR
9、能够统计表中计算平均值的函数是(C )。
A.COUNT B.TO_NUMBER C.AVG D.SUBSTR
10、以下语句中可以正确查看服务器时间的sql语句是:( A )
A. select sysdate from dual; B. select systemdate from dual;
C. select current_date from dual; D. 以上说法均不正确。
11、查看系统日期,要使用( D )。
A.实体化视图 B.表 C.序列 D.伪表Dual
12、下列不属于Oracle数据库中的约束条件的是(C )。
A.NOT NULL B.Unique C.INDEX D.Primary key
13、在Oracle中,( B )操作符返回并集操作并不包括重复行。
A. Intersect B. Union C. Union all D. Minus
14、在Oracle中,以下是STUDENTS表的结构:
SID NUMBER NOT NULL,Primary Key
SNAME VARCHAR2(30)
COURSE_ID VARCHAR2(10) NOT NULL
MARKS NUMBER
你需要查询参加了课程ID为C10的考试,并且分数排在前10名的学生,以下( D )语句能够实现此功能。
A.
SELECT SID,marks,ROWNUM “Rank”
FROM students
WHERE ROWNUM<=10 AND course_id=’C10’
ORDER BY marks DESC;
B.
SELECT SID,marks,ROWNUM”Rank”
FROM students
WHERE ROWNUM<=10 AND course_id=’C10’
ORDER BY marks;
C.
SELECT SID,marks,ROWNUM”Rank”
FROM (SELECT SID ,marks
FROM students
WHERE ROWNUM<=10 AND course_id=’C10’)
ORDER BY marks DESC;
D.
SELECT SID,marks,ROWNUM”Rank”
FROM (SELECT SID ,marks
FROM students
WHERE course_id=’C10’ ORDER BY marks DESC)
WHERE ROWNUM<=10;
15、Select语句中用来连接字符串的符号是( C )。
A. “+” B. “&” C. “||” D. “|”
16、在oracle中获取前10条的关键字是 (D )
A. top B .Limit C.first D. rownum
17、下面那个语句是错误的( D )
A. create synonym dept_synon for scott.dept
B. create sequence dept_seque increment by 1
C. alter sequence dept_seque increment by 2
D. drop dept_synon
18、下列不属于伪列的是( A )。
A.ENAME B.CURRVAL C.NEXTVAL D.ROWID
19、下列哪个关键字或子句用来限定查询结果集中的行?B
A.SELECT B.WHERE C.UPDATE D.INSERT
20.GROUP BY 子句的作用是什么? A
A.查询结果的分组条件 B.组的筛选条件
C.限定返回的行的判断条件 D.对结果集进行排序
21.HAVING 子句的作用是B
A.查询结果的分组条件 B.组的筛选条件
C.限定返回的行的判断条件 D.对结果集进行排序
二、判断题(正确输入T,错误输入F,每题1分)
1、索引可以提高增删改的效率,但是会降低查询的效率。( F )
2、HAVING后面的条件中可以有聚集函数,比如SUM(),AVG()等, WHERE 后面的条件中也可以有聚集函数。( F )
3、”占比30%” 可以通过like ‘30%’查出来。( F )
4、表空间是oracle 最大的逻辑组成部分。Oracle数据库由一个或多个表空间组成。一个表空间由一个或多个数据文件组成,但一个数据文件只能属于一个表空间。( T )
5、truncate是DDL操作,不能 rollback。( T )
6、如果需要向表中插入一批已经存在的数据,可以在INSERT语句中使用WHERE语句。( F )
7、创建视图之后,不可以通过该视图来修改视图基表的数据的。( F )
8、Oracle数据库中字符串数据是区分大小写的。( T )
9、在连接操作中,如果左表和右表中不满足连接条件的数据都出现在结果中
那么这种连接是全外连接。(T)
10、drop是属于DML(数据操纵)语言(F)
三、简答题(总分19分)
1、标准的SQL 语言语句类型可以分为哪几类?(3分)
DML 数据操纵语言 select 、update、 insert、 delete
DDL 数据定义语言 create 、alter、 drop
DCL 数据控制语言 grant 、 revoke
2、创建表的时候会有时候我们会添加相应的约束,请分别列出添加主键约束,唯一约束,验证约束,非空约束,外键约束的约束内容是怎样的?(4分)
主键约束:Primary key(列名) 唯一约束:unique(列名)
验证约束:check(验证内容)
非空约束:alter table 表名 modify(列名 not null)
外键约束: foreign key(列名)
references 外键表(外键表的列)
3、截至目前我们接触到的数据库对象有用户、表、同义词、序列、视图、索引、表空间,请分别指出对象对应的关键字和他们的作用是什么。(6分)
用户: user 相当于对应数据库的入口;
表: table 用于存储数据;
同义词: synonym 相当于对象的别名;
序列: sequence 生成连续的整数
视图: view 相当于临时表的存在,一般情况下仅用于查询;
索引: index 创建在一列或者多列上,目的是为了提高查询的效率;
表空间:tablespace 统一管理数据文件,由多个文件组成。

4、将缓存区的操作进行提交的时候用到的关键字是什么,收回的关键字是什么?(2分)
提交:commit;
回滚:rollback;
5、数据操纵语言都有哪些,请分别列出使用他们时的语法是怎样的?(4分)
DML语言
Select 查询
Select 列名 from 表明或者视图名
Insert 插入
Insert into 表名(列信息) values(值信息);
Update 更新/修改
Update 表名 set 字段名 = 值的信息 … where 条件;
Delete 删除
Delete from 表名 where 条件;
四、上机题(写出以下需求的sql语句,总分50分)
1、找出收取奖金的员工的不同工作。(2分)
Select distinct job from emp where comm is not null;
2、显示正好为 5 个字符的员工的姓名。(2分)
Select ename from emp where length(ename)=5;
3、显示所有员工的姓名的前三个字符。(2分)
Select substr(ename,0,3) name from emp ;
4、显所有员工的姓名,用 a 替换所有姓名中的 A。(2分)
select replace(ename,’A’,’a’) name from emp ;
5、显示所有员工的姓名以及在公司工作 10 年后的日期。(3分)
select ename ,add_months(hiredate,12*10) afterten from emp;
6、显示所有员工的姓名和加入公司的年份和月份,将员工入职年月 从低到高排序。(3分)
Select ename ,to_char(hiredate, ‘YYYY’) years,to_char(hiredate,’MM’)months from emp order by to_char(hiredate,’YYYYMM’) asc;
7、列出薪水处于第四位的员工。(2分)
select * from (select t.*,rownum as num from
(select * from emp order by sal desc ) t )
where num =4;

8、查找 EMP 表部门 30 中薪水第 3 的员工 。(2分)
select * from
(select t.* ,rownum as num from
(select * from emp where deptno = 30 order by sal desc ) t)
where num = 3;
9、查找 EMP 表中每个部门薪水前3的员工(考虑并列)(3分)
select * from (
select rank()
over(partition by deptno order by sal)num,
e.* from emp e) where num<=3;
用rank或者dense_rank都可以
10、查询于81年进公司所有员工的总收入(SAL和COMM)。(3分)
select sum(sal*12+nvl(comm,0)) from emp where extract(year from hiredate) = 1981;
11、列出在每个部门工作的员工数量、平均工资和平均服务期限(3分)
select deptno,count(deptno) num,trunc(sum(months_between(sysdate,hiredate)/12)/count(deptno)) years,avg((sysdate-hiredate)/365) year1 from emp group by deptno ;
12、将员工号为7369的员工薪水改为3500 , 职位改为Programer。(3分)
Update emp set sal = 3500 ,job =’Programer’ where empno = ‘7369’;
13、列出薪金高于公司平均薪金的所有员工,所在部门,上级领导,公司的工资等级。(5分)
select empno,deptno,mgr,grade from emp t,salgrade s where
Sal > (select avg(sal) from emp )
And t.sal between s.losal And s.hisal;
14、列出最低薪金大于2000的各种工作及从事此工作的全部雇员人数及所在部门名称、位置、平均工资。(5分)
select tmp.*,d.dname,d.loc from
(select job ,count(*) cou,avg(sal) avgsal from emp group by job having min(sal)>2000)tmp
left join emp e on tmp.job =e.job
left join dept d on e.deptno=d.deptno;
15、给任职日期超过30年或者在87年雇佣的雇员加薪,加薪原则:10部门增长10%,20部门增长20%,30部门增长30%(5分)
select empno ,decode(deptno,10,sal*1.1,20,sal*1.2,30,sal*1.3,sal) as num
from emp where hiredate < add_months(sysdate ,-12*30)
or extract(year from hiredate) = 1987;
16、创建一个序列,要求序列名字为myseq,从50开始,步长为5,最大值为1027,当达到最大值时,重新开始生成,数据库缓存区放的序列个数为20。并写出查看该序列的当前值和下一个值得语句。(5分)
CREATE SEQUENCE MYSEQ
START WITH 50
INCREMENT BY 5
MAXVALUE 1027
CYCLE
CACHE 20 ;
SELECT MYSEQ.NEXTVAL FROM DUAL; –下一个值
SELECT MYSEQ.CURRVAL FROM DUAL; –当前值

猜你喜欢

转载自blog.csdn.net/weixin_42800008/article/details/81429704