什么叫序列:
1:定义:
仅向前的数字变量(和SQL中的自动编号有点像 identity(1,2) )
2:如何定义一个序列
格式:
create sequence
start with
increment by
[maxvalue 值]
[minvalue 值]
[cycle 当到达最大值的时候,将继续从头开始]
example:
create sequence mySeq
start with 1
increment by 2
maxvalue 40
minvalue 1
cycle
3:怎么去取序列数据:
currval--->curenValue
nextVal-->NextVlaue
example:
select mySeq.nextVal from dual
注意一点:currval只有当nextVal执行一次以后才可以用.
在创建表的时候,可以使用序列.
具体例子:
create table 学生基本信息表
(
StuID int,
StuName varchar2(20)
)
insert into 学生基本信息表 values(mySeq.nextVal,'AA')
4:如何修改序列:
alter sequence mySeq maxValue 500
注意:不能改start with,其他随便改(设置minValue值的时候不能大于当前值)
5:如何查看某个表空间所有序列:
select * from user_sequences
6:如何删除:
drop sequence 序列名称
同义词:
就是给Oracle对象取一个别名,并做为数据库对象永久保存在Oracle数据库.
特别注意一点:同义词一但创建,就不能修改 只能删除
1:分类:
私有同义词:普通用户(scott)创建,并且只有该用户可以用.
公有同义词:由DBA。SYSTEM。SYS创建.任何用户都可以访问同义词
2:特点:
代表Oracle对象的全部.不能代表一个对象的某一部分.但是视图却可以代表对象的一部分.
对同义词进行数据操作,将影响到某一个跟同义词关联的对象
对某一个具体的Oracle对象进行数据操作的时候,将影响到与他关联的同义词。
表一但重命名 同义词不会改变 还是在数据库存在的.
表一但删除 同义词也还在 但同义词数据却不在
3:创建同义词的格式:
create [public] synonym 同义词名称 for Oracle某一个具体对象
4:查看所有的同义词:
select * from user_synonyms
5:如何删除同义词:
drop synonym 同义词名称
自己写的一个例子
我在用户AA中建一个同义词:
CREATE SYNONYM "AA"."MYTONGYI"
FOR "AA"."AATEST_1"
其中 AATEST_1 是一个数据库表。
然后有用户BB :
执行下列语句:
grant select on MYTONGYI to BB;
commit;
那么用BB登录执行下列语句:
select * from AA.MYTONGYI
视图与同义词的区别:
A:同义词是实实在在的 而视图是虚的
B:同义词是代表对象的全部 不能代表一部分 而视图既可以是全部 也可以是一部分
C:同义词一但创建不能修改 视图却可以修改
D:同义词只能代表一个对象 ,而视图可以关联多个