其他数据库对象(视图、序列、索引)
视图
视图也被称为虚表,即虚拟的表,是一组数据的逻辑表示。
视图对应于一条select语句,结果集被赋予一个名字,即视图的名字。
视图可用于子查询的重用。创建视图的语句是CREATE VIEW,但是创建视图需要有权限,否在无法创建。
视图的名字一般以“v_"开头。
视图在SQL语句中体现的角色与表相同,但是视图不是一张真实的表,使用视图的目的是简化SQL语句的复杂度,重用子查询,限制数据访问。
视图对应的子查询若有函数或表达式,必须给别名,当视图中使用了别名,那么视图的该字段就用别名来命名。
修改视图
由于视图仅对应一个SELECT语句,所有修改视图就是替换该SELECT语句而已。
视图的分类
视图分为简单视图和复杂视图。
简单视图:对应的子查询不含有关联查询,查询的字段不包括函数、表达式等,没有分组,没有去重。反之则是复杂视图。
有的资料上分为,简单视图,复杂视图,关联视图
对视图进行DML操作(少)
仅能对简单视图进行DML操作。
对视图进行DML操作就是对视图数据来源的基础表进行操作,操纵不当会对基础表进行数据污染。
新增修改会出现数据污染的情况
删除不会,一删全删
WITH CHECK OPTION
为视图添加检查选项,可以保证对视图的DML操作后视图对其仍可见,否在不允许进行DML操作,这样就避免了对基表进行数据污染。
WITH READ ONLY
为视图添加只读选项,那么该视图不允许进行DML操作
和视图相关的数据字典
USER_OBJECTS 数据库对象
USER_VIEWS 数据库视图
USER_TABLES 数据库表
USER_UPDATE_COLUMNS
删除视图
DROP VIEW view_name;
删除视图是不会影响基表的,删除视图中的数据是会删除基表对应数据的。
序列
序列(sequence)也是数据库对象之一。是用来生成一系列数字。
序列常用于为某张表的主键字段提供值使用。
CREATE SEQUENCE seq_stu_id
START WITH 1 从几开始
INCREMENT BY 1 步长是多少
默认没有最大值,最小值,默认缓冲20,有缓存能提高效率
序列支持两个伪列:
NEXTVAL:获取序列下一个值。
若是新创建的序列,那么第一次调用返回的是START WITH指定的值,以后每次调用都会得到当前序列值加上步长后的数字。
NEXTVA会导致序列发生步进,且序列不能回退,
CURRVAL:获取序列当前值,即:最后一次调用NEXTVAL后得到的值,CURRVAL不会导致步进,但是新创建的序列至少调用一次NEXTVAL后才可以使用CURRVAL
删除序列
序列不能修改,只能删除重建
DROP SEQUENCE seq_stu_id
索引
索引是数据库对象之一。
索引是为了提高查询效率。
索引的统计与运用是数据库自动完成的,只要数据库认为可以使用某个已创建的索引时,就会自动使用。
CREATE INDEX idx_stu_name ON studen(name);
复合索引也叫多列索引,是基于多个列的索引。比如可以用于多个字段的排序时。
也可以基于函数创建索引。
修改索引
如果经常在索引列上执行DML操作,需要定期重建索引,提高索引的空间利用率。
ALTER INDEX index_name REBUILD
删除索引
DROP INDEX index_name
合理使用索引提高查询效率
- 不在小表上建立索引
- 为经常出现在WHERE子句中的列创建索引
- 为经常出现在ORDER BY DISTINCT 后面的字段创建索引。
- 为经常作为表的连接条件的列创建索引
- 不要在经常做DML操作的表上建立索引
- 限制表上的索引数量,索引不是越多越好
- 删除很少使用的、不合理的索引
约束
约束(CONSTRAINT)的全称时约束条件,也称为完整性约束条件。
约束是在数据表上强制执行的一些数据校验规则,当执行DML操作时,数据必须复合这些规则,否在无法执行。
约束的类型
非空约束:NOT NULL(NN)
唯一性约束:UNIQUE(UK)
主键约束:PRIMARY KEY(PK)
外键约束:FOREIGN KEY(FK) 一般不用
检查约束:CHECK(CK)
具体的就不详细介绍了 主要是懒,不过我确实考虑到对于一般的程序员来说都是使用的可视化工具的数据库,比如PLSQL等,添加约束这种都是很简单的了,所以这里就不详细介绍了。
结束语
写到这里,数据库的内容就结束了,我主要是通过看以前学习的视频的方式学习的,所以速度有点慢,但是这样再过一遍之后,不说所有的知识点都记住了,至少所有的知识点有了一个较为深刻的印象,也留下了一些笔记以后可以翻阅,坚持了几个星期了,我感觉很好,我会继续加油的,如果大家发现有什么需要改正的,可以评论区我交流一下的。