SQL语句复习【专题八】

SQL语句复习【专题八】

序列 Sequence。数据库对象是 oracle 专有的。
作用:可以将某一列的值使用序列,来实现自动增长的功能。
访问序列的值。【序列有两个属性 nextval currval】
获得序列的下一个自增(默认自增1)之后的值。每访问一次nextval 序列的值都会自增一次。

---创建序列:
create sequence seq_student
select seq_student.nextval from dual
--获得序列当前值 currval 在创建 序列开始,不能直接访问,必须访问一次 nextval 属性之后才能访问 currval
select seq_student.currval from dual
--使用序列的值
select * from student
insert into student values (seq_stu.nextval,'dilraba'||seq_stu.currval,30,'女','000002',null);
--设置序列的详细的属性
create sequence seq_stu
increment by 2 --设置自增量
start with 100
maxvalue 100000
minvalue 100
cycle --| nocycle
--drop 删除序列
drop sequence seq_student

数据库对象 -- 索引【索引的作用:用来加速检索数据的】
索引是被动使用的,如果某些字段被检索的频率比较高,那么就可以根据该字段生成对应的索引,来加速针对该字段的检索的速度
--索引的创建方式:
--1:自动创建:primary key unique 类,oracle会自动的针对该类的数据生成索引。
--2:手动创建
---创建索引
create index index_student_sname on student(sname)
--索引一旦创建自动使用
truncate table student
--带索引的检索
select * from student where sname='小白200'--0.016
--删除索引
drop index index_student_sname

使用索引的要点:
①索引数据可能要占用大量的存储空间。
②索引改善检索操作的性能,但降低数据插入、修改和删除的性能。在执行这些操作时,DBMS必须动态地更新索引。
③限制表中索引的数目。索引越多,在修改表时对索引做出修改的工作量越大
④并非所有数据都适合于索引。唯一性不好的数据(如省)从索引得到的好处不比具有更多可能值的数据(如姓名)从索引得到的好处多
⑤索引用于数据过滤和数据排序。如果你经常以某种特定的顺序排序数据,则该数据可能是索引的备选。
⑥可以在索引中定义多个列(如省加城市),这样的索引只在以省加城市的顺序排序时有用。如果想按城市排序,则这种索引没有用处。

小总结
1、约束
①域完整性约束:非空 not null 检查 check
②记录完整性约束:主键 primary key 唯一 unique
③参照完整性约束:外键 foreign key
④表级约束、列级约束(not null,只能列级)
2、删除主表的记录的时候,关于从表对主表字段引用的处理的方式
①受限制的 restrict 不允许删除。
②cascade:从表一并删除
③set null: 设置为null
3、序列:Sequence oracle 特有的数据库对象。
nextval(自增并返回)、currval(返回序列当前值)
4、index 索引。被动使用。为了加快 检索数据的速度。
①自动创建:主键 primary key + unique 。拥有这两种约束的字段,自动会给每一个数据创建对象的索引。
②会降低,DML操作。
③如果重复的数据比较多(不建议)

原文地址:https://www.cnblogs.com/cao-yin/p/10502937.html