1.创建permanet类型表空间TS1,用户UA,用户UB,角色RA,授权UA和UB具有create session和create table权限,提交
2.授权UA具有create view,create sequence,create synonym的权限
3.UA用户下创建表TA(c1 int,c2 int),并插入若干行记录
4.UB相同操作
5.把查询表TA,TB的权限赋给角色RA
6.把查询表TB的权限赋给用户UA
7.把角色RA赋给UB
8.UB中查询TB
9.UB中查询TA
10.给UA创建同义词的权限,在UA中创建一个TB的同义词BTB
11.在UA中查询BTB
12.回收UA的查询TB的权限,查看同义词是否有效,从结果可以发现回收之后不能查询同义词。
13.UA用户下建立TC(c1 int,c3 int),并插入若干行记录
14.将TC的查询权限赋给角色 RA看UB是否可以查询TC
15.UA创立视图V1,查询TA的c1列,rownum<100的行
16.查询视图v1
17.UA建立一个视图V2,查询TA的c1 < 100 的行,with check option (c1<100)
18.插入视图V2两行记录,分别为满足约束和不满足约束的行
19.建立一个视图V3,连接TA和TC 试图插入视图V3一行记录
20.建立一个sequence Seq1,使用Seq1作为c1列的值,连续插入TA若干行,
提交;再连续插入TA若干行,回退;再连续插入TA 若干行,提交。查看seq1当前的值和查询TA表。
20.建立一个表TD(id int, sq int,tri int,fac int,fib int,pow int);
写个PL/SQL代码块,依次插入1-100000的平方,三次方,阶乘,fibonacci数,2的n次幂 对于 1000003的模;
declare --定义数据类型sq number;tri number;fac number :=1;fib1 number :=0;fib2 number :=1;pow number :=1;temp number;modval number :=1000003;maxn number :=100000;beginfor id in 1 ..maxn--循环loopsq :=mod(id **2,modval);tri :=mod(id ** 3,modval);fac :=mod(fac*id,modval);pow :=mod(pow*2,modval);insert into TDvalues(id,sq,tri,fac,fib2,pow);--插入表temp :=mod(fib1+fib2,modval);fib1 :=fib2;fib2 :=temp;end loop;--结束循环end;--结束程序块
23.在id上建立唯一索引随机查询10次的一行记录,记录用时。从上面用时和下面一张图用时来看,发现时间运行变少了,初步推断索引的作用能够减少运行时间和加快查询速度。然后通过查阅资料发现还有,利用索引的唯一性来控制记录的唯一性,然后缺点主要是:占据磁盘容量;不利于数据增删查改。
24.查询用户的表,列,视图,序列,索引等数据库对象的信息
select * from all_tables;select * from all_tab_columns;--如果查询表名将*改成table_nameselect * from all_views;select * from all_sequences;select * from all_indexes;
25.查询用户拥有的所有表,列,视图,序列,索引等数据库对象的信息
将上面(25)的代码加一个where owner=‘user_name’;就可以了。这里以查询表名为例。
26.使用dba账户查询用户拥有的所有表,列,视图,序列,索引等数据库对象的信息,将用户切换到sysdba之后,可以查询系统所有用户的表,命令同(26)。
这里同样以查询表名为例。
27.查看当前session连接数
–select count(*) from v$process –当前的连接数
28.查看当前数据库的实例名
–select instance_name,host_name from v$instance;
29.查看当前数据库版本
select * from product_component_version;