索引与视图
一、首先要弄明白什么是索引?
索引就是由数据库表中一列或多列组合而成,其作用是提高对表中数据的查询速度。 类似于图书的目录,方便快速定位,寻找指定的内容
索引又分为5种:普通索引、主键索引、唯一索引、组合索引、全文索引。
普通
其中最常用的是:普通索引和全文索引。(主键索引为默认索引,创建索引自动默认生成的)
二、那索引的优点和缺点又有哪些呢?
优点:提高了查询速度。
缺点:创建和维护的时间增加了,同时占用了硬盘空间。(通常一个库里只建议创建两到三个索引,因为MySQL不仅要保存数据还要保存索引文件,所以索引多了反而会影响查询速度。)
1.普通索引:是最基本的索引,它没有任何限制
语法:create index 索引名 on 表名(l列名)
2.全文索引:使用FULLTEXT参数可以设置,全文索引只能创建在CHAR,VARCHAR,TEXT类型的字段上。主要作用是提高查询较大字符串类型的速度;只有MyISAM引擎支持该索引,MySQL默认引擎不支持;
语法:alter table 表名 add fulltext 索引名 (列1,列2…)
select * from 表名 where match (列1,列2,…) against (关键词)
通过对(关键词)的搜索,会在(列1,列2…)中找到对应的含有关键词的项。
删除语法:drop index 索引名字 on 表名
!注意事项:默认不对汉字分词
三、视图
含义:虚拟表,和普通表一样使用。
语法:
create view 视图名
as
查询语句;
修改视图
语法:1.create or replace view 视图名
as
查询语句;
*/
SELECT * FROM myv3
CREATE OR REPLACE VIEW myv3
AS
SELECT AVG(salary),job_id
FROM employees
GROUP BY job_id;
————————————————
2、alter view 视图名
as
查询语句;
*/
ALTER VIEW myv3
AS
SELECT * FROM employees;
删除视图
语法:drop view 视图名,视图名,…;
DROP VIEW emp_v1,emp_v2,myv3;
查看视图
DESC myv3;
SHOW CREATE VIEW myv3;
视图的更新
CREATE OR REPLACE VIEW myv1
AS
SELECT last_name,email,salary12(1+IFNULL(commission_pct,0)) “annual salary”
FROM employees;
CREATE OR REPLACE VIEW myv1
AS
SELECT last_name,email
FROM employees;
SELECT * FROM myv1;
SELECT * FROM employees;
插入
INSERT INTO myv1 VALUES(‘张飞’,‘[email protected]’);
修改
UPDATE myv1 SET last_name = ‘张无忌’ WHERE last_name=‘张飞’;
删除
DELETE FROM myv1 WHERE last_name = ‘张无忌’;
具备以下特点的视图不允许更新
包含以下关键字的sql语句:分组函数、distinct、group by、having、union或者union all
CREATE OR REPLACE VIEW myv1
AS
SELECT MAX(salary) m,department_id
FROM employees
GROUP BY department_id;