mysql 视图 union all 索引_mysql---索引、视图

本文详细介绍了MySQL中的索引类型,包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引,并提供了创建、删除和查看索引的方法。同时,讲解了视图的概念,它是从一个或多个表中导出的虚拟表,用于简化数据查询。视图的创建、修改和更新规则也进行了说明,强调了哪些情况下视图可以更新。
摘要由CSDN通过智能技术生成

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,

nameVARCHAR(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视图名;

SHOWTABLE STATUS LIKE '视图名';

SHOWCREATE 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];

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值