考试时间:60分钟 开始时间: 结束时间: 日期: 年 月 日 姓 名: 总分:100分 得 分:
一、
填空题:(10空格,每空格3分,共30分)
1、 SQL Server 2000中使用的数据库对象包括: 表 、 视图 、 存储过程 、 函数 、 存储
过程 等。
2、 存储过程是一个 完成特定功能 的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可
以调用多次。
3、 索引就一种特殊的 对数据库中表的一列或者多列特定排序的结构 ,数据库的搜索引擎可以利用它加速对数据的检索。 4、 事务就是被绑定在一起作为一个 整体(单元) 的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失
败,以后操作就会 回滚 到操作前状态,或者是上有个节点。
5、 SQLServer2000中使用备份文件恢复数据库的写法是 RESTORE DATABASE XXXX FROM DISK = N'XXXX'
二、 简答题(每题5分,共30分)
ORACLE数据库中:
1.解释冷备份和热备份的不同点以及各自的优点
热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。而冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库。热备份的优点在于当备份时,数据库仍旧可以被使用并且可以将数据库恢复到任意一个时间点。冷备份的优点在于它的备份和恢复操作相当简单,并且由于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模式稍好。
2.你必须利用备份恢复数据库,但是你没有控制文件,该如何解决问题呢? 建控制文件,用带backup control file 子句的recover 命令恢复数据库。
3.如何转换init.ora到spfile? 使用create spfile from pfile 命令
4.解释data block , extent 和 segment的区别(这里建议用英文术语)
data block是数据库中最小的逻辑存储单元。当数据库的对象需要更多的物理存储空间时,连续的data block就组成了extent . 一个数据库对象拥有的所有extents被称为该对象的segment.
5.给出两个检查表结构的方法 1、DESCRIBE命令 2、DBMS_METADATA.GET_DDL 包
6.怎样查看数据库引擎的报错s
alert log 三、
SQL练习题(每题10分,共40分)
1. 编写SQL,已知关系模式:
s(s#,sname) c(c#,cname) sc(s#,c#,score) ① 找出选修了c1课程的学员; 方案一:
SELECT * FROM s
WHERE s# IN (SELECT s# FROM sc
WHERE c# = 'c1')
方案二:
SELECT * FROM s
WHERE EXISTS (SELECT * FROM sc
WHERE sc.c# = 'c1' AND sc.s# = s.s#)
方案三:
SELECT s.* FROM s, c, sc
WHERE s.sno = sc.sno AND c.cno = sc.cno AND c.cname = 'c1'
② 找出未选修c2课程的学员; 方案一:
SELECT * FROM s
WHERE s# NOT IN (SELECT s# FROM sc
WHERE c# = 'c2')
方案二:
SELECT * FROM s
WHERE NOT EXISTS (SELECT * FROM sc
WHERE sc.c# = 'c2' AND sc.s# = s.s#)
方案三:
SELECT s.sname FROM s, c, sc
WHERE s.sname = sc.sname AND c.cname = sc.cname AND c.cname NOT IN ( 'c1' )
③ 找出至少包含了s2选修了的课程的学员;
SELECT * FROM sc a WHERE NOT EXISTS (SELECT * FROM sc b WHERE s#='s2' AND NOT EXISTS (SELECT * FROM sc c WHERE b.c#=c.c# AND a.s#=c.c#))
④ 找出选修了所有课程的学员.
SELECT s# FROM sc GROUP BY s#
HAVING Count(s#) = (SELECT Count(s#)
FROM sc)
2、有订单表Order,单号字段RefNo VARCHAR(10),需要实现自动编号,格式为YYYYMMXXXX,其中XXXX为序号,如:2004050001,2004050002……2004059999等,采用SQL实现新订单编号的思路。 计算列 自定义函数都可以
3、如何删除表中重复Name字段的数据,用SQL写出代码。 Select * from Temp ID Name