[数据库]Oracle基础(六)之序列,视图,索引
0
2020-09-08 20:00:46
一、序列sequence
sequence是Oracle数据库中一种特殊的对象,能够产生连续的整数值,可以为数据库中多个对象共同使用,主要用于作为主键值。
1.创建序列
起始值 start with:1
步长:increment by:1
最大值:maxvalue:100
最小值:minvalue:1
循环:cycle|nocycle
缓冲区:cache 20|nocache(默认20)
create sequence s1;
注: a) 各可选项位置不先后次序
b) 当increment by n为正数时,
默认maxvalue为: 1E+27 , 默认minvalue为: 1
当increment by n为负数时,
默认maxvalue为: -1 , 默认minvalue为: -1E+26
increment by必须为非零整数,
加不加NOMAXVALUE效果一样,这本身是默认值
c) CACHE n可以每次预产生十五个,二十个,放到内存里,提高性能。
不写默认CACHE 20个
d) cycle用于循环,到了最大数后循环(不建议使用)
2.使用序列
nextval:取序列下一个值
currval:去序列当前值
select s1.nextval from dual;
select s1.currval from dual;
create sequence s2
start with 100
increment by 2;
select s2.nextval from dual;
select s2.currval from dual;
注:先执行nextval才会启用,启用后才能查询到当前值
//序列和表的关系
insert into s_stu(id,name)
values(s2.nextval,'rui');
3.修改序列
ALTER SEQUENCE sequence
[INCREMENT BY n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}]
注: sequence不能修改起始值
alter sequence s_stu_id
increment by -2;
4.删除序列
drop sequence sequenceName二、视图view1.视图
视图是一个或多个表的部分数据,它可以像表一样进行CRUD(Create、Retrieve、Update、Delete)操作,但没有具体的存储数据结构,它以一个select语句的形式存在数据库中。
本质: 一条有名字的select语句
表现: 一到多张表的部分内容
作用:提高检索的效率
表 10000条数据
经常用的10条数据查询出来放在视图中。从数据字典表中查询创建的视图:
select view_name
from user_views;
2.创建视图
create view 视图名字
as 子查询
eg:
//授给briup创建视图的权限
conn system/system; grant create view to briup;
create view v1
as
select id,last_name,salary,dept_id
from s_emp
where dept_id=41;
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view[(alias[, alias]...)]
AS subquery
[WITH CHECK OPTION [constraint 约束名]]
[WITH READ ONLY]
注: a) or replace: 如有相同名字的视图对象,替换。
b) force: 如subquery中源表不存在,先创建视图对像,这时视图对象虽创建,但不能正常使用。
默认值为noforce, 即源表不存在,不能正常创建视图。
c) with check option: 表示可以进行插入、更新和删除操作,
但应该满足WHERE子句的条件。
d) 视图的查询可以使用复杂的SELECT语法,包括连接/分组查询和子查询
e) 在没有WITH CHECK OPTION和WITH READ ONLY的情况下,查询中不能使用ORDER BY子句
f) 如果没有为WITH CHECK OPTION约束命名,系统会自动为之命名,形式为SYS_Cn eg: 创建一视图:
create or replace view a
as
select id from s_emp
where id<9;
g) with read only: 只允许进行select操作。
注: 当对建立视图的那张真正的表进行修改(插入、更新和删除)后,
通过视图查看到的数据是修改以后的数据。
3.视图分类
1) 简单视图
数据来源于一个表, 不包含函数以及进行分组,
可以进行DML操作;
2) 复杂视图
数据来源于多个表,
包含函数以及进行分组,
不可以进行DML操作;
4.修改视图
使用or replace直接覆盖 替换
5.删除视图
drop view view_name;三、索引index1.索引
索引是Oracle中一种的对象,数据库用其以加快检索速度,几乎所有的关系型数据库中都采用b*tree类 型索引,也是被最多使用的。其树结构与二叉树比较类似,根据rowid快速定位所访问的记录。
相当于书的目录是一样的。2、创建索引
1) 自动创建索引
在创建主键约束、唯一键约束
以及使主键约束、唯一键约束
生效时会自动创建唯一索引。
select user_indexes; 2)手动创建索引
create index in1
on s_stu(gender);3.使用索引
1)列频繁用于where子句或连接条件中
2)列的取值范围较广
3)表很大,记录数量较多
4)查询返回的结果占总记录数的百分比在2~4%内
5)索引并不是越多越好4、删除索引
DROP INDEX index_name 5.查询自动索引
select index_name
from user_indexes
where table_name='S_STU';
转载请保留本文网址:http://www.shaoqun.com/a/471166.html
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。
oracle
0