MySQL之索引与视图

索引

创建索引

1).创建表的时候创建索引
CREATE TABLE table_name(property_name1 data_type1 [limit],property_name2 date_type2 [limit],…,property_namen data_typen,[UNIQUE | FULL TEXT | SPATIAL] INDEX | KEY [name] (PROPERTYNAME [(length)] [ASC | DESC]));
其中的INDEX 和 KEY 是指定字段,二选一即可,[name]是为这个索引取名,PROPERTYNAME是索引对应的字段,ASC照例是升序排序,DESC是降序排序
①.创建普通索引
②.创建唯一性索引 使用UNIQUE约束
③.创建全文索引 使用FULLTEXT约束
只能创建在CHAR、VARCHAR或TEXT类型上且只有MyISAM引擎支持全文索引
④.创建单列索引 保证只对应一个字段
⑤.创建多列索引 在多个字段上创建一个索引,只有使用了第一个字段的索引才会被使用
⑥.创建空间索引 SPATIAL 存储引擎是MyISAM 索引字段必须有非空约束NOT NULL,数据类型是空间数据类型 GEOMETRY、POINT、LINESTRING、POLYGON等
2).在已存在的表上创建索引
CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX 索引名 ON 表名 (属性名 [(长度)] [ASC|DESC]);
3).用ALTER TABLE语句来创建索引
ALTER TABLE 表名 ADD [UNIQUE | FULLTEXT | SPATIAL] INDEX 索引名 (属性名 [(长度)] [ASC | DESC]);

删除索引

DROP INDEX 索引名 ON 表名

视图

首先视图是一种虚拟的表,它依赖于原有的表,本身不保存任何数据信息

1).创建视图
CREATE [ALGORITHM={UNDEFINED | MERGE | TEMPTABLE}] VIEW 视图名 [(属性清单)] AS SELECT 语句 [WITH [CASCADED | LOCAL] CHECK OPTION];
创建视图需要CREATE VIEW 权限,同时也应该具有SELECT权限
查询权限使用SELECT:
SELECT Select_priv , Create_view_priv FROM mysql.user WHERE user = ‘用户名’;
2).查看视图
必须有SHOW VIEW 的权限
①.DESCRIBE 基本信息
语法:DESCRIBE 视图名;
②.SHOW TABLE STATUS 查看基本信息
语法:SHOW TABLE STATUS LIKE 视图名;
③.SHOW CREATE VIEW 查看详细信息
语法:SHOW CREATE VIEW 视图名;
例子:在views表中查看视图详细信息:
SELECT * FROM information_schema.views;

3).修改视图
①.CREATE OR REPLACE VIEW 语句
语法:CREATE OR REPLACE [ALGORITHM={UNDIFINED|MERGE|TEMPTABLE}] VIEW 视图名 [(属性清单)] AS SELECT 语句 [WITH [CASCADED|LOCAL] CHECK OPTION];
②.ALTER 语句
只能修改已存在的视图
ALTER [ALGORITHM={UNDIFINED|MERGE|TEMPTABLE}] VIEW 视图名 [(属性清单)] AS SELECT 语句 [WITH [CASCADED|LOCAL] CHECK OPTION];
4).更新视图
指通过视图来插入、更新和删除表中的数据
有些视图是不可更新的,如:
1.视图中包含SUN(),COUNT(),MAX(),MIN()…
2.包含UNION,UNION ALL,DISTINCT,GROUP BY,HAVING等关键字
3.常量视图
4.视图中的SELECT中包含子查询
5.由不可更新的视图导出的视图
6.创建视图是,ALGORITHM为TEMPTABLE类型
7.视图对应的表上存在没有默认值的列,而且该列没有包含在视图里
WITH[CASCADED|LOCAL] CHECK OPTION 也能决定视图能否更新
5).删除视图
用户必须拥有DROP权限
DROP VIEW [IF EXISTS] 视图名列表 [RESTRICT | CASCADED]
其中的IF EXISTS 判断视图是否存在,存在则删除,否则则不需要删除
查看DROP权限
SELECT Drop_priv FROM mysql.user WHERE user=‘用户名’;

以上部分就MySQL的索引和视图的内容

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值