MySQL索引和视图
索引
创建索引
1).创建表的时候创建索引
CREATE TABLE table_name(property_name1 data_type1
其中的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 表名
数据库的备份
导出整个数据库结构和数据
语法:
mysqldump -h localhost -uroot -p123456 database > dump.
mysqldump -h localhost -uroot -p123456 db_xiaoli > d:/t_log_001.sql
导出单个数据表结构和数据
语法:
mysqldump -h localhost -uroot -p123456 database table > dump.sql
mysqldump -h localhost -uroot -p123456 db_xiaoli t_log > d:/t_log_002.sql
mysqldump -h localhost -uroot -p123456 db_xiaoli t_log > t_log_003.sql
导出整个数据库结构(不包含数据)
语法:
mysqldump -h localhost -uroot -p123456 -d database > dump.sql
导出单个数据表结构(不包含数据)
语法:
mysqldump -h localhost -uroot -p123456 -d database table > dump.sql
视图
首先视图是一种虚拟的表,它依赖于原有的表,本身不保存任何数据信息
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等关键字
5).删除视图
用户必须拥有DROP权限
DROP VIEW [IF EXISTS] 视图名列表 [RESTRICT | CASCADED]
其中的IF EXISTS 判断视图是否存在,存在则删除,否则则不需要删除
查看DROP权限
SELECT Drop_priv FROM mysql.user WHERE user=‘用户名’;