数据库的索引和试图
索引
索引的设立
索引分类 :
普通索引: 就是一个普通的索引,可以空,可以重复。null
ALTER TABLE teacher ADD INDEX (column);
唯一索引 : 可以为空,不可以重复
ALTER TABLE teacher ADD UNIQUE (column);
ALTER TABLE teacher ADD CULUMN TYPE UNIQUE;
主键索引 : 不可为空 不可以重复
ALTER TABLE teacher ADD PRIMARY KEY (COLUMN)
只要是主键 就是索引
多列索引
ALTER TABLE teacher ADD INDEX (column1,column2,column3)
使用索引 ,
1 少量数据不使用索引
2 查询次数不少于索引
3 查询要携带索引的字段 同常放在select 之后的第一个
4 索引提高了索引效率,但是占用内存
试图
试图介绍:
view :当查询复杂度比较大,多表,多关系,会导致查询语句混乱,不利于sql语句的编写和编写的sql语句的可读性,于是mysql推出了试图模式
试图模式是对着一个查询的结果展示,试图里只查询语句,不存放结果。
试图优点,
1 简单 试图构建了一个虚拟的逻辑表,这里面的数据来之指定的查询,而查询可以是多表联 查,在使用的时候,我们可以直接对试图表里面的数据进行查询,不用从原始表查
2,安全,数据库有权限设置,但是没有对行和列的权限。所以如果对一个表里的数据设置不同的权限,mysql本身的权限设置有些不够,我们用试图查询出数据需要的数据,用户基于试图进行查询
3数据独立,一旦试图的结构决定,可以屏蔽掉表结构变数给用户甙类的影响,在原来表当中增加一列
试图的缺点:
试图会降低查询的效率。尤其是在试图当中的查询,在再次使用试图的查询
试图的设立
需求:
查询所有姓孙的女生
创建:
查询所有姓孙的学生
select * from student where name like “孙%”;
然后将该查询形成试图
CREATE VIEW student AS (select * from student where name like "孙"%);
使用
交友网站对用户联系方式进行限制
1 创建视图,查询所有用户的个人信息(残缺版)
2 从残缺版里查询所有的女生
查看所有试图
SHOW TABLE STATUS WHERE COMMENT = "view"
删除试图
DROP VIEW student_sun;