一、视图 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 降低数据的插入,修改速度

mysql视图,索引的更多相关文章

  1. 2020重新出发,MySql基础,MySql视图&索引&存储过程&触发器

    @ 目录 视图是什么 视图的优点 1) 定制用户数据,聚焦特定的数据 2) 简化数据操作 3) 提高数据的安全性 4) 共享所需数据 5) 更改数据格式 6) 重用 SQL 语句 MySQL创建视图 ...

  2. MySQL视图 索引 存储过程 触发器 函数

       视图: 也就是一个虚拟表(不是真实存在的),它的本质就是根据SQL语句获取动态的数据集,并为其命名.用户使用时只需要使用命名的视图即可获取结果集,并可以当做表来使用.它的作用就是方便查询操作,减 ...

  3. 第五章 MySQL事务,视图,索引,备份和恢复

    第五章 MySQL事务,视图,索引,备份和恢复 一.事务 1.什么是事务 事务是一种机制,一个操作序列,它包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求.要么都执行 ...

  4. MySQL数据库——索引与视图

    索引 MySQL的索引包括普通索引.唯一性索引(unique index).全文索引(fulltext index).单列索引.多列索引和空间索引等. 1.索引的创建 ·创建表的时候创建索引 SQL语 ...

  5. mysql 视图 触发器 存储过程 函数事务 索引

    mysql 视图 触发器 存储过程 函数事务 索引 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当 ...

  6. Mysql 视图 游标 触发器 存储过程 事务

    Mysql 视图 触发器 存储过程 游标 游标是从数据表中提取出来的数据,以临时表的形式存放在内存中,在游标中有一个数据指针,在初始状态下指向的是首记录,利用fetch语句可以移动该指针,从而对游标中 ...

  7. Mysql视图的作用及其性能分析

    定义:视图是从一个或几个基本表导出的表,它与基本表不同,是一个虚表. 作用: 1.简化操作,不用进行多表查询. 2.当不同种类的用用户共享同一个数据库时,非常灵活,(用户以不同的 方式看待同一数据. ...

  8. 手把手教你mysql(十)索引

    手把手教你mysql(十)索引 一:索引的引入 索引定义:索引是由数据库表中一列或者多列组合而成,其作用是提高对表中数据的查询速度. 类似于图书的目录,方便快速定位,寻找指定的内容,如一本1000页的 ...

  9. 一个MySQL视图的优化过程

    1.需要优化的sql 最近做一个基于.net mvc和MySQL的仓储系统的优化工作,遇到了一个执行特别慢的SQL语句,经过一番折腾,终于搞定啦,分享一下过程.问题就是下面这个家伙: create o ...

  10. mysql数据库从删库到跑路之mysql:视图、触发器、事务、存储过程、函数

    mysql:视图.触发器.事务.存储过程.函数 一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果 ...

随机推荐

  1. 在变压器厂中使用 ISA-95 应用程序进行调度集成

    介绍 在工业批量和连续生产/运营环境中,调度涉及将诸如罐.反应器和其他加工设备之类的资源分配给生产/运营任务.第 4 层生产/运营计划确定要制造什么产品.要制造多少产品以及何时制造.根据设备.物料.人 ...

  2. 软件开发架构与网络之OSI七层协议(五层)

    本期内容概要 python回顾 软件开发架构 网络理论前瞻 osi七层协议(五层) 以太网协议 IP协议 port协议 交换机 路由器 局域网 广域网 TCP协议 三次握手 四次挥手 UDP协议 内容 ...

  3. 【C语言】将文本中汉字读入字符数组输出乱码

    输出中文字符乱码 今天从文件中将中文读入字符数组后输出发现其中文变成了乱码,,令人头大. 解决办法 将文本编码格式改成ANSI即可. 打开记事本->文件->另存为->更改编码格式-& ...

  4. K8s中的volumes-容器数据存放类型及位置

    学习对象:kubectl explain pod.spec.volumes.pod.spec.containers.image.volumeMounts 介绍Volumes 容器内部也有自己的空间,但 ...

  5. 关于new Date总结及注意事项

    记录关于 new Date() 的一些常用方法及问题 new Date()基本方法: 创建一个日期对象的几种方法 注意: 由于浏览器差异和不一致性,强烈建议不要使用Date构造函数(和Date.par ...

  6. python网络爬虫-静态网页抓取(四)

    静态网页抓取 在网站设计中,纯HTML格式的网页通常被称之为静态网页,在网络爬虫中静态网页的数据比较容易抓取,因为说有的数据都呈现在网页的HTML代码中.相对而言使用Ajax动态加载的玩个的数据不一定 ...

  7. mysql 相关练习题

    /* 自己查询自己 把一张表看成是两张表. 表的设计. SELECT * FROM depart; SELECT d1. NAME '部门', d2. NAME '分部门' FROM depart d ...

  8. ApacheCN JavaScript 译文集(二) 20211123 更新

    使用 Meteor 构建单页 Web 应用 零.前言 一.制作 Meteor 应用 二.构建 HTML 模板 三.存储数据和处理集合 四.控制数据流 五.使我们的应用与路由通用 六.保持会话状态 七. ...

  9. Lesson3——NumPy 数据类型

    NumPy 教程目录 NumPy 数据类型 numpy 支持的数据类型比 Python 内置的类型要多很多,基本上可以和 C 语言的数据类型对应上,其中部分类型对应为 Python 内置的类型. 下表 ...

  10. JVM学习一:常用JVM配置参数

    原文链接:https://www.cnblogs.com/pony1223/p/8661219.html 在IDE的后台打印GC日志: 既然学习JVM,阅读GC日志是处理Java虚拟机内存问题的基础技 ...