首页 > 数据库 > Oracle > 从零开始学Oracle—内建对象
查询当前用户下的序列:select * from user_sequences
定义:用来生成唯一、连续的整数的数据库对象,序列通常用来自动生成主键或唯一键的值、可升、可降序排列.
语法: Create sequence 序列名称 //从1开始 每次自动增加1 没有最大值
[star with 值] 指定要生成的第一个序列号,对于升序默认值为最小值、反之...
[increment by 值] 间隔数
[maxvalue 值|nomaxvalue] 序列最大值,如果指定为nomaxvalue,则升序最大值为10的27次方,降序-1.
[minvalue 值|nominvalue] 序列最小值,-----------------------升序为1,降序为10的负26次方
[cycle|nocycle] cycle指序列到达最大或最小时,将从头开始生成值 nocycle值不在生成
[cache 值|nocache] 预先分配一组序列号,将其保存在内存中. 默认缓存20个序列
访问序列方法: currval 和nextval --当前序列 select 序列名.currval from dual
更改序列:Alter sequence 序列名
删除序列:drop sequence 序列名
注意-------------序列使用时需要先用nextval输出完以后再来使用
使用:
a) create table student(
xh number(4) primary key, --学号
xm varchar2(20) not null --姓名
);
要求:学号字段 从1000开始每次增加4 最大值9999
--建立序列
create sequence xh_seq
start with 1000 --从1000开始
increment by 4 --每次增加4
maxvalue 9999 --最大值 9999
;
--使用SQL语句关联
insert into student values
(xh_seq.nextval,'Mike');
insert into student values
(xh_seq.nextval,'John');
insert into student values
(xh_seq.nextval,'Rose');
--特点:能产生唯一的值,但是不能保证值在表中的连续性
b) create table teacher(
teacherxh varchar2(10) primary key,
teachername varchar2(20)
);
要求:教师的编号的格式是TH00001
TH00002
....
--建立序列
create sequence teacher_seq
maxvalue 99999;
--
insert into teacher values ('TH'||
ltrim(to_char(teacher_seq.nextval,'00000')),
'张三');
insert into teacher values ('TH'||
ltrim(to_char(teacher_seq.nextval,'00000')),
'李');
insert into teacher values ('TH'||
ltrim(to_char(teacher_seq.nextval,'00000')),
'王');
2.视图
查看当前用户下的视图:select view_name from user_views;
作用:隐藏数据,增加系统的安全性
语法:Create [or replace]
[Force|noForce] veiw 视图名 [(别名1,别名2...)]
AS 子查询
[with check option [constraint 约束名]]
[with read only] 视图是只读的
对视图操作需满足以下条件:
<1>建立视图的select语句必须是简单的select语句
简单:不能是多表的查询
不能有分组函数
<2>建立视图的时候不能带with readonly关键字
例:
create or replace view emp_v2
as --select语句
select empno,ename,sal from emp
with read only; --只读视图
3.同义词
查看用户创建的同义词:select * from user_synonum;
定义:数据库对象的一个别名
2.隐藏对象名称和所有者
3.为分布式数据库的远程对象提供了位置透明度
4.提供对象的公共访问
注意:使用同义词前需要确保用户得到访问同义词的权限
同义词分为:
1.私有同义词 --只能被当前用户模式访问 要在自身模式下创建须 Create synonum 权限
2.共有同义词 --须Create any synonym权限
语法: Create [or replace] [public] synonym 同义词名称 for 要创建同义词对象的名称
4.索引
作用:加快查询 索引一定是建立在表上的.
语法:Create Index 索引名 on 表名(列名)
创建唯一索引: Create unique Index 索引名 on 表名(列名)
创建位图索引: Create bitmap Index 索引名 on 表名(列名)
数据的不同值对于记录的行数来说 是个很小的数 这种字段适合使用位图索引 它比普通索引效率高
不能用索引的条件:
<1>规则1:索引的字段不能参与运算
<2>规则2:索引的字段上不能使用函数
5.簇
定义:用于多表联合查询,提高数据查询效率
簇的使用步骤:
Create table depa (
deptno number(2) primary key,
dname varchar2(20)
) cluster 簇名(deptno);
Create table empa(
empno number(4) primary key,
ename varchar2(20)
) cluster 簇名(empno)
Create Index 索引名 on cluster 簇名
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24148454/viewspace-1115990/ ,如需转载,请注明出处,否则将追究法律责任。