美文网首页
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--索引

    MySQL索引 查看索引 创建索引 创建唯一索引 创建主键索引 删除索引 删除主键 MySQL视图 创建视图 删除...

  • MySQL数据库高级操作一

    前言 MySQL增删改查基本操作后,为了优化数据库还可使用视图、事务、索引等数据库操作。 1、视图——SQL语句查...

  • MySQL数据库:视图与索引

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

  • mysql高级:视图、事务、索引

    # mysql高级:视图、事务、索引 * 视图 * 事务 * 索引 * 账户管理 * 主从 ## 1.视图 动态抽...

  • MySQL 之索引、视图、触发器

    MySQL 之索引、视图、触发器 索引 索引的引入 索引是由数据库表中一列或者多列组合而成,其作用是提高对表中数据...

  • MySQL书目

    MySQL数据库索引设计与优化 MySQL技术内幕 MySQL排错指南 高性能MySQL MySQL DBA修炼之道

  • mysql高级知识

    mysql高级知识系列目录 存储过程与函数 理解MySQL数据库覆盖索引 为什么 MySQL 索引要使用 B+树而...

  • MySQL(4)应用优化

    MySQL应用优化 4.1-MySQL索引优化与设计 索引的作用 快速定位要查找的数据 数据库索引查找 全表扫描 ...

  • 2019-03-28 插入多条数据、连接数据库、控制台输入,与保

    插入多条数据 索引与视图 连接数据库 控制台输入,与保密

  • MySQL索引背后的数据结构及算法原理

    原文链接:MySQL索引背后的数据结构及算法原理 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题...

网友评论

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

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