数据库应用(六): Ubuntu 下 MySQL 视图和索引
视图和索引
索引(Index)是影响数据性能的重要因素之一,设计高效的、合理的索引可以显著提高数据信息的查询速度和应用程序的性能。
视图(View)是一个存储指定查询语句的虚拟表,视图中数据来源于由定义视图所引用的表,并且能够实现动态引用,即表中数据发生变化,视图中的数据随之变化
理解索引
MySQL的索引是为了加速对数据进行检索而创建的一种分散的、物理的数据结构。索引包含从表或视图中一个或多个列生成的键,以及映射到指定数据行的存储位置指针。
索引是依赖于表建立的,提供了数据库中编排表中数据的内部方法。表的存储由两部分组成,一部分是表的数据页面,另一部分是索引页面。索引就存放在索引页面上
索引的分类
- 普通索引
- 唯一索引
- 全文索引
- 单列索引
- 多列索引
- 空间索引
创建索引的方式
- 创建表的时候创建索引
CREATE TABLE 表名(字段名 数据类型[完整性约束条件], 字段名 数据类型[完整性约束条件], ...... 字段名 数据类型 [UNIQUE|FULLTEXT|SPATIAL] INDEX|KEY [别名] (字段名1 [(长度)]) [ASC|DESC]) );
例: 在t1表中id字段上建立索引
例:创建一个表名为t2的表,在表中的id 字段上建立索引名为unique_id的唯一性索引,并且按照升序排序
例: 创建一个表名为t3的表,在表中的name字段上建立索引名为fulltext_name的全文索引
例:创建一个表名为t4的表,在表中的name字段上建立索引名为single_name的单列索引
例:创建一个表名为t6的表,在表中的id和name字段上建立索引名为multi的多列索引
- 使用CREATE INDEX 语句在已经存在的表上创建索引
CREATE [UNIQUE|FULLTEXT] INDEX 索引名 ON 表名 (字段名 [(长度)] [ASC|DESC]);
在book表中的bookid字段上建立普通索引
在book表中的bookid字段上建立唯一性索引
在book表中的comment字段上建立单列索引
在book表中的authors和info字段上建立多列索引
- 使用ALTER TABLE语句在已经存在表上创建索引
ALTER TABLE 表名 ADD [UNIQUE|FULLTEXT] INDEX 索引名 (字段名 [(长度)] [ASC|DESC]);
- 创建表的时候创建索引
在表中的bookid字段上创建普通索引
在表中的bookid字段上创建唯一索引
在book表中的comment字段上建立单列索引
删除索引
ALTER TABLE 表名 DROP primary key;
ALTER TABLE 表名 DROP INDEX 索引名;
ALTER TABLE 表名 DROP FOREIGN KEY fk_symbol;
DROP INDEX 索引名 ON 表名;
视图
创建视图
CREATE VIEW view_name[(column_list)]
AS SELECT_statement
[WITH CHECK OPTION]
在student表上创建view_stu视图
查看视图
DESCRIBE 视图名; SHOW TABLE STATUS LIKE '视图名' SHOW CREATE VIEW 视图名;
修改视图
CREATE [OR REPLACE ]VIEW view_name [(column_list)]
AS SELECT_statement
[WITH CHECK OPTION]
使用CREATE OR REPLACE VIEW 语句修改view_stu视图
使用ALTER语句修改视图
更新视图
使用UPDATE语句更新视图
学习不易,诸君共勉!