女人梦见三大块生猪肉:Oracle复习1

来源:百度文库 编辑:偶看新闻 时间:2024/04/28 18:42:37
一、 选择题
1. 数据库系统的三级模式结构是指(D)。
A.外模式、模式、子模式      B.子模式、模式、概念模式
C.模式、内模式、存储模式    D.外模式、模式、内模式
2 .WHERE子句的条件表达式中,可能匹配单个字符的通配符是(C)。
A.*                          B.%
C._                          D.?
3.通常所说的数据库系统(DBS)、数据库管理系统(DBMS)和数据库(DB)三者之间的关系是(C)。
A.DBMS包含DB和DBS     B.DB包含DBS和DBMS  C.  DBS包含DB和DBMS     D.三者无关
4.一般地,一个数据库的外模式(D)。
A.只能有一个               B.最多有一个
C.至少有两个               D.可以有多个
5.数据库的三级模式体系结构的划分,有利于保持数据库的(A)。
A.数据的独立性             B.数据的安全性
C.结构规范化               D.操作的可行性
6.数据库系统的核心是(B)。
A.数据库                     B.数据库管理系统
C.数据模型                   D.软件工具
7.用树型结构来表示实体之间联系的模型称为(B)。
A.关系模型                   B.层次模型
C.网状模型                   D.数据模型
8.数据是信息的载体,信息是数据的(C)。
A.符号化表示                B.载体
C.内涵                      D.抽象
9.数据库系统的核心是(B)。
A.数据库                     B.数据库管理系统
C.数据模型                   D.软件工具
10.数据库设计包括两个方面的设计内容,它们是(C)。
A.概念设计和逻辑设计         B.模式设计和内模式设计
C.内模式设计和物理设计       D.结构特性设计和行为特性设计
11.SELECT语句的执行结果是(C)。
A.数据项                     B.元组
C.表                         D.视图
12.将表ABC改名为ABC1(D)。
A.ALTER TABLE ABC TO ABC1  B.RENAME TABLE ABC TO ABC1
C.RENAME ABC ABC1          D.RENAME ABC TO ABC1
13.如果想删除EMPLOYEES表的所有数据,不删除表格,而且此命令必须可以回滚,可以使用选项(A)。
A.DELETE FROM EMPLOYEES;
B.UPDATE EMPLOYEES SET NAME=’JERRY’;
C.ALTER TABLE EMPLOYEES;
D.TRUNCATE TABLE EMPLOYEES;
14. ISQL*PLUS中SCOTT的默认密码是(A)。
A.TIGER                     B.SYSTEM
C.LOGIN                     D.SCOTT
15.SELECT语句的执行结果是(C)。
A.数据项                     B.元组
C.表                         D.视图
16.数据库的三级模式体系结构的划分,有利于保持数据库的(A)。
A.数据的独立性             B.数据的安全性
C.结构规范化               D.操作的可行性
17.用树型结构来表示实体之间联系的模型称为(B)。
A.关系模型                   B.层次模型
C.网状模型                   D.数据模型
18.数据库设计包括两个方面的设计内容,它们是(C)。
A.概念设计和逻辑设计         B.模式设计和内模式设计
C.内模式设计和物理设计       D.结构特性设计和行为特性设计
19.将E-R图转换到关系模式时,实体与联系都可以表示成(B)。
A.属性                       B.关系     
C.键                         D.域
20.SELECT语句的执行结果是(C)。
A.数据项                     B.元组
C.表                         D.视图
二、填空题
1. PL/SQL块分为  无名         块和     匿名       块。
2.在关系模型中,把数据看成一个二维表,第一个二维表称为一个  关系        。
3.SQL语言的功能有   数据查询    、   数据定义    、   数据操纵    、   数据控制    。
4.SQL语言的功能有   数据查询     、  数据定义      、   数据操纵    、   数据控制      。
5.(+)不能与   IN    、   OR    操作一起使用。
6.number(p,s)数据类型,这是    总        位数,s是  小数点后面        位数。
7.每个PL/SQL块都可以划分为三个部分: 定义部分     、  执行部分    、   异常处理部分    。
8.PL/SQL块的表达式分为4种,它们是  数值      表达式、  字符     表达式、 关系      表达式、 逻辑      表达式。
9. PL/SQL块分为   无名        块和    匿名        块。
10. 过程作为一个PL/SQL语句来执行,没有  RETURN        语句,可以返回一个值也可以不返回值。函数是作为表达式的一部分调用,必须包含  RETURN        语句,必须返回值 。
11.(+)不能与   IN    、  or     操作一起使用.
12. 数据导入导出模式分为三种模式:表方式、用户方式和全数据库方式
三、简答题
1.Oracle中char和varchar2数据类型有什么区别?有数据”test”分别存放到char(10)和varchar2(10)类型的字段中,其存储长度及类型有何区别?
答:char是定长字符类型,varchar2是变长字符类型。“test”在char(10)中被补齐空格,存储长度是10字节,在varchar2(10)中存储长度是4字节。
2、事务是什么?
答:所谓事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。
3.oracle中truncate和delete命令有何区别?
答: (1)delete将在回滚段中产生回滚信息,truncate不产生,因此无论表中的记录多少,truncate执行都很快。
(2)truncate 是 DDL,执行隐含的commit,truncate不能回滚。任何没有提交的 DML 改变也将会和truncate一起提交。
(3)truncate 重置表及其索引高水位标志。全表扫描和索引快速全扫描读高水位标志下的所有数据块,因此在delete后全扫描性能没有提高,但truncate后将会变快。
(4)truncate 不触发 delete 触发器。
(5)没有对象权限允许一个用户 truncate 另一个用户的表。这样做需要 DROP ANY TABLE 系统权限。
(6)当一个表被 truncate,表及其索引的存储将被重置回初始大小。而 delete 不收缩表及其索引的大小。
 (7)当父表有一个可用的引用完整性约束时不能被 truncate。必须先disable引用父表的外键约束,再truncate。
4.建立ORACLE数据库后,系统自带的两个用户是什么,相应的密码是什么?他们的身份是什么?
答:   用户         密码              身份
System    manager             SYSDBA
Sys    change_on_instal       SYSDPER
5. oracle系统进程主要有哪些,作用是什么?
答: 数据写进程(dbwr):负责将更改的数据从数据库缓冲区高速缓存写入数据文件。日志写进程(lgwr):将重做日志缓冲区中的更改写入在线重做日志文件 。系统监控(smon) :检查数据库的一致性如有必要还会在数据库打开时启动数据库的恢复 。进程监控(pmon) :负责在一个Oracle 进程失败时清理资源。检查点进程(chpt):负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制文件和数据文件中的数据库状态信息。
归档进程(arcn) :在每次日志切换时把已满的日志组进行备份或归档 。  作业调度器(cjq) :负责将调度与执行系统中已定义好的job,完成一些预定义的工作。恢复进程(reco) :保证分布式事务的一致性,在分布式事务中,要么同时commit,要么同时rollback;
6. oracle系统进程主要有哪些,作用是什么?
答:数据写进程(dbwr):负责将更改的数据从数据库缓冲区高速缓存写入数据文件。
日志写进程(lgwr):将重做日志缓冲区中的更改写入在线重做日志文件 。系统监控(smon) :检查数据库的一致性如有必要还会在数据库打开时启动数据库的恢复 。进程监控(pmon) :负责在一个Oracle 进程失败时清理资源。检查点进程(chpt):负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制文件和数据文件中的数据库状态信息。 归档进程(arcn) :在每次日志切换时把已满的日志组进行备份或归档 。作业调度器(cjq) :负责将调度与执行系统中已定义好的job,完成一些预定义的工作。恢复进程(reco) :保证分布式事务的一致性,在分布式事务中,要么同时commit,要么同时rollback;
7. 数据库的安全性?
数据库安全可分为两类:系统安全性和数据安全性。
系统安全性是指在系统级控制数据库的存取和使用的机制,包含有效的用户名/口令的组合;用户是否授权可连接数据库;用户对象可用的磁盘空间的数量;用户的资源限制;数据库审计是否是有效的;用户可执行哪些系统操作。
8. Oracle 管理主要用户?
用户就是一个方案,它是一组数据库对象的所有者。用户是计算机的合法操作者,数据库用户就是数据库的合法操作者。Oracle有如下的几个主要用户: (1).SYSTEM用户用户密码:此用户默认的密码为manager。
用户权限:此用户具有“SYSDBA”权限,即数据库管理员权限,包括:打开数据库服务器、关闭数据库服务器、备份数据库、恢复数据库、日志归档、会话限制等。(2).SYS用户,用户密码:用户默认的密码为change_on_install。用户权限:用户具有SYSDBA或者SYSOPER权限。SYSOPER即数据库操作员权限,包括:打开数据库服务器、关闭数据库服务器、备份数据库、恢复数据库、日志归档、会话限制。(3).SCOTT用户用户密码:用户默认的密码为tiger。用户权限:用户具有Normal即普通用户权限,可以用来查询某些数据表的数据。
9.触发器的类型?
对每一触发语句可有四种类型触发器:
(1)行触发器。对受触发语句所影响的每一行进行触发。
(2)语句触发器。定义语句触发器时要指定触发时间,即触发器是在触发语句执行之后触发还是在之前触发。
(3)BEFORE触发器。该触发器执行触发器动作是在触发语句执行之前。
(4)AFTER触发器。该触发器执行触发器动作是在触发语句执行之后。
10.建立ORACLE数据库后,系统自带的两个用户是什么,相应的密码是什么?他们的身份是什么?
答:   用户         密码              身份
System    manager             SYSDBA
Sys    change_on_instal       SYSDPER
11. 数据库的安全性?
数据库安全可分为两类:系统安全性和数据安全性。
系统安全性是指在系统级控制数据库的存取和使用的机制,包含有效的用户名/口令的组合;用户是否授权可连接数据库;用户对象可用的磁盘空间的数量;用户的资源限制;数据库审计是否是有效的;用户可执行哪些系统操作。
12. Oracle 管理主要用户?
用户就是一个方案,它是一组数据库对象的所有者。用户是计算机的合法操作者,数据库用户就是数据库的合法操作者。Oracle有如下的几个主要用户: (1).SYSTEM用户用户密码:此用户默认的密码为manager。
用户权限:此用户具有“SYSDBA”权限,即数据库管理员权限,包括:打开数据库服务器、关闭数据库服务器、备份数据库、恢复数据库、日志归档、会话限制等。(2).SYS用户,用户密码:用户默认的密码为change_on_install。用户权限:用户具有SYSDBA或者SYSOPER权限。SYSOPER即数据库操作员权限,包括:打开数据库服务器、关闭数据库服务器、备份数据库、恢复数据库、日志归档、会话限制。(3).SCOTT用户。用户密码:用户默认的密码为tiger。用户权限:用户具有Normal即普通用户权限,可以用来查询某些数据表的数据。
四、编写SQL语句
1.教学数据库的三个基本表如:
表名 字段1 字段2 字段3 字段4 说明
S S#(学号) SNAME(学生姓名) AGE(学生年龄) SEC(性别) 学生信息
SC S#(学号) C#(课程号) GRADE(分数等级)  学习信息
C C#(课程号) CNAME(课程名称) TEACHER(教师姓名)  课程信息
试用SQL的查询语句表达下列查询:
(1) 检索LIU老师所授课课程的课程号和课程名称。
    SELECT C#,CNAME  FROM C WHERE TEACHER='LIU'
(2) 检索年龄大于23岁的男学生的学号和姓名。
   SELECT S#,SNAME FROM S WHERE (AGE>23) AND (SEX='M')
(3) 检索至少选修LIU老师所授课程中一门课程的女学生姓名。
 SELECT SNAME  FROM S WHERE SEX='F' AND S# IN (SELECT S# FROM SC WHERE C# IN (SELECT C# FROM C WHERE TEACHER='LIU')
(4) 检索WANG同学不修的课程号与课程名称。
SELECT C# FROM C WHERE C# NOT IN (SELECT C# FROM SC WHERE S# IN (SELECT S# FROM S WHERE SNAME='WANG'))
(5)   检索至少选修两门课程的课程号与课程名称。
SELECT DISTINCT X.SNO FROM SC X,SC Y WHERE X.SNO=Y.SNO AND X.CNOY.CNO
(6) 
1. 向表student中插入如下2行。
(1)往基本表S中插入一个学生元组('S9','WU',18).
  INSERT INTO S(S#,SNAME,AGE) VALUES('59','WU',18)
STUNO SNAME SEX BIRTHDAY EMAIL SCORE CLASSNO
从stuseq取值 tom 男 1979-2-3 14:30:25 tom@163.net 89.50 1
从stuseq取值 jerry 默认值 空 空 空 2
向表student中插入如下2行。(5分)
STUNO SNAME SEX BIRTHDAY EMAIL SCORE CLASSNO
从stuseq取值 tom 男 1979-2-3 14:30:25 tom@163.net 89.50 1
从stuseq取值 jerry 默认值 空 空 空 2
答:insert into student values(stuseq.nextval, ’tom’, ’男’, to_date(‘1979-2-314:30:25’,’yyyy-mm-dd fmhh24:mi:ss’), ’tom@163.net’, 89.50, 1);
insert into student (stuno, sname, classno) values(stuseq.nextval, ’jerry’, 2);
修改表student的数据,将所有一班的学生成绩加10分。(4分)
答:update student set score=score+10 where classno=1;
 删除表student的数据,将所有3班出生日期小于1981年5月12日的记录删除。
答:delete from student where classno=3 and birthday > ’12-5月-81’;
(1) 修改表student的数据,将所有一班的学生成绩加。
(2) 删除表student的数据,将所有3班出生日期小于1981年5月12日的记录删除。
   2.完成下列ISQL语句;
(1) 按班级升序排序,成绩降序排序,查询student表的所有记录。
(2) 查询student表中所有二班的成绩大于85.50分且出生日期大于1982-10-31日的男生的记录。;
(3) 查询student表中所有三班成绩为空的学生记录。
(4) 表student与class联合查询,要求查询所有学生的学号,姓名,成绩,班级名称。(使用oracle与SQL 99两种格式)
(5) 按班级编号分组统计每个班的人数,最高分,最低分,平均分,并按平均分降序排序。
(6) 查询一班学生记录中所有成绩高于本班学生平均分的记录。
(7) 统计二班学生中所有成绩大于所有班级平均分的人数。
(8) 查询平均分最高的班级编号与分数。
(9) 查询所有学生记录中成绩前十名的学生的学号、姓名、成绩、班级编号。
(10) 创建视图stuvu,要求视图中包含student表中所有一班学生的stuno, sname, score, classno四个属性,并具有with check option限制。
10. 完成以下SQL语句。(40分)
(1) 按班级升序排序,成绩降序排序,查询student表的所有记录。
答:select * from student order by classno, score desc;
(2) 查询student表中所有二班的成绩大于85.50分且出生日期大于1982-10-31日的男生的记录。
答:select * from student where classno=2 and score>85.50 and birthday < ’31-10月-82’ and sex=’男’;
(3) 查询student表中所有三班成绩为空的学生记录。
答:select * from student where classno=3 and score is null;
(4) 表student与class联合查询,要求查询所有学生的学号,姓名,成绩,班级名称。(使用oracle与SQL 99两种格式)
答:select s.stuno, s.sname, s.score, c.cname from student s, class c where s.classno=c.classno;
(5) 按班级编号分组统计每个班的人数,最高分,最低分,平均分,并按平均分降序排序。
答:select classno, count(*), max(score), min(score), avg(score) from student group by classno order by avg(score) desc;
(6) 查询一班学生记录中所有成绩高于本班学生平均分的记录。
答:select * from student where classno=1 and score > (select avg(score) from student where classno=1);
(7) 统计二班学生中所有成绩大于所有班级平均分的人数。
答:select count(*) from student where classno=2 and score > all (select avg(socre) from student group by classno);
(8) 查询平均分最高的班级编号与分数。
答:select classno, avg(score) from student group by classno having avg(score) = (select max(avg(score)) from student group by classno);
(9) 查询所有学生记录中成绩前十名的学生的学号、姓名、成绩、班级编号。
答:select stuno, sname, score, classno from (select * from student order by score desc) where rownum<=10;
(10) 创建视图stuvu,要求视图中包含student表中所有一班学生的stuno, sname, score, classno四个属性,并具有with check option限制。
答:create view stuvu
as
select stuno, sname,score,classno from student where classno=1 with check option;
五、PL/SQL编程题
1.编程,求1~400中所有的奇数之和。
 declare
i integer;
j integer;
k integer;
begin
j:=2;
k:=0;
for i in 1..400 loop
  if i mod j<>0 then
k:=k+i;
end if;
end loop;
dbms_output.put_line(k);
end;2.编程,求1~20000中所有的偶数之和。
declare ;
v_count number := 1;
 v_sum number := 0;
begin
for v_count in 1..20000 loop
 if mod(v_count,2) = 0 then
 v_sum := v_sum + v_count; end if; end loop;
 dbms_output.put_line(v_sum);
end;