Mysql之视图、索引【第五篇】

大纲:

一、视图

        1、什么是视图?

   1) MySQL 视图(View)是一种虚拟的表,是从数据库中一个或多个表中导出来的表。视图由列和行构成,行和列的数据来自于定义视图的查询中所使用的表,并且还是在使用视图时动态生成的。
   2) 数据库中存放了视图的定义,而并没有存放视图中的数据,这些数据存放在原来的表中。
   3) 使用视图查询数据时,数据库系统会从原来的表中取出对应的数据。

        2、视图的作用

   1) 使操作简便化。
   2) 增加数据的安全性。
   3) 提高表的逻辑独立性。

        3、视图的优点

1) 定制用户数据,聚焦特定的数据

 在实际的应用过程中,不同的用户可能对不同的数据有不同的要求。

例如,当数据库同时存在时,如学生信息表、课程表和教师表等多种表同时存在时,可以根据需求让不同的用户使用各自的数据。学生查看修改自己基本信息的视图,安排课程人员查看修改课程表和教师信息的视图,教师查看学生信息和课程信息表的视图。

2) 简化数据操作

在使用查询时,很多时候要使用聚合函数,同时还要显示其他字段的信息,可能还需要关联到其他表,语句可能会很长,如果这个动作频繁发生的话,可以创建视图来简化操作。

3) 提高数据的安全性

视图是虚拟的,物理上是不存在的。可以只授予用户视图的权限,而不具体指定使用表的权限,来保护基础数据的安全。

4) 共享所需数据

通过使用视图,每个用户不必都定义和存储自己所需的数据,可以共享数据库中的数据,同样的数据只需要存储一次。

5) 更改数据格式

通过使用视图,可以重新格式化检索出的数据,并组织输出到其他应用程序中。

6) 重用 SQL 语句

视图提供的是对查询操作的封装,本身不包含数据,所呈现的数据是根据视图定义从基础表中检索出来的,如果基础表的数据新增或删除,视图呈现的也是更新后的数据。视图定义后,编写完所需的查询,可以方便地重用该视图。


案例:

视图

      1、基本语法【创建视图】:CREATE VIEW 视图名 AS SELECT 语句;

语法说明如下:

1.<视图名>:指定视图的名称。该名称在数据库中必须是唯一的,不能与其他表或视图同名。

2.<SELECT语句>:指定创建视图的 SELECT 语句,可用于查询多个基础表或源视图。

      2、查看视图:DESCRIBE 视图名;(DESC 视图名;

      3、修改视图:ALTER VIEW <视图名> AS <SELECT语句>

      4、删除视图: drop view 视图名;

-- 视图的作用
--  1) 使操作简便化。
--  2) 增加数据的安全性。
--  3) 提高表的逻辑独立性。

#在数据库中,视图只是多张表之间的连接查询的定义;并不是一张真实表,而是一张虚拟表,当你在运行这个定义的时候才会从原表中抽取数据

#视图语法:CREATE VIEW 视图名 AS SELECT 语句;
#1060 - Duplicate column name 'tid' 出现多个字段
#连表查询
create view v_student_score as
select s.*,sc.score,c.*,t.tname from t_teacher t,t_course c,
t_score sc,t_student s
where t.tid=c.tid and c.tid=sc.cid and sc.sid=s.sid;

#查询视图
select * from v_student_score;
#删除视图
-- drop view 视图名;

二、索引

        1、什么是索引?

索引是一种特殊的数据库结构, 索引是由数据库表中一列或多列组合而成,其作用是提高对表中数据的查询速度。类似于图书的目录,方便快速定位,寻找指定的内容

        2、为什么要使用索引?

索引是 MySQL 中十分重要的数据库对象,是数据库性能调优技术的基础,常用于实现数据的快速检索。

在 MySQL 中,通常有两种方式访问数据库表的行数据:

1) 顺序访问

顺序访问是在表中实行全表扫描,从头到尾逐行遍历,直到在无序的行数据中找到符合条件的目标数据。
顺序访问实现比较简单,但当表中有大量数据的时候,效率非常低下。例如,在几千万条数据中查找少量的数据时,使用顺序访问方式将会遍历所有的数据,花费大量时间,显然会影响数据库的处理性能。

2) 索引访问

索引访问是通过遍历索引来直接访问表中记录行的方式。
使用这种方式的前提是对表建立一个索引,在列上创建了索引之后,查找数据时可以直接根据该列上的索引找到对应记录行的位置,从而快捷地查找到数据。索引存储了指定列数据值的指针,根据指定的排序顺序对这些指针排序。

        3、索引的优缺点

优点:

  • 通过创建唯一索引可以保证数据库表中每一行数据的唯一性。
  • 可给所有的 MySQL 列类型设置索引。
  • 可加快数据的查询速度,这是使用索引最主要的原因。
  • 在实现数据的参考完整性方面可以加速表与表之间的连接。
  • 在使用分组和排序子句进行数据查询时也可以显著减少查询中分组和排序的时间

缺点:

  • 创建和维护索引组要耗费时间,并且随着数据量的增加所耗费的时间也会增加。
  • 索引需要占磁盘空间,除了数据表占数据空间以外,每一个索引还要占一定的物理空间。如果有大量的索引,索引文件可能比数据文件更快达到最大文件尺寸。
  • 当对表中的数据进行增加、删除和修改的时候,索引也要动态维护,这样就降低了数据的维护速度。

简单来说就是:

         优点:提高查询数据的速度。
         缺点:创建和维护索引的时间增加了,同时占用硬盘空间。

        4、索引的分类

   1) 普通索引:是最基本的索引,它没有任何限制;

   2) 唯一索引:与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一;

   3) 主键索引:是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值;

   4) 组合索引:指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用组合索引时遵循最左前缀集合;

   5) 全文索引:使用FULLTEXT参数可以设置,全文索引只能创建CHAR,VARCHAR,TEXT类型的字段上。主要作用是提高查询较大字符串类型的速度;只有MyISAM引擎支持该索引,MySQL默认引擎不支持;mysql5.7+

-- 1.创建索引
-- CREATE [UNIQUE|FULLTEXT] INDEX 索引名 ON 表名(字段名[(长度)][ASC|DESC])
-- 2.修改索引
-- ALTER TABLE 表名 ADD [UNIQUE|FULLTEXT] INDEX 索引名(字段名[(长度)][ASC|DESC])
-- 3.删除索引: DROP INDEX 索引名 ON 表名

案例:

#------------------------------------
CREATE TABLE t_log(
  id varchar(32) NOT NULL COMMENT '唯一标识',
  ip varchar(15) NOT NULL COMMENT 'IP地址',
  userid varchar(32) NOT NULL COMMENT '用户ID',
  moduleid varchar(32) NOT NULL COMMENT '模块ID',
  content varchar(500) NOT NULL COMMENT '日志内容',
  createdate timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期',
  url varchar(100) DEFAULT NULL COMMENT '请求URL地址',
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

#查询表t_log
select * from t_log;
select count(0) from t_log;

#索引是用于提高查询效率的
-- 索引分类(100408)
-- 1) 普通索引:是最基本的索引,它没有任何限制;
-- 未建立索引之前:0.146s
select * from t_log where moduleid='100408';
-- 在建立索引之后:0s
create index idx_moduleid on t_log(moduleid); #1.383s
#删除索引
drop index idx_moduleid on t_log;

-- 2)  唯一索引:与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一;
#1061 - Duplicate key name 'idx_moduleid' 有重复数据(值)
create unique index idx_moduleid on t_log(moduleid); 

-- 3) 主键索引:是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值;
select * from t_log where id='00d3f9ffca154dd9aa280916ac538019';

-- 4) 组合索引:指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用组合索引时遵循最左前缀集合;
#explain:【执行计划】检测是否走索引(排查sql语句是否走索引)
drop index idx_userid_moduleid_createdate on t_log;

create index idx_userid_moduleid_createdate on t_log(userid,moduleid,createdate);

#满足
explain select * from t_log where userid='';
explain select * from t_log where userid='ef2f16a90e4311e99f0128d24413c295' and moduleid='100408';
explain select * from t_log where userid='' and moduleid='' and createdate='';

#不满足
explain select * from t_log where moduleid='100408';

-- 5) 全文索引:使用FULLTEXT参数可以设置,全文索引只能创建在CHAR,VARCHAR,TEXT类型的字段上。主要作用是提高查询较大字符串类型的速度;只有MyISAM引擎支持该索引,MySQL默认引擎不支持;mysql5.7+

添加总数据:

创建索引之前:

创建索引之后: 

 explain:【执行计划】检测是否走索引(排查sql语句是否走索引)

key为空,代表没有走索引

 

key有值,代表走了索引

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MySQL必知必会第五版pdf是一本非常有价值的MySQL数据库教程书籍。这本书详细介绍了MySQL的基本概念、基本语法、数据查询、数据更新和数据管理等方面的知识。该书主要分为6个部分。第一部分介绍了数据库和SQL语言的基础知识,包括关系数据库设计和基本的SQL语言。第二部分详细介绍了如何使用MySQL进行数据查询。第三部分讲述了如何使用MySQL进行数据更新。第四部分介绍了如何管理MySQL数据库。第五部分讲述了如何使用MySQL进行高级查询,包括连接查询、子查询和视图。最后,第六部分介绍了如何使用MySQL进行数据安全和备份。 这本书的实用价值非常高,无论是想学习MySQL的初学者还是有一定MySQL基础的开发人员都可以从这本书中学到一些新知识。此外,本书使用简单易懂的语言,讲解详细,上大量的实例和练习,便于读者理解和掌握MySQL数据库相关知识。这本书同时也是一本非常好的参考书,可以作为学习MySQL的读者随时查阅。 总之,MySQL必知必会第五版pdf是一本非常优秀的MySQL数据库教程,值得学习和推广。 ### 回答2: 《MySQL必知必会第五版PDF》是一本非常实用的数据库入门指南,对于想要学习数据库的初学者非常有帮助。本书主要分为4个部分,从基础的MySQL介绍、数据的设计和查询以及高级查询和数据管理等方面进行了详细的介绍。 本书的使用非常简单,读者可以根据自己的需求和学习情况来选择阅读的章节,也可以根据书中提供的案例来进行实操。特别是书中提供的大量实例代码,可以帮助初学者快速学习和熟悉MySQL的使用。 同时,《MySQL必知必会第五版PDF》还专门对数据库的设计做了详细的介绍,对于想要从事数据库开发和设计的人来说也非常有用。而且,本书翔实且实用,还提供了大量的MySQL常用命令和函数,使读者能够快速理解和记忆。 总之,《MySQL必知必会第五版PDF》是一本入门级的数据库书籍,对于初学者来说非常实用和易懂。它不仅提供了详细的理论知识,还提供了大量的实际例子和操作指导,帮助读者掌握MySQL的基本技能。 ### 回答3: 《MySQL必知必会第五版》这本书是一本非常全面介绍MySQL的书籍。通过学习这本书,可以掌握MySQL的基础知识,包括MySQL的安装、配置、基本语法、查询、事务处理、性能调优等方面。同时,还可以学习MySQL的高级应用,比如存储过程、触发器、视图索引等。此外,这本书还介绍了MySQL的安全管理、备份与恢复、集群管理等方面的知识。 《MySQL必知必会第五版》的特点在于,它不仅提供理论知识讲解,还提供了大量的实例帮助读者更好地理解知识点。每个章节都包括了讲解和实例两部分,主要内容还有重点提示和注意事项。同时,本书对MySQL的基础知识和应用进行了系统化的总结,为读者提供了方便快捷的查询指南和索引。 此外,本书对于初学者来说十分友好,因为它从简单的SQL语句开始介绍,逐渐深入,难度逐步大,对于刚接触MySQL的人来说是非常容易入手的。此外,本书对于经验丰富的MySQL用户也有很多帮助,因为本书提供了许多有用的技巧和最佳实践,可帮助他们更好地应用MySQL。 总之,《MySQL必知必会第五版》是一个很好的MySQL学习指南,不管是想学习MySQL的初学者,还是需要深入了解MySQL的高级用户,都可以从这本书中获得很多有用的知识和技巧。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值