mysql视图,索引

一、视图 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;

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;

二、索引

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

打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。

拿汉语字典的目录页(索引)打比方,我们可以按拼音、笔画、偏旁部首等排序的目录(索引)快速查找到需要的字。

索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。

创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。

实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。

上面都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。

建立索引会占用磁盘空间的索引文件。

-- 建立表时指定索引,
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 降低数据的插入,修改速度

desc student查看表结构

show index from student;查看索引

tree

b+tree

Original: https://www.cnblogs.com/zcxxcvbn/p/15924878.html
Author: 一份人间烟火
Title: mysql视图,索引

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/590777/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 10 Math.round(11.5) 等于多少,Math.round(-11.5)等于多少

    Math.round():将括号内的数+0.5,然后向下取整 11.5 + 0.5 = 12,向下取整即12 -11.5 + 0.5 = -11,向下取整即-11 Original…

    数据库 2023年6月6日
    0112
  • Zookeeper应用场景汇总(超详细)

    Zookeeper典型应用场景汇总 数据发布与订阅(配置中心) 发布与订阅模型,即所谓的配置中心,顾名思义就是发布者将数据发布到ZK节点上,供订阅者动态获取数据,实现配置信息的集中…

    数据库 2023年6月11日
    085
  • 数据库设计案例

    简单构建设计数据库 数据库设计案例 描述:简单构建设计数据库 sql代码实现 /* 数据库设计案例 */ — 音乐表 CREATE TABLE Music ( title VAR…

    数据库 2023年6月16日
    0109
  • 常见的位操作及其应用

    概述 与、或、异或、取反或者移位运算这几种基本的位操作想必诸位读者并不陌生,如果我们能在某些合适场景下使用位运算,有些时候可以大大提高算法的效率。但由于本身位运算太过灵活,甚至某些…

    数据库 2023年6月11日
    078
  • 我竟然才知道slf4j里还有个MDC

    大家好久不见,我是walking。今天给大家带来一个日志方面的知识——MDC,不知道大家认识不,反正我是最近刚知道的😂 初见MDC 前两天看项目中的代码,无意中看到一个自定义的线程…

    数据库 2023年6月11日
    0147
  • 电脑必须打开的设置

    电脑性能设置 优化设置一:开启卓越性能 其实,win10系统中有一个卓越性能的隐藏设置,它可以让我们的电脑,在现有配置的情况下,发挥出最优良的性能。 1、 同时按住”w…

    数据库 2023年6月14日
    0106
  • Java8-Stream流

    Java8-Stream基础操作 JAVA技术交流群:737698533 在学习Stream之前必须有Lambda,的基础 Stream是Java8的新特性,可以进行对集合进行一些…

    数据库 2023年6月16日
    090
  • Docker 启动各个应用

    MySQL docker run -p 3306:3306 –name mysql -v /usr/mydata/mysql/log:/var/log/mysql -v /usr…

    数据库 2023年6月6日
    074
  • ubuntu设置时区

    posted @2022-06-21 08:30 一份人间烟火 阅读(2 ) 评论() 编辑 Original: https://www.cnblogs.com/zcxxcvbn/…

    数据库 2023年6月9日
    093
  • git开发常用命令

    1.基本命令git branch 查看本地分支git branch -r 查看远程分支git checkout xxx 切换分支git pull origin master //从…

    数据库 2023年6月9日
    091
  • git配置报错fatal: Authentication failed for ”问题解决

    如果在git配置中报错fatal: Authentication failed for ”,其实就是 凭证失败的意思 接着输入一下命令行没有出现要求输入用户名或密码,并…

    数据库 2023年6月11日
    0204
  • Redis——数据操作(2)

    2022-09-21 (2)hash操作: ①设置多个hash值,(hmset): 查看说明: help hmset hmset person name A age 1 ②获得多个…

    数据库 2023年6月14日
    069
  • 关于那些我们都听过的营销工具—优惠券

    相信大家对优惠券都不陌生,特别是在现在这个互联网特别发达的时代,优惠券是我们运营推广营销的一种工具,它可以降低产品的价格,是一种常见的消费者营业推广工具, 作为一种信息的载体,它不…

    数据库 2023年6月14日
    080
  • SQL语句实战学习

    参考:https://zhuanlan.zhihu.com/p/38354000再次感谢作者的整理!! 1.数据已提前准备好了,已知有如下4张表:学生表:student 成绩表:s…

    数据库 2023年5月24日
    083
  • MySQL CREATE TABLE 简单设计模板交流

    我们也可以多台机器部署, 设置不同 AUTO_INCREMENT step, 让每个 sequece 产生不同号码. 例如部署 step = 2 个服务结点, 并行获取数据. 一个…

    数据库 2023年5月24日
    0130
  • MySQL 视图简介

    对数据库中数据的查询有时是非常复杂的,如表连接、子查询等。这种查询很难写,而且容易出错。此外,当您专门操作表时,有时只需要操作部分字段。 [En] The query about …

    数据库 2023年5月24日
    0107
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球