什么是索引
- 索引可以提升查询速度,会影响where条件查询(where xxx=''),order by(order byyyy)排序
- 索引是针对字段的,需要添加到字段上
- 索引在大量数据场景下效果明显
- 索引的优点
1. 大大的提高查询速度
2. 可以显著的减少查询和排序的时间。
- 索引的缺点
当对表中的数据进行增加,修改,删除的时候,索引要同时进行维护,数据量越大维护时
间越长
主键索引 (PRIMARY KEY)
一个表可以没有主键,但最多只能有一个主键,并且主键值不能包含NULL。
添加主键的时候会自动创建主键索引,主键索引是一种唯一性索引
根据主键进行where条件查询,效率高
唯一索引(UNIQUE)(了解)
特点: 索引列的所有值都只能出现一次, 必须唯一.
唯一索引可以保证数据记录的唯一性。
事实上,在许多场合,人们创建唯一索引的目的往往不是为了提高访问速度,而只是为了避免
数据出现重复
使用create语句创建: 在已有的表上创建索引
create unique index 索引名 on 表名(列名(长度))
create unique index index_dname on test_index(dname);
#插入数据时,dname重复会报错
普通索引 (NORMAL INDEX)
普通索引的唯一任务是加快对数据的访问速度。因此,应该只为那些最经常出现在查询条件
(WHERE column=)或排序条件(ORDER BY column)中的数据列创建索引。
普通索引对数据没有唯一、非空的强制要求
#在已有的表上创建索引
create index
索引名 on 表名(列名[长度])
#修改表结构添加索引,test_index 表名,dname_indx索引名
alter table test_index add index dname_indx(dname);
删除索引
由于索引会占用一定的磁盘空间,因此,为了避免影响数据库的性能,应该及时删除不再
使用的索引
#删除 test_index 表中名为 dname_indx 的普通索引
ALTER TABLE test_index DROP INDEX dname_indx;
什么是视图
1. 视图是一种虚拟表。
2. 视图建立在已有表的基础上, 视图赖以建立的这些表称为基表。
3. 向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的 SELECT 语句.
4. 视图向用户提供基表数据的另一种表现形式。
视图的作用
- 权限控制时可以使用。 比如,某几个列可以运行用户查询,其他列不允许,可以开通视图 查询特定的列, 起到权限控制的作用
- 简化复杂的多表查询。
视图 本身就是一条查询SQL。我们可以将一次复杂的查询构建成一张视图, 用户只要查询视图就可以获取想要得到的信息(不需要再编写复杂的SQL)视图主要就是为了简化多表的查询。
在一个完成的表之前加上‘creat view 任起的视图名 as ‘,则就成了视图,用’select * from 任起的视图名 ‘就能查出表(把原来的表变成了视图,视图是原来表的外包装)。
creat view ut_view as select user_name,piece from user_trade;
select * from ut_view;就可以给别人仅看user_name和piece两列。user_trade表名,ut_view视图名。
#查询各个分类之下的商品平均价格
SELECT
c.cname,
avg( p.price )
FROM
products p
LEFT JOIN category C ON p.category_id = c.cid
GROUP BY
c.cname
#创造视图,将左外链接两张表变成一张视图,需要字段直接从视图调取
CREATE VIEW category_products_view as
SELECT * FROM products p LEFT JOIN category C ON p.category_id = c.cid
#取c.cname,avg( p.price )字段,简化后的代码
SELECT
c.cname,
avg( p.price )
FROM
category_products_view
GROUP BY
c.cname
#等于就是把关联查询变成视图简化了