Oralce数据库
一、选择题
1、在SQL的查询语句中,用于分组查询的语句是( C )。
A)ORDER BY B)WHERE C)GROUP BY D)HAVING
2、在“学生情况.DBF”表中,查询计算机专业、助学金大于40元的学生的姓名,正确的语句是( C )。
A)SELECT 姓名 FROM 学生情况 WHERE 计算机 .AND.助学金<40
B)SELECT 姓名 FROM 学生情况 WHERE 专业=“计算机”.OR.助学金>40
C)SELECT 姓名 FROM 学生情况 WHERE 专业=“计算机”.AND.助学金>40
D)SELECT 姓名 FROM 学生情况 WHERE 专业=“计算机”.AND.助学金<40
3、下列SQL语句中,修改表结构的是( A )。
A)ALTER B)CREATE C)DESC D)RENAME
4、已知职工表EMP有工号E_NO和工资E_SAL两个字段。从职工关系中检索所有工资值,要求在输出结果中没有重复的工资值,则SQL的命令语句能实现上述功能的是( B )。
A)SELECT ALL E_SAL FROM EMP
B)SELECT DISTINCT E_SAL FROM EMP
C)SELECT E_SAL FROM EMP
D)SELECT E_SAL WHERE EMP
5、请选出属于DML的选项( C )
A) TRUNCATE B)CREAT C)DELETE D)DROP
6、视图存放在哪里(B)
A.数据库的表中 B.数据字典的select语句中
C.from列表的第一个表格的select语句中 D.列表的第二个表格的select语句中
7、当fetch执行失败时,哪种游标的属性值为true(C)
A.%isopen B.%found C.%notfound D.%rowcount
8、下列那些说法是正确的(B )
A) 一个事务中的某条SQL命令提交时,其它SQL命令可以不提交。
B) 在一个关系表中,主键可唯一标识一行记录。
C) 一个关系表中的外键必定是另一表中的主键。
D) 回滚可以在事务失败时,回到操作事务前的数据状态。
9、假如一个变量的值为nuLL,有一条if语句,
if变量=NULL
分支1
else
分支2
请问最终执行的结果是(B)
A) 分支1 B)分支2 C)系统错误提示 D)都没有执行
10、关于主键(primary key)和唯一索引(unique index)的说法哪些是错误的?(A)
A、唯一索引的列允许为NULL值
B、 主键的列不允许为NULL值
C、 一个表只能有一个唯一索引
11、教师信息表teacher包含以下字段:
LAST_NAME VARCHAR2(25)
FIRST_NAME VARCHAR2(25)
EMAIL VARCHAR2(25)
下面哪个语句可以显示无EMAIL地址的教师的姓名( C )
SELECT last_name,fist_name from teacher where email=null
SELECT last_name,first_name from teacher where email<>null
SELECT last_name,first_name from teacher where email IS null
SELECT last_name,first_name from teacher where email IS NOT NULL
12、在执行一个查询时哪个是正确的顺序?(C)
A、解析、执行 B、执行、解析、获取
C、解析、执行、获取 D、解析、获取
13、如下语句
if V_num>5 then
v_example:=1:
elSif V_num>10 then
v_example:=2:
elSif v_hum<20 then
v_example:=3:
elsif v_num<39 then
v_example:=4:
else v_example:=5:
如果v num=37,则v—example的值是多少()
A、1 B、2 C、3 D、4 E、5
二、判断对错
1、一个表空间可以含有多个数据文件,一个数据文件也可以跨多个表空间。一个表不可以跨表空间( 错误 )
2、一个表test 有字段 id,name,age,address,email,salary删除age 大于平均年龄的记录
这样写可以吗? delete from test where age > avg(age); ( 错误 )
3、BETWEEN AND运算符是否既可以用于数值表达式,又可以用于字符表达式? ( 正确 )
二、简答题:
1、用SQL语句写出以下操作
a、 建一张数据表EMP(职工信息表),包含工号、姓名、性别、部门、年龄、工资等字段。
Create table EMP
(
ID NUMBER,
NAME VARCHAR2(20),
SEX CHAR(4),
DEPARTMENT VARCHAR2(20),
AGE NUMBER,
SALARY NUMBER(6,2)
);
b、 往该数据表中添加一条记录。
INSERT INTO EMP VALUES(1,’XIAOZHANG’,’男’,’销售部’,23,1200.0);
c、 假设该表中存在3000条员工的相关信息,要求显示所有年龄在20到30岁之间的人员记录
SELECT * FROM EMP WHERE AGE BETWEEN 20 AND 30;
d、 假设有一个销售部,请给出销售部门所有女职员的工资总数
SELECT SUM(SALARY) FROM EMP WHERE DEPARTMENT=’销售部’ AND SEX=’女’;
e、 为了提高操作该表的性能,给表按年龄分区,20以下分为 youth,20到30为mid1, 30到40 为mid2,40到60 为old
2、 什么是DDL、什么是DML,请分别列举一些。
DDL是数据定义语言,建立、删除和修改数据对象。
例如:CREATE,DROP,ALTER.
DML是数据操纵语言,完成数据操作的命令,包括查询。
例如:SELECT,INSERT,UPDATE,DELETE
3、 视图占空间吗?修改视图是否改变基表,为什么?
定义:视图是查看数据表中的一种方法。(当一些用户需要经常访问和查询数据表中的某些字段构成的数据,但管理员从安全角度考虑又不希望他们直接接触数据表时,可以利用Oracle数据库提供的视图这一数据对象)。(视图不是数据表,它仅是一些SQL查询语句的集合,作用是按照不同的要求从数据表中提取不同的数据。
4、 游标是什么,作用是什么,使用游标的步骤是什么写一个使用游标的例子
定义:游标是为处理SQL的select语句而分配的一大块内存。
作用:
步骤:
(1) 声明游标
(2) 打开游标
(3) 提取数据
(4) 关闭游标
例子:
declare
cursor student_id is
select student_id from studentinfo order by studentno;
studenta studentinfo.student_id%type
for each row
begin
open student_list;
loop
fetch student_list into studenta;
dbms_output.put_line(‘student_id’||studenta);
exit when student_list%notfound;
dbms_output.put_line(‘已经到文件尾!’);
end loop;
close student_list;
end;
5、 存储过程是什么,为什么比一般语句更快,写一个简单的存储过程。
定义:过程(procedure)是一个PL/SQL语句块,它存储在数据字典中并可被应用程序调用,可以使用过程存储数据库中频繁使用的应用逻辑。(使用存储过程的一个好处是能够实施数据的安全性)
原因:因为存储过程是预编译的,所以比一般的语句更快。
例子1:
create or replace procedure print_current_time as
curtime varchar2(20);
begin
select to_char(sysdate,’yyyy/mm/dd hh24:mi:ss’)
into curtime
from dual;
dbms_output.put_line(‘当前时间是:’||chr(9)||curtime);
end print_current_time;
例子2:
create or replace procedure print_parameter
(
p_Parameter in varchar2 default null
)
as
begin
if(p_Parameter is null) then
dbms_output.put_line(‘你没有输入参数’);
else
dbms_output.put_line(‘你输入的参数是:’||chr(9)||p_Parameter);
end if;
end print_parameter;