视图view,索引index

本文详细介绍了数据库中的视图和索引管理。视图作为虚拟表,简化了复杂查询,而索引则能显著提升查询速度。文章通过实例展示了如何创建、修改和删除视图,以及如何创建和使用不同类型的索引,包括单列索引和组合索引。同时,讨论了索引的优缺点,强调了合理使用索引的重要性。
摘要由CSDN通过智能技术生成

1. 视图 View

视图是一个虚拟表,是sql语句的查询结果,其内容由查询定义。同真实的表一样,视图
包含一系列带有名称的列和行数据,在使用视图时动态生成。视图的数据变化会影响到基表,
基表的数据变化也会影响到视图[insert update delete ] ; 创建视图需要create view 权限,并
且对于查询涉及的列有select权限;使用create or replace 或者 alter修改视图,那么还需要
改视图的drop权限。
视图的核心功能是用来简化查询,查询可以当作一个表来查询。

select * from stu;
-- 建立视图
create view v_li as
		select id,name,score from stu where name like '李%'
--
show tables;
select * from v_li limit 5;

-- 建立账号,并授权
create user vu identified by 'vu';
grant select(id,name) on wxdb.v_li to vu;
grant select on wxdb.v_li to vu;

-- 查看数据库db,中所有视图
select `TABLE_NAME`
from `INFORMATION_SCHEMA`.`TABLES`
where `TABLE_SCHEMA` = 'db' and `TABLE_TYPE` = 'VIEW';


create view v_member as
		select m.nickname,m.sex,m.mobile from hbcf.cf_member m;

grant select on v_member to vu;

-- 删除视图
drop view v_member;

-- 查看系统所有账号信息
select user,host,u.authentication_string,u.plugin from mysql.user u;

在这里插入图片描述

-- 查询视图
select * from stu01;

--
create view vstu
as
select level 等级,count(*) 人数 from (select id,name,score,
case
when score>=90 then '优秀'
when score>=80 then '良好'
when score>=60 then '及格'
else '补考' end level
from stu) as t group by t.level;

select * from stu;

select * from vstu;

-- 查看数据库 d3 所有 view 视图
select `TABLE_NAME`
from `INFORMATION_SCHEMA`.`TABLES`
where `TABLE_SCHEMA` = 'd3' and `TABLE_TYPE` = 'VIEW';

-- 查看数据库 d3的所有 base table 表
select `TABLE_NAME`
from `INFORMATION_SCHEMA`.`TABLES`
where `TABLE_SCHEMA` = 'd3' and `TABLE_TYPE` = 'BASE TABLE';

-- 删除视图
drop view if exists stu01,vstu;

2. 索引 index

MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。

打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。
拿汉语字典的目录页(索引)打比方,我们可以按拼音、笔画、偏旁部首等排序的目录(索引)快速查找到需要的字。
索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。
创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。
实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。
上面都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。
建立索引会占用磁盘空间的索引文件。

在这里插入图片描述

select user(),database();
select user(),database() from dual;

-- 建立索引
-- 每一个约束,自带索引 pk uk fk
create index name_index on stu(name asc);

-- 修改表建立索引
-- ALTER TABLE tbl_name ADD PRIMARY KEY (column_list): 该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。
-- ALTER TABLE tbl_name ADD UNIQUE index_name (column_list): 这条语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)。
-- ALTER TABLE tbl_name ADD INDEX index_name (column_list): 添加普通索引,索引值可出现多次。
-- ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list):该语句指定了索引为 FULLTEXT ,用于全文索引。


-- 建立表时指定索引,
create table t(t varchar(30),key(t desc))
show index from t;

-- 删除索引
drop index t on t;

alter table t add index index1 (t desc);
alter table t drop index index1;

-- 使用索引
select * from stu where name = '李丽';

-- 建立唯一索引
create unique index name_index on stu(name asc);

create index namegi on stu(name asc,gender desc);

-- 删除索引
drop index name_index on stu;
drop index namegi on stu;

-- 查看表中所有索引
show index from stu;

-- 索引缺点 1 50mb 100mb 2 降低数据的插入,修改速度

-- index 索引
-- 建立索引
create table t1(
		id int unsigned auto_increment,
		name varchar(30),
		score tinyint unsigned,
		primary key(id),
		key(name desc)
);

create table t2(
		id int unsigned,
		name varchar(30),
		score tinyint unsigned,
		index iname (name(30))
);

create table t3(
		id int unsigned,
		name varchar(30),
		score tinyint unsigned
);

-- 建立索引
create index inn on t3(name)
-- 建立唯一索引
create unique index inn2 on t3(name);
alter table t3 add index inn4(name asc,score desc);

-- 使用索引 索引字段是不是出现在where条件中,如果在索引就起作用
select * from stu where name = '张三';

select * from t3;
insert into t3 value(1,'李四1',80);
insert into t3 value(2,'李四2',10);
insert into t3 value(3,'李四3',50);
insert into t3 value(4,'李四4',40);
insert into t3 value(5,'李四5',30);
insert into t3 value(6,'李四6',20);

explain select * from t3 where id = 6;

explain select * from t3 where name = '李四3';

-- 删除索引
drop index inn2 on t3;

alter table t3 drop index inn4;

-- 查看表中所有索引
show index from t3;

-- 索引缺点 1 50mb 100mb 2 降低数据的插入,修改速度
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值