数据库中的视图是一个虚拟表,其内容由查询定义,可以像表一样去处理视图,但是这个表不存储数据,他的结构和数据都是由视图中select语句来决定的
语法:
create view 视图名 AS 查询语句
查看视图的定义:show create table 表名 show create view 视图名
查看视图: show create view 视图名
修改视图: alter view 视图名 as select语句
删除视图: drop view 视图名
作用:
1. 简单性,看到的就是需要的,对不需要的列可以隐藏
2. 安全性 防止未授权用户查看特定的行和列
3. 独立性 视图可以使应用程序和数据表在一定程度上独立
数据库优化:
1. 创建表时,选择合适的列类型
2. 数据库要符合3范式
3. 通过explain检测,优化具体的sql语句
4. 适当建立索引
mysql支持4大类索引:
1.主键索引:
如果一个字段被定义为主键(primary key),则自动在该字段上建立主键索引
2.唯一索引:
一个值只能有出现一次(一个字段在整个数据表内是唯一的,可以建立唯一索引),一旦找到数据,就不会往下继续查找
3.普通索引:默认就是普通索引
4.全文索引:如果在某个字段上建立全文索引,将记录内部的关键字提取出来,
然后对关键字建立索引,与存储引擎相关,建立全文索引的话,必须是myisam
show index from table_name; 查看某个表上的索引
1. 创建索引
create [UNIQUE|FULLTEXT] index index_name on tbl_name (col_name [(length)] [ASC | DESC] , …..);
alter table table_name ADD INDEX [index_name] (index_col_name,...)
默认是普通索引,指定主键后,自动创建主键索引
create [指定索引类型] index 索引名 on 表名 (列名,在哪个字段上建立索引)
索引的坏处:
dml语句会变慢(update、delete、insert),因为你创建数据后,
还要维护索引,给新增加的数据创建索引,而且索引文件会占用磁盘空间
索引的建立条件:
1、较频繁的作为查询条件的字段应该创建索引
2、唯一性太差的字段不适合建立索引(即使频繁作为查询条件)
3、更新非常频繁的字段不适合建立索引(登录状态)
4、不会出现在where 字句中的字段不该创建索引