Java面向对象系列[v1.0.0][索引与视图]

索引

  • 索引是存放在schema中的一个数据库对象,虽然索引总是从属于数据表,但它也和是数据表一样属于数据库对象,创建索引唯一的作用就是加速对表的查询,索引通过使用快速路径访问方法来快速定位数据,从而减少磁盘I/O
  • 索引作为数据库对象,在数据字典中独立存放,但不能独立存在,必须属于某个表
  • MySQL使用information_schema数据库里的STATISTICS表来保存该数据库实例中的所有索引信息
  • 索引的好处是提升查询速度,但当数据表中的记录增加删除修改时,数据库需要维护索引,因此也会有一定的系统开销,并且存储索引信息也需要一定的磁盘空间

创建索引

创建索引有两种方式:

  • 自动:当在表上定义主键约束和唯一约束和外键约束的时候,系统会为该数据列自动创建对应的索引
  • 手动:通过create index...语句来创建索引
create index index_name on table (column[, column]...);
create index davieyang_test_index on davieyang_test(davieyang_name); 
create index davieyang_test_index_multi on davieyang_test(first_name, last_name);

删除索引

删除索引也有两种方式:

  • 自动:数据表被删除时,该表上的索引自动被删除
  • 手动:通过drop index...语句来删除指定数据表上的指定索引
drop index 索引名 on 表名
drop index davieyang_test_index on davieyang_test

有些数据库删除索引时无须指定表名,因为他们要求建立索引时,每个索引都有唯一的名字,所以无须找你定表名,例如Oracle,但MySQL只要求同一个表内的索引不能重名,所以必须指定表名

视图

视图看上去非常像一个数据表,但他不是数据表,因为他不能存储数据,视图只是一个或多个数据表中数据的逻辑显示,使用视图有几点好处:

  • 可以限制对数据的访问
  • 可以使复杂的查询变简单
  • 提供了数据的独立性
  • 提供了对相同数据的不同显示

创建视图

因为视图只是数据表中数据的逻辑显示,也就是一个查询结果,所以创建视图就是建立视图名和查询语句的关联

# 如果视图存在则使用新视图替换原有视图,如果不存在则创建视图
create or replace view 视图名
as
subquery

视图的本质就是一条被命名的SQL

create or replace view view_davieyang_test
as
select davieyang_id, davieyang_name from davieyang_test;

MySQL允许在创建视图时使用with check option子句,使用该子句创建的视图不允许修改

create or replace view view_davieyang_test
as
select davieyang_id, davieyang_name from davieyang_test with check option;

大部分数据库都采用with check option来强制不允许修改视图的数据,但Oracle采用with read only来强制不允许修改视图的数据

删除视图

drop view 视图名
drop view view_davieyang_test;
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符 “速评一下”
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页