ORACLE笔试题
一、单选题
1.在Oracle中,以下不属于集合操作符的是( )。
A. UNION B. SUM C. MINUS D. INTERSECT
2.在Oracle中,执行下面的语句:
SELECT ceil(-97.342),
floor(-97.342),
round(-97.342),
trunc(-97.342)
FROM dual;
哪个函数的返回值不等于-97()。
A.ceil() B. floor() C. round(0) D. trunc()
3.以下哪个命令可以被用来从表 STATE中 drop 列 UPDATE_DT ( )。
A. ALTER TABLE STATE DROP COLUMN UPDATE_DT;
B. ALTER TABLE STATE REMOVE COLUMN UPDATE_DT;
C. DROP COLUMN UPDATE_DT FROM STATE;
D. 你不能从这个表中DROP该列.
4.哪个命令用来创建一个primary key constraint pk_books 在表 books, 列 ISBN上,请选择一个( )。
A. create primary key on books(ISBN);
B. create constraint pk_books primary key on books(ISBN);
C. alter table books add constraint pk_books primary key (ISBN);
D. alter table books add primary key (ISBN);
5.以下哪行有错( )。
1 X :=Y +200;
2 IF X <10 THEN
3 Y :=30;
4 ELSEIF X <40 THEN
5 Y :=20;
6 END IF;
7 END IF;
A. Line 2 B. Line 3 C. Line 4 D. Line 5
6.一个VIEW被以下语句创建,请问在该VIEW上可进行哪个操作( )
CREATE VIEW USA_STATES
AS SELECT *FROM STATE
WHERE CNT_CODE =1
WITH READ ONLY;
A. SELECT B. SELECT , UPDATE C. SELECT , DELETE D. SELECT , INSERT
7.下面哪个语句是表示将T表中第3~5行数据列出来的SQL语句()。
A. select * from t where rownum <=5
minus
select * from t where rownum <=2;
B. select * from t where rownum <=5
intersect
select * from t where rownum <=2;
C. select * from t where rownum <=5
union
select * from t where rownum <=2;
D. select * from t where rownum <=5
union all
select * from t where rownum <=2;
8.表EMPLOYEES的结构为:
(
EMP_ID NUMBER(4) NOT NULL
LAST_NAME VARCHAR2(30) NOT NULL
FIRST_NAME VARCHAR2(30)
DEPT_ID NUMBER(2)
JOB_CAT VARCHAR2(30)
SALARY NUMBER(8,2)
)
下面哪条语句可以查出各个dept_id的最大salary值和最小salary值并且它的最小值小于5000最大值大于15000( )
A. SELECT dept_id, MIN(salary), MAX(salary) FROM employees
WHERE MIN(salary) < 5000 AND MAX(salary) > 15000;
B. SELECT dept_id, MIN(salary), MAX(salary) FROM employees
WHERE MIN(salary) < 5000 AND MAX(salary) > 15000 GROUP BY dept_id;
C. SELECT dept_id, MIN(salary), MAX(salary) FROM employees
HAVING MIN(salary) < 5000 AND MAX(salary) > 15000;
D. SELECT dept_id, MIN(salary), MAX(salary) FROM employees
GROUP BY dept_id HAVING MIN(salary) < 5000 AND MAX(salary) > 15000;
E. SELECT dept_id, MIN(salary), MAX(salary) FROM employees
GROUP BY dept_id, salary HAVING MIN(salary) < 5000 AND MAX(salary) > 15000;
9.在oracle中,下面哪个函数与||运算符有相同的功能( )。
A、 ltrim B、contact C、substr D、instr
10.函数floor(-2345.67)返回结果是( )。
A. 2345.67 B. 2346 C.-2346 D. -2345
11. Oracle数据库中,下面()可以作为有效的列名。(选择一项)
A. Column B. 123_NUM C. NUM_#123 D. #NUM123
12.表TEST数据如下,P_ID为上级ID:
CREATE TABLE TEST AS
SELECT 1 ID ,NULL P_ID ,'a' NAME FROM DUAL UNION
SELECT 2 ID ,1 P_ID ,'b' NAME FROM DUAL UNION
SELECT 3 ID ,1 P_ID ,'c' NAME FROM DUAL UNION
SELECT 4 ID ,2 P_ID ,'d' NAME FROM DUAL UNION
SELECT 5 ID ,2 P_ID ,'e' NAME FROM DUAL UNION
SELECT 6 ID ,4 P_ID ,'f' NAME FROM DUAL UNION
SELECT 7 ID ,4 P_ID ,'g' NAME FROM DUAL UNION
SELECT 8 ID ,1 P_ID ,'h' NAME FROM DUAL;
以下哪段SQL实现查询ID为2但不包括ID=2的所有下级数据( )。
A. SELECT * FROM TEST CONNECT BY PRIOR P_ID=ID START WITH ID=2;
B. SELECT * FROM TEST CONNECT BY PRIOR ID=P_ID START WITH ID=2;
C. SELECT * FROM TEST CONNECT BY PRIOR P_ID=ID START WITH P_ID=2;
D. SELECT * FROM TEST CONNECT BY PRIOR ID=P_ID START WITH P_ID=2;
13. 表EMPLOYEES结构为
(
EMPLOYEE_ID NUMBER(6) not null primary key,
FIRST_NAME VARCHAR2(20) unique,
LAST_NAME VARCHAR2(25),
EMAIL VARCHAR2(25) not null,
PHONE_NUMBER VARCHAR2(20),
HIRE_DATE DATE,
JOB_ID VARCHAR2(10),
SALARY NUMBER(8,2),
COMMISSION_PCT NUMBER(2,2),
MANAGER_ID NUMBER(6),
DEPARTMENT_ID NUMBER(4)
)
以下哪几个语句可算出表中记录,多选 ( )
A.select count(*) from EMPLOYEES
B.select count(EMPLOYEE_ID) from employees
C.select count(FIRST_NAME) from employees
D.select count(EMAIL) from employees
E.select count(JOB_ID) from employees
二、简答题
1. 有EMP表一张,字段为ID,NAME,ID有重复数据,请写出有重复数据的id、NAME语句,并写出没有重复数据的ID、name语句。
2. 去除字符串“ aabb ”两边的空格(函数)。
3. student表字段为(classno,name,birthday),将所有3班出生日期小于1981年5月12日的记录删除。
4. student表字段为(classno,name,score)
修改表student的数据,将所有一班的学生成绩加10分
三、编程题
表结构如下:
Dept(部门表): dno(部门号),dname(部门名)
Emp(员工表):eno(员工号),ename(员工姓名),esex(性别:男士/女士),sal(工资),dno(部门号),join_date(入职时间),elevel(级别:1,2,3…)
1. 列出部门为“销售部”,入职时间为2011年12月1日之前的所有男员工工资大于5000元的信息,并按入职时间降序、工资升序进行展示,展示内容为:部门名,员工姓名,工资,入职时间。
2. 列出员工人数最多的部门员工平均工资。
答:
3. 写出SQL实现入职超过三年的员 工工资增加10%、级别加1。
4. 列出各部门员工工资在2000到3000之间不同性别人数,展示字段如下:部门、男士人数、女士人数。