庆祝s

或多或少
整理的Oracle精辟问答题(4)
1.请为表students创建一个同义词smallstudent.写入脚本。
create table stuinfo
(
s_id int,
s_name varchar2(20),
s_age int
)
insert into stuinfo values(1,'张三',25)
insert into stuinfo values(2,'李四',27)
select * from stuinfo
commit
2.说出公有同义词与私有同义词的区别。
--关键字的区别
--公有的 public synonym
--私有的 synonym

3.某用户想为自己模式下的表marks创建一个公有同义词,以便此数据库的所有用户都能访问,但发现他不能创建此同义词,请问这是为什么?
--没有授权

grant create public synonym to lee

4.某项目开发了一套CS系统,此系统实现数据的处理与管理。后来客户要用BS在网上发布此系统的某些数据,但要求BS系统与CS系统分别采用不同的用户模式,为了方便,我们最好做些什么样的工作?
--用公共的同义词来访问

5.请问oracle下有自动增长类型的字段吗?
--没有
6.序列号的概念是什么?
--用来生成唯一的,连续的整数的数据库对象

7.请写脚本建立一个名为itemID_SEQ的序列号,从1开始,最大到100000.每次递增量为1.
create sequence itemID_SEQ
start with 1
increment by 1
maxvalue 100000
cache 30;
select itemID_SEQ.Nextval from dual
select itemID_SEQ.Currval from dual
8.如何访问此序列的当前值。
select itemID_SEQ.Currval from dual

9.如何访问此序列的下一值。
select itemID_SEQ.Nextval from dual

10.如何为oracle表实现自动增长的字段呢?
insert into stuinfo(s_id,s_name,s_age) values(itemID_SEQ.Nextval,'ggg',20);
insert into stuinfo(s_id,s_name,s_age) values(itemID_SEQ.Nextval,'hhh',22);
insert into stuinfo(s_id,s_name,s_age) values(itemID_SEQ.Nextval,'jjj',23);
insert into stuinfo(s_id,s_name,s_age) values(itemID_SEQ.Nextval,'kkk',25);
select * from stuinfo
11.请写出实现10题,并可向表中添加数据的一个完整的过程。
insert into stuinfo(s_id,s_name,s_age) values(itemID_SEQ.Nextval,'ggg',20);
insert into stuinfo(s_id,s_name,s_age) values(itemID_SEQ.Nextval,'hhh',22);
insert into stuinfo(s_id,s_name,s_age) values(itemID_SEQ.Nextval,'jjj',23);
insert into stuinfo(s_id,s_name,s_age) values(itemID_SEQ.Nextval,'kkk',25);
select * from stuinfo
commit
12.请问创建同义词的一个严格的顺序是什么?同义词可以删除表中的数据吗?
--1.在system下授予 grant create public synonym to ‘用户’ 的权限.
--2.在‘用户’ 的权限下 create public synonym '同义词名' to 用户。表名
13.视图的优点有哪些?
--对预订的一组 行列的访问,提供了另外的安全性
--隐藏了数据的复杂性
--简化了用户的命令
--重名名列
--将应用程序与基表定义的修改隔离开来
14.表A不存在,可以基于表A建立视图吗?
伪视图
create force view 视图名称
as select × from 表A
15.请为表student(stuid,stuaddress,stuage,stusex,stuname,flag)中的flag=0的记录字段(stuname,stuaddress,flag)建立视图。并要求不可对flag字段进行修改。
create view view_student
as
select stuname,stuaddress,flag from student where flag = 0
with check option constant flag
16.通过视图可以修改基表数据吗?
--在没有 ‘with check option constant ’的条件 可以更改
17.如果要通过视图修改多个表的数据,我们应该采用何种方式?
--跟据数据改基表里的东西
--需要 instead of 触发器
18.(+)在oracle的联接中有什么意思?分别是哪几种情况?
--右表连接
--如
--select * from a,b
--where a.id = b.id(+)
--b是左表 在视图里会把b表里的东西全都显示出来
19.键保留表是什么含义?
--在视图链接中,如果视图包含了一个表的主键,并且也是这个视图的主键 则这个键被保留,这个表称为键保留表
20.Oracle可以对键保留表使用DML语句来更新基表吗?对于非键保留表呢?可以结合以上题目来理解。
--可以,对于非键保留表不行 只有键保留表才能使用DML语句。

22.用户的视图信息保存在哪个系统数据字典中?
--user_viewa

23.建立索引总是好事吗?
--不一定,会占空间内存的
24.索引为什么会降低更新,删除以及插入的性能?
--如果建立了合理的索引,优化器就能利用索引加速数据的查询过程。但是,索引并不总是提高系统的性能,
--在增、删、改操作中索引的存在会增加一定的工作量,因此,在适当的地方增加适当的索引并从不合理的
--地方删除次优的索引,将有助于优化那些性能较差的SQL应用。
--因为只要修改了数据,如添加、更新或删除行,Oracle都会自动更新索引。
25.索引储存时保存了哪些内容?
--rowid 和每一行索引的值结合起来

26.可以基于多列建立索引吗?
--组合索引
27.唯一索引指的是什么?唯一索引的值可以为空吗?
--定义在所引列里,可以为空

28.如果我对于15题student表中的stuaddress和stuname建立了组合索引,请问
   select * from student where stuaddress='china'会采用索引优化查询吗?  --不会
   select * from student where stuname='zs'会采用索引优化查询吗?    --不会
   select * from student where stuname='zs' and stuaddress='china'会吗? --会   

29.如何建立反向键索引,反向键索引一般在什么情况下使用?
create index rev_id on stuinfo (s_id) reverse
--可以通过建立在一些值连续增长的列上,
30.反向键索引有什么局限性?
--不能将标准索引重建为反向键索引
--会因为数据过于密集而降低读取的性能。
31.位图索引一般应在什么情况下使用?
 --最适用于低基数列
--如果一个表有100万行,其中一个小于1000个不同的值,则可以考虑
32.为什么在某些情况下,位图索引能显著地提高查询性能?
--不同值比较少的
33.为什么位图索引不应当用在频繁发生INSERT,UPDATE,DELETE操作的表上?
--这些DML在性能方面的代价很高。会引起位图的加锁的发生
34.索引组织表可不可以没有主键?
--不可以

35.索引组织表有没有ROWID伪列?
--没有

36.索引组织表可以用不是主键的列来查询吗?可以基于其它列建立索引吗?
--可以 可以通过非键列的值与该键存储在一起

37.索引组织表中的数据与索引分别存储在什么地方?
  --数据存储在索引里
38.有表suppliers(name,address,tel),由于在输入name字段内容时,没有区分大小写,请问我可否查询不区分大小写且符合某个名称的内容,同时也用上索引?
--select * from 索引表 where 函数(列名)
create index 索引名 on 表名(upper(名字))
select * from 表名 where upper(name) = "AJH";
39.与分区有关的索引包括哪几种?
--局部分区索引 local
--全局分区索引 global
--全局非分区索引

40.局部分区索引的创建使用哪个关键字?对分区表中的每个分区存在一个单独的索引吗?
--local
41.对于全局分区索引使用使用哪个关键字创建?对分区表中的每个分区都存在一个单独的索引吗?
--global,总共只存在一个索引。
42.全局分区索引可以为非分区表创建索引吗?
  --可以,不能在散列或子分区建立全局索引。
43.可以为某分区表中分区的子分区创建全局索引吗?
--不能在散列分区或子分区建立全局索引
--不可以

44.用户创建的索引信息保存在哪个表中?
-- user_indexes
select * from user_indexes
45.如何检查用户的某个索引是基于哪几个列创建的?
--user_ind_columns
select * from user_ind_columns

 


posted on 2008-04-30 20:13  庆祝  阅读(631)  评论(0)    收藏  举报