MySQL:视图与索引

一、视图

视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索数据的查询。即检索出来的数据按照视图定义的格式来进行显示。

(一)创建视图

  • 语法:
CREATE VIEW view_name AS select_statement;
  • 举例:
select stuName,couName,credit from student,course,score 
where student.stuId = score.stuId 
and score.couId = course.couId;

该查询涉及到三个表的联结,where 条件子句,比较复杂。可以使用视图来简化该操作。
创建视图:

create view stuScore as
select stuName,couName,credit from student,course,score
where student.stuId = score.stuId 
and score.couId = course.couId;

直接对视图进行select语句查询:

select * from stuScore;

直接对视图进行select语句查询和之前的联表查询效果一样,但更简洁。
对视图进行条件查询:

select * from stuScore where couName = 'c#';

对视图进行分组操作:

select stuName cast(sum(credit) as decimal(9,3)) 
as totalScore from stuScore group by stuName;
  • 注意
    创建视图时,若视图存在,可以先使用drop再用create,也可以直接使用create or replace view。如果创建的视图不存在,则第二种方法会创建一个视图,如果要创建的视图存在,则第二种方法会替换掉原有的视图。
    视图中的数据是否可以更新,视情况而定。
    若视图的定义中包含以下操作,则不能通过视图更新数据:
  1. 分组(group by 和 having)
  2. 联结
  3. 子查询
  4. 聚集函数
  5. Distinct
  6. 导出(计算)列

(二)删除视图

语法:

DROP VIEW view_name;

(三)使用视图的好处

  1. 视图能简化用户操作
  2. 视图使用户能以多种角度看待同一数据
  3. 视图对重构数据库提供了一定程度的逻辑独立性
  4. 视图能够对机密数据提供安全保护
  5. 适当的利用视图可以更清晰地表达查询

二、索引

索引是一种特殊的数据库结构,可以用来快速查询数据库表中的特定记录。索引是提高数据库性能的重要方式。MySQL中,所有的数据类型都可以被索引。MySQL的索引包括普通索引、惟一性索引、全文索引、单列索引、多列索引和空间索引等。
索引的优点是可以提高检索数据的速度,这是创建索引的最主要的原因;索引的缺点是创建和维护索引需要耗费时间,耗费时间的数量随着数据量的增加而增加。

(一)创建索引

  • 创建表时创建索引
CREATE TABLE 表名 (属性名 数据类型 [完整性约束条件],
属性名 数据类型 [完整性约束条件],...属性名 数据类型
[UNIQUE | FULLTEXT | SPATIAL] INDEX | KEY
[别名](属性名1 [(长度)] [ASC | DESC]));
  • 在已经存在的表上创建索引
CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX 索引名
ON 表名 (属性名[(长度)] [ASC | DESC]);
  • 用ALTER TABLE语句来创建索引
ALTER TABLE 表名 ADD [ UNIQUE | FULLTEXT | SPATIAL ] INDEX
索引名(属性名 [(长度)] [ASC | DESC]);

(二)删除索引

DROP INDEX 索引名 ON 表名 ;

(三)常见问题及解答

  1. MySQL中索引、主键和惟一性的区别是什么?

索引建立在一个或几个字段上,建立了索引后,表中的数据就按照索引的一定规则排列。这样可以提高查询速度。
主键是表中数据的唯一标识。不同的记录的主键值不同。在建立主键时,系统会自动建立一个唯一性索引。
唯一性是建立在表中一个或者几个字段上。其目的是为了对于不同的记录,具有唯一性的字段的值是不同的。

  1. 表中建立了索引以后,导入大量数据为什么会很慢?

对已经建立了索引的表中插入数据时,插入一条数据就要对该记录按索引排序。因此,导入大量数据的时候速度会很慢。解决这种情况的办法是,在没有任何索引的情况插入数据,然后建立索引。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容