ORACLE11g试题答案(陈冬亮) 下载本文

内容发布更新时间 : 2024/12/23 3:33:17星期一 下面是文章的全部内容请认真阅读。

11.在创建序列的过程中,下列( A )选项指定序列在达到最大值或最小值后,将继续从头开始生成值。

A. Cycle B. Nocycle C. Cache D. Nocache 二、填空题

1. 序列 是一种可被多个用户使用的用于产生一系列唯一数字的数据库对象。尤其适合多用户环境中,可以生成唯一的序列号而没有磁盘I/O或事务处理锁定开销。 2.序列包含的两个伪列是 Currval 和 Nextval 。

3.使用 序列 可以生成一列整数值,这些整数值可以用作主键约束。

4.数据操作语言允许用户对数据库中的数据进行查询、插入、更新和删除等操作,相应的命令是 SELECT 、 INSERT 、 UPDATE 和 DELETE 等。

5.一般情况下,merge语句包括了两个数据操纵命令,如果合并条件成立则执行 UPDATE 命令,如果合并条件不成立则执行 INSERT 命令。

6.如果确定要删除一个大表的全部记录,可以执行 TRUNCATE 命令,它可以释放占有的数据块表空间。

7. 要设置SQL*PLUS显示数字时的格式可以使用 NumFormat 命令,而要设置某个数字列的显示格式要使用 Column 命令。

8.使用 SAVE 命令可以将缓冲区中的SQL命令保存到一个文件中,并且可以使用 START 命令运行该文件。

9.当设置多个列的显示属性后,如果清除设置的显示属性,可以使用命令 CLEAR , 当要清除某列具体的显示属性时,需要使用命令 OFF 。

10.如果需要向表中插入一批已经存在的数据,可以在INSERT语句中使用 SELECT 语句。 11.用SELECT进行模糊查询时,可以使用_ 通配符 _或__百分号_匹配符,模糊查询只能针对字段类型是_字符__的查询。

12.下面语句创建一个序列对象,该序列对象的开始数为2,每次递增2,当大于1000后,序列值重新返回到2,在空白处填写适当的代码,完成上述要求。 create sequence seg_test _start with 2_________ _ increment by 2______ _ maxvalue 1000______ cycle_ _。

三、问答题

1.简述DELETE语句与TRUNCATE语句的差异。 解:

如果想要删除表的所有数据,truncate语句要比 delete 语句快。因为 truncate 删除了表,然后根据表结构重新建立它,而 delete 删除的是记录,并没有尝试去修改表。这也是为什么当向一个使用 delete 清空的表插入数据时,数据库会记住前面产生的AUTOINCREMENT序列,并且继续利用它对AUTOINCREMENT字段编号。而truncate删除表后,表是从1开始为autoincrement字段编号。

25

不过truncate命令快规快,却不像delete命令那样对事务处理是安全的。因此,如果我们想要执行truncate删除的表正在进行事务处理,这个命令就会产生退出并产生错误信息。

2.有如下两个关系,其中雇员信息表关系EMP的主键是雇员号,部门信息表关系DEPT的主键是部门号。 EMP

雇员号(EMPNO) 雇员名(EMPNAME) 部门号(DEPTID) 001 010 056 101 DEPT

部门号(DEPTID) 01 02 03 04 部门名(DEPTNAME) 业务部 销售部 服务部 财务部 地址(ADDRESS) 1号楼 2号楼 3号楼 4号楼 张山 王宏达 马林生 赵敏 02 01 02 04 工资(SALARY) 2000 1200 1000 1500 向表插入雇员号为“100”,雇员名为“李四”,部门号为“02”的雇员信息

更新雇员号为“100”的薪水为2000 将薪水低于1200的雇员薪水加300元 删除部门号为“04”的部门

执行语句INSERT EMP VALUES(?020?,?王五?,?05?)会出现什么错误? 如何实现将部门号为“01”的部门删除? 解:

(1)DEPT表中的部门号(DEPTID)没有“05”的数据,外键部门号(DEPTID)的限制所致。 (2)先删除表EMP中部门号为“01”的数据。

3.已知一个员工表TBEmp,包含以下字段 列名称 id name sex birthday memo 数据类型 varchar2(10) varchar2(2) varchar2(10) date varchar2(100) 备注 代表员工号码,主键 代表员工名字,非空 代表员工性别 代表出生日期 代表员工备注 (1)创建员工表TBEmp

(2)增加一个字段salary,类型 number (3)删除表的memo字段

(4)把name字段长度改为100

(5) 插入以下数据(‘001’,‘陈四’,‘男’,‘1980-10-20’,NULL)

26

(6)查询有工资的员工信息

(7)查询名字中没有ac的员工姓名和出生日期 (8)查询工资在900到2300之间的员工信息 (9)查询女员工个数(性别为female的) (10)查询拿最高工资的员工信息

(11)按照员工年龄由高到低来排序,显示员工号码、姓名、出生日期(使用to_char函数,日期按照年/月/日时:分显示) to_char(birthday,?yyyy/mm/dd hh:mi:ss?) (12)将Jack的出生日期修改为1977-2-1,工资增加200元 (13)更新表格,在所有员工的号码后面加上?emp? (14)删除号码是e001和e002和e003的员工

(15)将员工的id和姓名连接起来使用别名newname来显示(语法select … as …from ..) (16)取出员工姓名的前三个字符、第三个字符、姓名长度 (17)使用create table… as …来创建tbemp的备份表格tbemp2 (18)使用两种方式删除所有员工 (19)删除TBEmp表格 解:(1)create table TBEmp

( id varchar2(10) not null PRIMARY KEY, name varchar2(2) not null, sex varchar2(10), birthday date,

memo varchar2(100));

comment on column TBEmp.id is 员工号''; comment on column TBEmp.name is '员工名称'; comment on column TBEmp.sex is '员工性别';

comment on column TBEmp.birthday is '出生日期'; comment on column TBEmp.memo is '员工备注'; (2)alter table TBEmp add SALARY number; (3)alter table TBEmp drop column memo;

(4)alter table TBEmp modify name varchar2(100); (5)INSERT INTO TBEmp(id,name,sex, birthday) VALUES(‘001’,‘陈四’,‘男’,‘1980-10-20’)

(6)SELECT * FROM TBEmp WHERE SALARY IS NOT NULL (7)SELECT name, birthday FROM TBEmp WHERE name NOT IN (SELECT name FROM TBEmp WHERE NAME LIKE ‘?%’)

(8)SELECT * FROM TBEmp WHERE SALARY BETWEEN 900 AND 2300 (9)SELECT COUNT(1) FROM TBEmp WHRE sex =’ female’

(10)SELECT * FROM TBEmp WHRE ID IN (SELECT ID FROM TBEmp WHERE SALARY =(SELECT MAX(SALARY) FROM TBEmp)) (11)SELECT id,name, birthday FROM TBEmp ORDER BY to_char(birthday,?yyyy/mm/dd hh:mi:ss?)

27

DESC

(12)UPDATE TBEmp SET birthday=? 1977-2-1?, SALARY= SALARY+200 WHERE name=? Jack?

(13)UPDATE TBEmp SET id=id+’emp’

(14)DELETE TBEmp WHERE id IN (‘e001?,?e002?,?e003’) (15)SELECT id+name AS newname FROM TBEmp

(16)SELECT SUBSTR(name,1,3),SUBSTR(name,3,1),LEN(name) FROM TBEmp (17)CREATE TABLE tbemp2 AS SELECT * FROM tbemp (18)DELETE TBEmp; TRUNCATE TABLE TBEmp (19)DROP TABLE TBEmp

第八章 索引

一、单项选择题

1.下面有关索引的描述正确的是( B )

A.不可以在多个列上创建复合索引。 B.可以在多个列上创建复合索引。 C.索引列中的数据不能重复出现。 D.索引列中的数据必须是数值型。

2.如果创建的表其主键可以自动编号,则应该为主键创建的索引是( A )索引。 A.反向索引 B.B树索引 C.位图索引 D.基于函数的索引 3.查看下面语句为( C )索引?

CREATE INDEX test_index ON student(sno,sname) TABLESPACE users STORAGE(INITIAL 64k,next 32k)

A.全局分区索引 B.位图索引 C.复合索引 D.基于函数的索引

4.假设emp表包含一个婚姻状况的字段,则应该在该字段上创建( D )索引。 A.B树唯一索引 B.B树不唯一索引 C. 基于函数的索引 D. 位图索引 5.如果经常执行类似于下面的查询语句SELECT * FROM STUDENT where substr(sname,0,2)=’陈’,应该为STUDENT表的SNAME列创建( C )索引。

A.B树唯一索引 B.B树不唯一索引 C. 基于函数的索引 D. 位图索引

28