美文网首页
MySQL数据库:视图与索引

MySQL数据库:视图与索引

作者: 虞锦雯 | 来源:发表于2017-06-14 13:54 被阅读563次
    一、视图

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

    (一)创建视图
    • 语法:
    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. 表中建立了索引以后,导入大量数据为什么会很慢?

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

    相关文章

      网友评论

          本文标题:MySQL数据库:视图与索引

          本文链接:https://www.haomeiwen.com/subject/fppdqxtx.html