📄 朱志明6-14.txt
字号:
1,给一个表创建视图,该试图不包含约束为not null的列,怎么给该视图插入数据?对于not null约束的列,可以给个常量作为该列的默认值。
create view testview
as
select empno,ename,job,sal,age from testemp;
*************************************************
create or replace trigger testtri
instead of insert
on testview
for each row
declare
num int;
num2 int;
begin
select count(age) into num from testemp where empno = :new.empno;
select max(age) into num2 from testemp;
if num =0 then
insert into testview values(:new.empno,:new.ename,:new.job,:new.sal,num2 +18);
end if;
end;
2,创建一个序列
create sequence testseq
increment by 1
start with 1
maxvalue 999999999
minvalue 1
cache 20
nocycle
order;
3,用scott用户登陆,建一张表,至少包含id,name,sex,date列,插入1000000条数据,为了防止表名重复,建议大家用自己的名字做表名。用练习2创建的序列给该表的id加值,列id为该表的主键
给name列创建B树索引,按该列查询
给sex列创建位图索引,按该列查询
给date列创建函数索引,按该列查询
把查询的结果也写到你的答案里
创建小朱表
create table xiaozhu(id int,
name varchar2(10),
sex char,
born date);
插入1000000行记录
declare
v_test int;
begin
for v_test in 1..1000000 loop
insert into xiaozhu values(testseq.nextval,'aa','男',to_date('1984-2-13','YYYY-MM-DD'));
end loop;
end;
给表创建主键
alter table xiaozhu add constraint pk_xiaozhu_id primary key (id);
给name列创建B树索引
create index index_name on xiaozhu(name) ;
1 aa
2 aa
3 aa
4 aa
5 aa
6 aa
7 aa
8 aa
9 aa
10 aa
11 aa
12 aa
13 aa
14 aa
15 aa
16 aa
17 aa
18 aa
19 aa
20 aa
给sex列创建位图索引
create bitmap index index_sex on xiaozhu(sex) ;
1 男
2 男
3 男
4 男
5 男
6 男
7 男
8 男
9 男
10 男
11 男
给date列创建函数索引
create index function_born on xiaozhu(to_char(born,'YYYY-MM-DD'));
1 1984-2-13
2 1984-2-13
3 1984-2-13
4 1984-2-13
5 1984-2-13
6 1984-2-13
7 1984-2-13
8 1984-2-13
9 1984-2-13
10 1984-2-13
11 1984-2-13
12 1984-2-13
13 1984-2-13
14 1984-2-13
15 1984-2-13
16 1984-2-13
17 1984-2-13
18 1984-2-13
19 1984-2-13
20 1984-2-13
21 1984-2-13
22 1984-2-13
23 1984-2-13
24 1984-2-13
25 1984-2-13
4,根据练习3的三种查询结果,创建三个视图,然后对这三个视图做相应的查询
试图一:
create view nameview
as
select name from xiaozhu;
*****************************
select * from nameview;
1 aa
2 aa
3 aa
4 aa
5 aa
6 aa
7 aa
8 aa
9 aa
10 aa
11 aa
12 aa
13 aa
14 aa
15 aa
16 aa
17 aa
18 aa
19 aa
20 aa
试图二:
create view sexview
as
select sex from xiaozhu;
*****************************
select sex from sexview;
1 男
2 男
3 男
4 男
5 男
6 男
7 男
8 男
9 男
10 男
11 男
12 男
13 男
14 男
15 男
16 男
17 男
18 男
19 男
20 男
21 男
22 男
23 男
24 男
25 男
试图三:
create view bornview
as
select born from xiaozhu;
********************************
select born from bornview;
1 1984-2-13
2 1984-2-13
3 1984-2-13
4 1984-2-13
5 1984-2-13
6 1984-2-13
7 1984-2-13
8 1984-2-13
9 1984-2-13
10 1984-2-13
11 1984-2-13
12 1984-2-13
13 1984-2-13
14 1984-2-13
15 1984-2-13
16 1984-2-13
17 1984-2-13
18 1984-2-13
19 1984-2-13
20 1984-2-13
21 1984-2-13
22 1984-2-13
23 1984-2-13
24 1984-2-13
25 1984-2-13
5,看书的索引那章,把创建索引的要求写下来(如:不同索引的差别,那些列应该创建索引,创建什么索引等等)
如果在WHERE 条件字句中要经常引用的列(或许是一列或许是几列),那么就要为该表的该列建立
B树索引列。如果表的数据很少(很小的表)一般不需要创建索引。
对于取值范围很小的列(比如性别列),只有有限的几个固定值,应当创建位图索引 。
对于包含很多个NULL值,但是经常需要查询所有的非NULL值记录的列,应当建立索引。
对于包含很多NULL值,但是不会经常查询所有的非 NULL 记录的列没有必要建立索引 。
不能在LONG或BLOB等大对象数据类型的列上创建索引。对于经常要进行连接查询的多个表
来说在用于连接的列上应该创建索引 能够 提高查询速度。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -