Oracle经典作业与答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

-----------------------day1-----------------------------------
1.查询职员表中工资大于1600的员工姓名和工资
Select ename, sal from emp where sal > 1600;
2.查询职员表中员工号为7369的员工的姓名和部门号码
Select ename, deptno from emp where empno = 7369;
3.选择职员表中工资不在4000到5000的员工的姓名和工资
Select ename, sal from emp where sal not between 4000 and 5000;
4.选择职员表中在20和30号部门工作的员工姓名和部门号
Select ename, deptno from emp where deptno in (20, 30);
5.选择职员表中没有管理者的员工姓名及职位, 按职位排序
Select ename, job from emp where mgr is null order by job;
6.选择职员表中有奖金的员工姓名,工资和奖金,按工资倒序排列
Select ename, sal, comm. From emp where comm is not null order by sal desc;
7.选择职员表中员工姓名的第三个字母是A的员工姓名
Select ename from emp where ename like ‘__A%’;
8.列出部门表中的部门名字和所在城市;
select dname, loc from dept;
9.显示出职员表中的不重复的岗位job
select distinct job from emp;
10.连接职员表中的职员名字、职位、薪水,列之间用逗号连接,列头显示成
OUT_PUT(提示:使用连接符||、别名)
select ename || ', ' || job || ', ' || OUT_PUT(将列名大写) sal from emp;
11.查询职员表emp中员工号、姓名、工资,以及工资提高百分之20%后的结

select empno, ename, sal, sal * 1.2 salary from emp;
12.查询员工的姓名和工资数,条件限定为工资数必须大于1200,并对查询结果
按入职时间进行排列,早入职排在前面,晚入职排在后面。

select ename, sal from emp where sal > 1200 order by hiredate;
13.列出除了ACCOUNT部门还有哪些部门。

select deptno, dname, loc from dept where dname <> 'ACCOUNT';
-----------------------day2-----------------------------------
1.将员工的姓名按首字母排序,并列出姓名的长度(length)
select ename, length(ename) from emp order by ename;
2.做查询显示下面形式的结果
<enamename> earns <sal> monthly but wants <sal*3>
例如:
Dream Salary
King earns $5000 monthly but wants $15000
select ename || ' earns $' || sal ||' mo nthly but wants $' || sal * 3 “Dream S alary” from emp;
3.使用decode函数,按照下面的条件:
JOB GRADE
PRESIDENT A
MANAGER B
ANALYST C
SALESMAN D
CLERK E
产生类似下面形式的结果
ENAME JOB GRADE
SMITH CLERK E
SELECT ename, job,
DECODE(job,'PRESIDENT','A',
'MANAGER','B',
'ANALYST','C',
'SALESMAN','D',
'CLERK','E'
) AS "Grade"
FROM EMP;
4.查询各员工的姓名ename,并显示出各员工在公司工作的月份数(即:与当前
日期比较,该员工已经工作了几个月, 用整数表示)。

select ename, round(months_between(sysdate, hiredate)) hire_months from emp;
5.现有数据表Customer,其结构如下所示:
cust_id NUMBER(4) Primary Key, --客户编码
cname VARCHAR2(25) Not Null, --客户姓名
birthday DATE, --客户生日
account NUMBER. --客户账户余额
(1).构造SQL语句,列出Customer数据表中每个客户的信息。

如果客户生日未提供,则该列值显示“not available” 。

如果没有余额信息,则显示“no account”。

(2).构造SQL语句,列出生日在1987年的客户的全部信息。

(3).构造SQL语句,列出客户帐户的余额总数。

1)select cust_id, cname, nvl(to_char(birthday, 'yyyy-mm-dd'), 'not available'),
nvl(to_char(account, '9999'), 'no account') from Customer;
2)select * from Customer where extract(year from birthday) = '1987';
3) select sum(account) from Customer;
6.按照”2009-4-11 20:35:10 ”格式显示系统时间。

select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') now from dual;
7.构造SQL语句查询员工表emp中员工编码empno,姓名ename,以及月收入
(薪水+ 奖金),注意有的员工暂时没有奖金。

select empno, ename, sal + nvl(comm, 0) month_salary from emp;
8.查找员工姓名的长度是5个字符的员工信息。

select * from emp where length(ename) = 5;
9.查询员工的姓名和工资,按下面的形式显示:(提示:使用lpad函数)
NAME SALARY
-----------------------------------------------------
SMITH $$$$$$$$$$24000
select ename name, lpad(sal, 15, '$') salary from emp;
10.查询薪水大于2000元的员工的姓名和薪水,薪水值显示为’RMB5000.00’这
种形式,并对查询结果按薪水的降序方式进行排列;
select ename, to_char(sal, 'L9999.00') salary from emp
where sal > 2000
order by sal desc;
11.构造查询语句,产生类似于下面形式的结果:
NAME HIREDATE REVIEW ----------------------------------------------------------------------------------------- SMITH 1980-12-17 1980年12月17日
select ename name, to_char(hiredate, 'yyyy-mm-dd') hiredate,
to_char(hiredate, 'yyyy"年"mm"月"dd"日"') review
from emp;
12.显示所有员工的姓名ename,部门号deptno和部门名称dname。

S
From emp e join dept d on e.deptno = d.deptno;
13.选择在DALLAS工作的员工的员工姓名、职位、部门编码、部门名字
S
From emp e join dept d on e.deptno = d.deptno and d.loc = ‘DALLAS’;
14.选择所有员工的姓名ename,员工号deptno,以及他的管理者mgr的姓名
ename和员工号deptno,结果类似于下面的格式
mag.empno "Mgr#"
from emp wor, emp mag
where wor.mgr = mag.empno;
15.查询各部门员工姓名和他们所在位置,结果类似于下面的格式
from emp e join dept d
using (deptno);
16.查询公司员工工资的最大值,最小值,平均值,总和
select max(sal), min(sal), avg(sal), sum(sal) from emp;
17.列出每个员工的名字,工资、涨薪后工资(涨幅为8%),元为单位进行四
舍五入
Select ename , sal , round(sal*1.08) from emp;
18.查询出JONES的领导是谁(JONES向谁报告)。

select e1.egr = e1.empno and e2.ename = 'JONES';
19.JONES领导谁。

(谁向JONES报告)。

select e1.ename from emp e1 , emp e2 where e1.mgr = e2.empno and e2.ename = 'JONES';
-----------------------day3-----------------------------------
1.查询各职位的员工工资的最大值,最小值,平均值,总和
select job, max(sal), min(sal), avg(sal), sum(sal)
from emp
group by job;
2.选择具有各个job的员工人数(提示:对job进行分组)
select job, count(*)
from emp
group by job;
3.查询员工最高工资和最低工资的差距,列名为DIFFERENCE;
select max(sal)-min(sal) "DIFFERENCE"
from emp;
4.查询各个管理者属下员工的最低工资,其中最低工资不能低于800,没有管
理者的员工不计算在内
select mgr, min(sal)
from emp
where mgr is not null
group by mgr
having min(sal) >= 800;
5.查询所有部门的部门名字dname,所在位置loc,员工数量和工资平均值;select dept.dname, dept.loc, COUNT, AVG
from dept
join(
select deptno, count(*) as "COUNT", avg(sal) as "AVG"
from emp
group by deptno
)
using(deptno);
6.查询和scott相同部门的员工姓名ename和雇用日期hiredate
select ename, hiredate
from emp
where deptno = (select deptno from emp where emp.ename = 'SCOTT'); 7.查询工资比公司平均工资高的所有员工的员工号empno,姓名ename和工
资sal。

select empno, ename, sal
from emp
where sal > (select avg(sal) from emp);
8.查询和姓名中包含字母u的员工在相同部门的员工的员工号empno和姓名
ename
select empno, ename
from emp
where deptno in (select deptno from emp where ename like '%U%');
9.查询在部门的loc为newYork的部门工作的员工的员工姓名ename,部门名
称dname和岗位名称job
from emp e join dept d
using (deptno)
where deptno = (select deptno from dept where loc = 'NEW YORK');
10.查询管理者是king的员工姓名ename和工资sal
select ename, sal
from emp
where mgr = (select empno from emp where ename = 'KING');
11.显示Operations部门有哪些职位
select distinct from emp e , no = d.deptno and d.dname = 'Operations';
12.各个部门中工资大于1500的员工人数
select dept_id , count(*) cnt from s_emp where salary > 1500 group by dept_id;
13.哪些员工的工资,高于整个公司的平均工资,列出员工的名字和工资(降序)
select first_name , salary from s_emp where salary > (select avg(salary) from s_emp) order by salary desc;
14.所在部门平均工资高于1500的员工名字
select first_name , salary from s_emp where dept_id in (select dept_id from s_emp group by dpet_id having avg(salary) > 1500);
15.列出各个部门中工资最高的员工的信息:名字、部门号、工资
select first_name , salary , dept_id from s_emp where (dept_id , salary) in (select dept_id , max(salary) from s_emp group by dept_id);
16.哪个部门的平均工资是最高的,列出部门号、平均工资
select dept_id,avg(salary) from s_emp group by dept_id having avg(salary) = (select max(avg(salary)) from s_emp);
-----------------------day4-----------------------------------
1.创建表employee,字段为:
Id number
First_Name varchar2(20),
last_Name varchar2(20),
mgrid NUMBER,
Job varchar2(20),
Salary number(7,2)
CREATE TABLE employee(
id NUMBER,
first_name VARCHAR2(20),
last_name VARCHAR2(20),
mgrid NUMBER,
salary NUMBER(7,2));
2.向表中插入下列数据,并提交,查询数据;
SQL> INSERT INTO employee
VALUES (1, 'Rose', 'Tyler', 4, 1500);
SQL> INSERT INTO employee
VALUES (2, 'Martha', 'Jones', 4, 2200);
SQL> INSERT INTO employee
VALUES (3, 'Donna', 'Noble', 4, 1300);
SQL> INSERT INTO employee
VALUES (4, 'Doctor', 'Who', NULL,3500);
SQL> INSERT INTO employee
VALUES (5, 'Jack', 'Harkness', 1, 3000);
SQL> COMMIT;
4.将3号员工的last_name修改为“Tate”,并提交,查询数据;SQL> UPDATE employee SET last_name = 'Tate'
WHERE id = 3;
5.将所有工资少于2000的员工的工资修改为2000 (不提交),并设置保存点,查询数据;
SQL> UPDATE employee SET salary = 2000 WHERE salary < 2000;
SQL> SAVEPOINT A;
6.删除employee表中所有数据(不提交),查询数据;
SQL> DELETE FROM employee;
SQL> SELECT * FROM employee;
7.回滚到第五题中的设置的保存点,查询数据;
SQL> Rollback to A;
SQL> SELECT * FROM employee;
8.删除表employee中所有数据,并提交,查询数据;
SQL> DELETE FROM employee;
SQL> COMMIT;
SQL> SELECT * FROM employee;
9.现有数据表Customer,其结构如下所示:
cust_id NUMBER(4) Primary Key, --客户编码
cname VARCHAR2(25) Not Null, --客户姓名
csex CHAR(6) --客户性别
birthday DATE, --客户生日
account NUMBER. --客户账户余额
1)、创建表,客户编码为主键,姓名不能为空,性别只能选择”男”或”女”;
CREATE TABLE customer(
cust_id NUMBER PRIMARY KEY,
cname VARCHAR2(25) NOT NULL,
csex CHAR(6),
birthday DATE,
account NUMBER,
CONSTRAINT cust_csex_chk CHECK (csex IN (‘男’, ‘女’),));
2).构造SQL语句,向Customer数据表中插入一条记录,其信息如下:客户编码使用第一步创建的序列获得,客户姓名为sean,性别为”男”,生日为1987-11-17,帐户余额为12345元。

INSERT INTO customer(cust_id, cname, birthday, account) VALUES(cust_seq.NEXTVAL, 'sean',
TO_DATE('1987-11-17','yyyy-mm-dd'), 12345);
-----------------------day5-----------------------------------
1.创建一个序列,初始值是1000,步进是10;
Create sequence start with 1000 increment by 10;
2.创建一个视图v_emp,内容是按部门分组,各个部门的薪水总和和员工人数;
视图字段定义为deptno, total_sal, total_count;
Create or replace view
Is
Select deptno, sum(sal) total_sal, count(*) total_count
From emp group by deptno;
3.查询视图,列出全部记录;
Select * from v_emp;
4.删除视图;
Drop view v_emp;
5.列出薪水最低的三名员工的名字;
SELECT ename, sal, ROWNUM
FROM (SELECT ename, sal
FROM emp
ORDER BY sal)
WHERE ROWNUM <= 3;
6.列出按员工编码排序,第6到第10条员工记录。

SELECT ename, sal, rn
FROM (SELECT ROWNUM rn, ename, sal
FROM emp
ORDER BY empno )
WHERE rn BETWEEN 6 AND 10;
O racle SQL开发基础
A、123456
B、234561
C、234516
D、124563
题号: 5 本题分数:2.00 分
查询语句SELECT SUBSTR(‘Hello World’,4,5) FROM DUAL;返回结果,正确的是
A、loWor
B、World
C、lloWo
D、lo Wo
D
题号: 6 本题分数:2.00 分
哪个活动将导致自动回滚()
A、GRANT
B、CREATE
C、系统崩溃
D、从SQL*Plus退出
SQL语句分类
Select查询语句
DML语句(数据操作语言)Insert / Update / Delete / Merge
DDL语句(数据定义语言)Create / Alter / Drop / Truncate
DCL语句(数据控制语言)Grant / Revoke
事务控制语句Commit / Rollback / Savepoint
题号: 7 本题分数:2.00 分
数据库中有两张表,employees(雇员表),departments(部门表),表结构为课程中试验案例, 如果想要获得全部雇员的信息,不管这个雇员是否被分配了部门,以下答案正确的是
A、SELECT last_name,department_name FROM employees JOIN departments(+)
B、SELECT last_name,department_name FROM employees(+) JOIN departments
C、SELECT last_name, department_name FROM employees e RIGHT JOIN departments d ON (e.department_id =d.department_id)
D、SELECT last_name, department_name FROM employees e LEFT JOIN departments d ON (e.department_id =d.department_id)
题号: 8 本
分数:2.00 分
关于Listener的描述正确的是()
A、监听、接收客户端连接请求
B、防止黑客入侵
C、验证连接数据库用户的身份。

D、实现客户端与数据库之间的信息传输
题号: 9 本
分数:2.00 分
SQL语句中连接字符串的符号是()
A、“+”
B、“||”
C、“|”
D、“&
题号: 10 本题分数:2.00 分
查询语句SELECT ROUND(13.57),ROUND
13.57,1),ROUND(13.57,-1),TRUNC(13.57,-2)FROM DUAL 返回结果,正确的是
A、13.57,13.6,10,13
B、13,13.5,14,0
C、14,13.6,10,0
D、13.6,13.5,11,13
题号: 11 本题分数:2.00 分
关于ROWNUM的描述,下列正确的是
A、ROWNUM是每个表中实际存在的列。

B、ROWNUM是每条查询语句执行完成之后,给每行数据填充的行号,行号从0开始。

C、ROWNUM做为条件表达式时,可以使用任何算术运算符。

D、ROWNUM经常用来做为分页查询。

题号: 12 本题分数:2.00 分
语句WHERE SAL BETWEEN 1000 AND 4000 与下列哪个子句等价
A、WHERE SAL〉=1000 AND SAL﹤=4000
B、WHERE SAL〉1000 AND SAL﹤4000
C、WHERE SAL〉=1000 OR SAL﹤=4000
D、WHERE SAL〉=1000 AND SAL ﹤4000
题号: 13 本题分数:2.00 分
关于TRUNCATE和DELETE命令,下列描述正确的是
A、两者都属于DML语句。

B、两者都不属于DML语句。

C、执行TRUNCATE命令之后,该会话中先前未提交的事务自动提交。

D、执行TRUNCATE命令之后,该会话中先前未提交的事务自动回滚。

题号: 14 本题分数:2.00 分
下面哪条命令能够保证只删除表employee.的数据而保留表的结构并且必要是可以回滚?
A、DROP TABLE employee.
B、DELETE FROM employee.
C、TRUNCATE TABLE employee.
D、This task can’t be accomplished.
题号: 15 本题分数:2.00 分
在关系数据库系统中,为了简化
户的查询操作,而又不增加数据的存储空间,常用的方法是创建()
A、另一个表(TABLE)
B、游标(CURSOR)
C、视图(VIEW)
D、索引(INDEX)
题号: 16 本题分数:2.00 分
EMP表结构如下:
ENAME VARCHAR2(35)
SALARY NUMBER(8,2)
HIRE_DATE DATE
下面那句话列出了在公司工作了五年以上的员工?
A、SELECT ENAMEFROM EMPWHERE SYSDATE-HIRE_DATE 〉5;
B、SELECT ENAMEFROM EMPWHERE HIRE_DATE-SYSDATE 〉5;
C、SELECT ENAMEFROM EMPWHERE (SYSDATE-HIRE_DATE)/365 〉5;
D、SELECT ENAMEFROM EMPWHERE (SYSDATE-HIRE_DATE)* 365 〉5;
题号: 17 本题分数:2.00 分
STUDENT_GRADES表结构如下:
STUDENT_ID NUMBER(12)
SEMESTER_END DATE
GPA NUMBER(4,3)
要求显示STUDENT_ID,SEMESTER_END,GPA,其中首先以semester_end从小到大,之后GPA从大到小排序显示?
A、SELECT student_id, semester_end, gpaFROM student_gradesORDER BY semester_end DESC, gpa DESC;
B、SELECT student_id, semester_end, gpaFROM student_gradesORDER BY semester_end ASC, gpa ASC;
C、SELECT student_id, semester_end, gpaFROM student_gradesORDER BY semester_end, gpa DESC;
D、SELECT student_id, semester_end, gpaFROM student_gradesORDER BY gpa DESC, semester_end DESC;
E、SEL
CT student_id, semester_end, gpaFROM student_gradesORDER BY gpa DESC, semester_end ASC;
题号: 18 本题分数:2.00 分
下列约束哪个是只能在列级定义的?
A、UNIQUE
B、NOT NULL
C、CHECK
D、PRIMARY KEY
E、FOREIGN KEY
题号: 19 本题分数:2.00 分
MARKS表结构如下:
STD_ID NUMBER(4)
STUDENT_NAME VARCHAR2(30)
SUBJ1 NUMBER(3)
SUBJ2 NUMBER(3)
下面sql语句中是否存在错误
SELECT subj1+subj2
total_marks, std_id
FROM marks
WHERE subj1 > AVG(subj1) AND subj2 > AVG(subj2)
ORDER BY total_marks;
如果有错误,请指出是哪一项?
A、能够成功执行
B、SELECT子句中有错误
C、WHERE子句中有错误
D、ORDER BY子句中有错误
题号: 20 本题分数:2.00 分
创建表时,一个VARCHAR2的列没有指定长度,它的缺省长度是多少?
A、1
B、25
C、4000
D、对于VARCHAR2列,必须指定列的长度
C
题号: 21 本题分数:2.00 分
EMP表结构如下:
LAST NAME VARCNAR2(35) NOT NULL
SALARY NUMBER(9,2) NOT NULL
COMMISION_PCT NUMBER(4,2)
要计算所有雇员的12*salary* commission_pct值,下面哪条语句能够保证显示所有雇员的12*salary* commissio _pct值
A、SELECT last_name, 12*salary* commission_pctFROM emp;
B、SELECT last_name, 12*salary* (commission_pct,0)FROM emp;
C、SELECT last_name, 12*salary*(nvl(commission_pct,0))FROM emp;
D、SELECT last_name, 12*salary*(decode(commission_pct,0))FROM emp;
题号: 22 本题分数:2.00 分
当quantity值是null时,哪个语句显示0
A、Select 100/quantity from inventory
B、B. Select NVL(100/quantity,0) from inventory
C、C. Select NULL(100/quantity,0) from inventory
D、D. Select TO_CHAR(100/quantity,0) from inventory
题号: 23 本题分数:2.00 分
对于权限的授予,下列说法正确的是
A、WITH GRANT OPTION 选项可以实现系统权限的传递。

B、WITH ADMIN OPTION 选项可以实现对象权限的传递。

C、以上两种说法都正确。

D、以上两种说法都不正确。

题号: 24 本题分数:2.00 分
视图ANN_SAL是基于employee表的,试图的结构如下:
NAME NULL TYPE
EMPNO NOT NULL NUMBER(4)
YEARLY_SAL NUMBER(9,2)
MONTHLY_SAL NUMBER(9,2)
下面哪条语句能够从试图ANN_SAL中检索出数据
A、SELECT * FROM ANN_SAL
B、SELECT * FROM EMPLOYEE
C、SELECT * FROM VIEW ANN_SAL
D、SELECT * FROM VIEW ANN_SAL IS DON EMPLOYEE
题号: 25 本题分数:2.00 分
将工资低于3000元或者低于平均工资的员工的工资上浮10%,下面哪条语句正确()
A、UPDATE EMP SET SAL=SAL*1.1 WHERE SAL ﹤3000 OR SAL﹤AVG(SAL)
B、UPDATE SET SAL=SAL*1.1 FROM EMP WHERE SAL ﹤3000 OR SAL﹤AVG(SAL)
C、UPDATE SET SAL=SAL*1.1 FROM EMP WHERE SAL﹤3000 OR SAL﹤(SELECT AVG(SAL) FROM EMP)
D、UPDATE EMP SET SAL=SAL*1.1 WHERE SAL﹤3000 OR SAL﹤(SELECT AVG(SAL) FROM EMP)
题号: 26 本题分数:2.00 分
部分匹配查询中有关通配符“_”的正确的叙述是()
A、“_”代表多个字符
B、“_”代表一个字符
C、“_”不能与“%”一同使用
D、“_”代表代表零个或多个字符
题号: 27 本题分数:2.00 分
哪个选项能够限制组函数返回的值
A、WHERE
B、HAVING
C、ORDER BY
D、不能限制组函数
题号: 28 本题分数:2.00 分
为了进行数据库访问,需要哪个权限
A、ALTER USER
B、CREATE USER
C、ALTER SYSTEM
D、CREATE SESSION
题号: 29 本题分数:2.00 分
关于对空值的描述,下列说法正确的是
A、包含空值的任何算术表达式结果都等于空。

B、包含空值的连接字符串|| 等于与空字符串连接,结果还是空值。

C、空值做为判断条件是写法是:判断字段=null。

D、表Emp中有5条记录,empID分别为1,2,3,4,5,那么查询语句Select * from Emp where empID not in (2,3,4,null)的执行后结果是2条记录。

题号: 30 本题分数:2.00 分
关于事务的描述,下列说法正确的是
A、执行一个DDL或DCL语句后,事务自动开始。

B、执行一个DDL或DCL语句后,事务自动提交。

C、执行一个DDL或DCL语句后,事务自动回滚。

D、执行一个DDL或DCL语句后,对当前事务没有影响。

题号: 31 本题分数:2.00 分
在STUDENTS表添加主键以下哪个语句是正确的?
A、ALTER TABLE students ADD PRIMARY KEY student_id
B、ALTER TABLE students ADD CONSTRAINT PRIMARY KEY (student_id)
C、ALTER TABLE students ADD CONSTRAINT stud_id_pk PRIMARY KEY student_id
D、ALTER TABLE students ADD CONSTRAINT stud_id_pk PRIMARY KEY (student_id)
E、ALTER TABLE students MODIFY CONSTRAINT stud_id_pk PRIMARY KEY (student_id)
题号: 32 本题分数:2.00 分
查看序列DEPT_DEPTNO的当前值,应该使用伪列( )
A、CURRVAL
B、NEXTVAL
C、MAXVAL
D、MINVAL
题号: 33 本题分数:2.00 分
在Oracle数据库中创建一个表,对其主键叙述正确的是()
A、一个表可以有多个主键
B、一个表的主键只能是一列
C、主键必须唯一且不能为空
D、联合主键的列数据类型必须一致
三、多选题共4题
题号: 34 本题分数:3.00 分
下面关于TRUNCATE和DELETE的说法正确的是()
A、TRUNCATE属于DDL,而DELETE属于DML
B、TRUNCATE与DELETE均能够删除表中的指定记录
C、TRUNCATE不能删除表中的指定记录,而DELETE能够删除表中的指定记录
D、在清空表记录的操作时,TRUNCATE的执行效率比DELETE高
E、TRUNCATE和DELETE没有差异
题号: 35 本题分数:2.00 分
关于使用AlTER TABLE进行修改表的定义,下列描述正确的是
A、使用该命令可以修改表的名称
B、使用该命令可以修改列的名称
C、使用该命令可以修改列的数据类型
D、使用该命令可以修改列的精度
题号: 36 本题分数:2.00 分
关于子查询的描述,下列说法正确的是
A、子查询必须要写在括号内。

B、子查询可以写在FROM,WHERE,HAVING子句中。

C、<ALL主要应用于多行子查询中,表示要小于子查询结果集的任意一个值即可。

D、子查询可以用在UPDATE的SET子句中。

题号: 37 本题分数:3.00 分
下面哪些语句是DML(数据操作语言)()
A、SELECT
B、INSERT
C、DELETE
D、CREATE
E、DROP
四、编程题共3题
题号: 38 本题分数:6.00 分
设有关系EMP(ENO,ENAME,SALARY,DNO),其中各属性的含义依次为职工号、姓名、工资和所在部门号,以及关系DEPT(DNO,DNAME,MANAGER),其中各属性含义依次为部门号、部门名称、部门经理的职工号。

请用SQL语句将“销售部”的那些工资数额低于600的职工的工资上调10%
UPDATE EMP
SET SALARY=SALARY*1.1
WHERE ENO IN (2分)
(SELECT ENO (2分)
FROM EMP, DEPT
AND DNAME=‘销售部’
AND SALARY<600) (2分)
题号: 39 本题分数:10.00 分
EMP 表结构如下
EMPNO NUMBER(4) not null pk,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2) fk
DEPT表结构如下
DEPTNO NUMBER(2) not null pk,
DNAME VARCHAR2(14),
LOC VARCHAR2(13)
1. 编写SQL语句:根据员工表(EMP)结构描述,写出创建EMP表的SQL语句。

(5分)
2. 编写SQL语句:员工表(EMP)中按照EMPNO排序后显示第6-10条记录的员工编号、员工姓名、雇佣日期。

(5分)
1. create table EMP
(
EMPNO NUMBER(4) not null primary key,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2) foreign key references dept(deptno)
)
(类型2分,每个约束1分)
FROM (SELECT ROWNUM enum, e2.empno,e2.ename,e2.hiredate FROM (SELECT * FROM emp ORDER BY empno) e2) e WHERE e.enum>=6 AND e.enum<=10
(子查询3分,rownum1分,排序1分)
题号: 40 本题分数:4.00 分
设有关系EMP(ENO,ENAME,SALARY,DNO),其中各属性的含义依次为职工号、姓名、工资和所在部门号,以及关系DEPT(DNO,DNAME,MANAGER),其中各属性含义依次为部门号、部门名称、部门经理的职工号。

试用SQL语句完成以下查询:
列出各部门中工资不低于600元的职工的平均工资。

SEL E CT DNO, AVG (S ALARY) (1分)
FROM EMP (1分)
WHERE SALARY>=600 (1分)
GROUP BY DNO (1分)。

相关文档
最新文档