一、视图 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. MCU软件最佳实践——使用printf打印数据

    在mcu上开发应用时,使用串口打印调试信息是最常用的调试手段之一.printf是c标准库提供的函数,可以方便输出格式化的信息.但针对不同的mcu芯片,printf函数要能正常工作,需要做一些移植和适配 ...

  2. PWA 技术落地!让你的站点(Web)秒变APP(应用程序)

    Web应用方兴未艾,我们已经十分习惯习惯了在电脑上进行以自己的工作,而随着众多功能强大的在线网站,我们的Windows的桌面也不再拥挤着各种快捷方式:不光是PC端,在移动端我们也不再在浩如烟海的应用市 ...

  3. Spark-寒假-实验3

    1.安装 Hadoop 和 Spark 进入 Linux 系统,参照本教程官网"实验指南"栏目的"Hadoop 的安装和使用",完成 Hadoop 伪分布式模式 ...

  4. dubbo系列十一、dubbo transport层记录

    前言 在dubbo接口方法重载且入参未显式指定序列化id导致ClassCastException分析时候用到了dubbo的通信层和编解码,dubbo有个transport层,默认使用netty4进行网 ...

  5. STC8H开发(七): I2C驱动MPU6050三轴加速度+三轴角速度检测模块

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  6. C# 同步 异步 回调 状态机 async await Demo

    源码 https://gitee.com/s0611163/AsyncAwaitDemo 为什么会研究这个? 我们项目的客户端和服务端通信用的是WCF,我就想,能不能用异步的方式调用WCF服务呢?或者 ...

  7. gin框架中的重定向

    重定向redirect func someRedirect(context *gin.Context) { context.Redirect(http.StatusMovedPermanently, ...

  8. 大厂面试:一个四年多经验程序员的BAT面经(字节、阿里、腾讯)

    前言 上次写了篇欢聚时代的面经,公众号后台有些读者反馈说看的意犹未尽,希望我尽快更新其他大厂的面经,这里先说声抱歉,不是我太懒,而是项目组刚好有个活动要赶在春节前上线,所以这几天经常加班,只能工作之余 ...

  9. Java 锁 概念介绍

    一   Java中的锁是什么? /* * 一 Java锁定义? * 在计算机科学中,锁(lock)或互斥(mutex)是一种同步机制,用于在有许多执行线程的环境中强制对资源的访问限制. * 锁旨在强制 ...

  10. python pyautogui

    使用pyautogui随机调用图库里的一张照片设置为壁纸,每天定时执行 代码 import time import pyautogui import random pyautogui.keyDown( ...