mysql---索引、视图

 

1. 索引

(1)

  索引:表中一列或多列组合而成

  作用:提高查询速度【降低了插入数据的速度】

 

  所有存储引擎对每个表至少支持16个索引,总索引长度至少为256字节

  InnoDB、MyISAM支持BTREE索引     MEMORY支持HASH索引和BTREE索引

 

(2)分类

  ①普通索引

  创建索引时不加任何限制条件

  ②唯一性索引

  用UNIQUE参数设置索引为唯一性索引

  ③全文索引

  FULLTEXT参数,只能创建在CHAR、VARCHAR、TEXT类型字段上。查询数据量较大的字符串类型字段时,使用全文索引可提高查询速度。

  ④单列索引

  在表中单个字段上创建索引(此所有可以是普通、唯一性索引、全文索引)

  ⑤多列索引

  在多个字段上创建一个索引,只有查询条件中使用了这些字段中的第一个字段时,索引才会被使用

  ⑥空间索引

  SPATIAL参数,用于空间数据类型(GEOMETRY、POINT、LINESTRING、POLYGON)

 

 

 

 

 

2. 创建索引

(1)创建表时创建索引

CREATE TABLE 表名(属性名 数据类型 约束,
                            ...
                            [UNIQUE | FULLTEXT|SPATIAL] INDEX|KEY
                            [索引别名] (属性名1 [(长度)])  [ASC|DESC]
                            );

 

  ①创建普通索引

  例:

CREATE TABLE  index1(id INT,
                     name VARCHAR(20),
                     sex BOOLEAN,
                     INDEX(id)
                     );

 

 

(2)在已经存在的表上创建索引

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名
ON 表名 (属性名 [(长度)] [ASC|DESC]);

 

(3)ALTER TABLE创建索引

ALTER TABLE 表名 ADD [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名(属性名 [(长度)] [ASC|DESC]);

 

 

3. 删除索引

DROP INDEX 索引名 ON 表名;

 

4. 查看索引

SHOW INDEX FROM 表名\G;

 

 

--------------------------------------------------------------------------------------------------------------

视图

1.  

  视图是从一个或多个表中导出来的虚拟表,通过视图可使不同用户只查看同一个表中该用户关系的部分。

  数据库中只存放了视图的定义而没有存放视图中的数据(数据还在原来的表中)

 

2. 创建视图

CREATE [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}] 
    VIEW 视图名 [(属性列表)]
    AS SELECT 语句
    [WITH [CASCADED|LOCAL] CHECK OPTION];

 

  UNDEFINED:mysql自动选择要使用的算法

  MERGE:将使用视图的语句与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分

  TEMPTABLE:将视图结果存入临时表,然后使用临时表执行语句

 

  CASCADED:更新视图时要满足所有相关视图和表的条件,默认

  LOCAL:更新视图时,要满足该视图本身的定义的条件即可

 

3. 查看视图 

DESC 视图名;
SHOW TABLE STATUS LIKE 视图名;
SHOW CREATE VIEW 视图名;
SELECT * FROM information_shecma.views;

 

  所有视图定义都存在information_schema数据库下的views表中

 

4. 修改视图

(1)

CREATE OR REPLACE [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]
    VIEW 视图名 [(属性列表)]
    AS SELECT 语句
    [WITH [CASCADED|LOCAL] CHECK OPTION];

 

(2)

ALTER [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]
    VIEW 视图名 [(属性列表)]
    AS SELECT 语句
    [WITH [CASCADED|LOCAL] CHECK OPTION];

 

5. 更新视图

  通过视图插入、更新、删除表中数据

  对视图的更新操作都反映到实际的表上,除了部分情况:

    ①视图中含SUM()、COUNT()、MAX()、MIN()等函数

    ②视图中含UNION、UNION ALL、DISTINCT、GROUP BY、HAVING等关键字

    ③常量视图

      例:    

CREATE VIEW view1 AS SELECT abc AS name;

 

    ④由不可更新的视图导出的视图

      即SELECT 是从一个不可更新的视图中取的数据

    ⑤ALGORITHM指定了TEMPTABLE类型

    ⑥视图对应的表上存在没有默认值的列,而该视图不包含该列。更新视图时,该字段将没有值插入,数据库会阻止视图更新。

  

 

6. 删除视图

  删除的是视图的定义

DROP VIEW [IF EXISTS] 视图名列表 [RESTRICT|CASCADE];

 

mysql---索引、视图

上一篇:ADB与FASTBOOT工具使用教程


下一篇:Mysql常用基础命令操作