MySql视图,索引

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySql视图,索引

视图

什么是视图, 视图是从一个或几个基本表(或视图)中导出的虚表,数据库中只存放了视图的定义,不存放视图对应的数据。

它是原始数据库数据的一种变换,是查看表中数据的另外—种方式。可以将视图看成是一个移动的窗口,通过它可以看到感兴趣的数据。视图是从一个或多个实际表中获得的,这些表的数据存放在数据库中。那些用于产生视图的表叫做该视图的基表。一个视图也可以从另一个视图中产生。

视图的特点体现在三个方面:

1.简单性,看到的就是需要的。视图不仅可以简化用户对数据的理解,也可以简化对它们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件;

2.安全性,通过视图用户只能查询和修改他们所能见到的数据。数据库中的其它数据则既看不见也取不到;

3.逻辑数据独立性,视图可帮助用户屏蔽真实表结构变化带来的影响;根据视图的特点可以达到以下的几点作用:

  1简化数据查询语句;

      2使用户从多角度看待同一数据;

      3提高数据安全性;

      4提供了一定程度的逻辑独立性。

语法:创建视图SQL语句格式:

CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;

更新Mysql数据:

UPDATE view_name SET column1 = value1 WHERE condition;
INSERT INTO view_name (column1, column2, ...) VALUES (value1, value2, ...);
DELETE FROM view_name WHERE condition;

修改视图的定义方法:

ALTER VIEW view_name AS
SELECT column1, column2, ...
FROM table1
WHERE condition;

删除视图:

DROP VIEW view_name;

索引

什么是索引

索引就是根据表中的一列或若干列按照一定顺序建立的列值与记录行之间的对应关系表,实质上是一张描述索引列的列值与原表中记录行之间一 一对应关系的有序表。

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


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


1.顺序访问


顺序访问是在表中实行全表扫描,从头到尾逐行遍历,直到在无序的行数据中找到符合条件的目标数据。


顺序访问实现比较简单,但是当表中有大量数据的时候,效率非常低下。例如,在几千万条数据中查找少量的数据时,使用顺序访问方式将会遍历所有的数据,花费大量的时间,显然会影响数据库的处理性能。


2.索引访问


索引访问是通过遍历索引来直接访问表中记录行的方式。


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


我们为什么要用索引:


优点:

索引的优点如下:


1. 通过创建唯一索引可以保证数据库表中每一行数据的唯一性。


2. 可以给所有的 MySQL 列类型设置索引。


3. 可以大大加快数据的查询速度,这是使用索引最主要的原因。


4. 在实现数据的参考完整性方面可以加速表与表之间的连接。


5. 在使用分组和排序子句进行数据查询时也可以显著减少查询中分组和排序的时间


缺点:

1. 创建和维护索引组要耗费时间,并且随着数据量的增加所耗费的时间也会增加。


2. 索引需要占磁盘空间,除了数据表占数据空间以外,每一个索引还要占一定的物理空间。如果有大量的索引,索引文件可能比数据文件更快达到最大文件尺寸。


3. 当对表中的数据进行增加、删除和修改的时候,索引也要动态维护,这样就降低了数据的维护速度。

索引分类

MySQL索引分为普通索引、唯一索引、主键索引、组合索引、全文索引。索引不会包含有n

 

  1. 组合索引:指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用组合索引时遵循最左前缀集合;
  2.  主键索引:是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值;使用id查询:
  3. 唯一索引:与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一;
  4. 普通索引:是最基本的索引,它没有任何限制;

索引的语法

1.创建索引

CREATE [UNIQUE|FULLTEXT] INDEX 索引名 ON 表名(字段名(长度))

2.修改索引

ALTER TABLE 表名 ADD [UNIQUE|FULLTEXT] INDEX 索引名(字段名(长度))

3.删除索引

DROP INDEX 索引名 ON 表名

数据库的备份与恢复:

1.使用mysqldump导入导出

D导出命令

:\SoftwareInstallPath\mysql-8.0.13-winx64\bin>mysqldump -uroot

-p123456 mybatis_ssm > 1234567.sql

导入

注意:首先建立空数据库

– mysql>create database abc;

– 2.2.1 方法一

– mysql>use abc; #选择数据库

– mysql>set names utf8; #设置数据库编码

– mysql>source /D:/SoftwareInstallPath/mysql-8.0.13-winx64/bin/1234567.sql; #导入数据

LOAD DATA INFILE:

是MySQL中用于将数据从文本文件导入到数据库表中的语句。它允许快速导入大量数据,并且比逐行插入数据更高效。

以下是LOAD DATA INFILE语句的基本

语法:

LOAD DATA INFILE 'file_name'
[REPLACE | IGNORE]
INTO TABLE table_name
[CHARACTER SET charset_name]
[FIELDS
    [TERMINATED BY 'field_terminator']
    [ENCLOSED BY 'enclosure_character']
    [ESCAPED BY 'escape_character']
]
[LINES
    [STARTING BY 'line_prefix']
    [TERMINATED BY 'line_terminator']
]
[IGNORE number LINES]
(column1, column2, column3, ...)

接下来,我将逐个解释这些参数的作用:


file_name:指定要导入的文本文件路径和文件名。


REPLACE和IGNORE:可选参数,在导入过程中控制处理重复数据行的方式。REPLACE会替换已存在的行,而IGNORE会跳过已存在的行,默认情况下是追加数据。


table_name:指定要导入数据的目标表名。


CHARACTER SET charset_name:可选参数,指定文本文件的字符集。


FIELDS子句:用来指定字段的分隔符、引用符和转义符等。


TERMINATED BY ‘field_terminator’:指定字段之间的分隔符,默认为制表符\t。


ENCLOSED BY ‘enclosure_character’:可选参数,指定字段的引用符,默认为空字符串。


ESCAPED BY ‘escape_character’:可选参数,指定转义符,默认为反斜杠\。


LINES子句:用来指定行的前缀和分隔符等。


STARTING BY ‘line_prefix’:可选参数,指定行的前缀,默认为空字符串。


TERMINATED BY ‘line_terminator’:指定行的分隔符,默认为换行符\n。


IGNORE number LINES:可选参数,指定忽略文件开始部分的行数。


(column1, column2, column3, …):可选参数,指定导入数据时要插入的列。如果省略,则默认导入所有列。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
27天前
|
存储 关系型数据库 MySQL
阿里面试:为什么要索引?什么是MySQL索引?底层结构是什么?
尼恩是一位资深架构师,他在自己的读者交流群中分享了关于MySQL索引的重要知识点。索引是帮助MySQL高效获取数据的数据结构,主要作用包括显著提升查询速度、降低磁盘I/O次数、优化排序与分组操作以及提升复杂查询的性能。MySQL支持多种索引类型,如主键索引、唯一索引、普通索引、全文索引和空间数据索引。索引的底层数据结构主要是B+树,它能够有效支持范围查询和顺序遍历,同时保持高效的插入、删除和查找性能。尼恩还强调了索引的优缺点,并提供了多个面试题及其解答,帮助读者在面试中脱颖而出。相关资料可在公众号【技术自由圈】获取。
|
1月前
|
存储 NoSQL 关系型数据库
为什么MySQL不使用红黑树做索引
本文详细探讨了MySQL索引机制,解释了为何添加索引能提升查询效率。索引如同数据库的“目录”,在数据量庞大时提高查询速度。文中介绍了常见索引数据结构:哈希表、有序数组和搜索树(包括二叉树、平衡二叉树、红黑树、B-树和B+树)。重点分析了B+树在MyISAM和InnoDB引擎中的应用,并讨论了聚簇索引、非聚簇索引、联合索引及最左前缀原则。最后,还介绍了LSM-Tree在高频写入场景下的优势。通过对比多种数据结构,帮助理解不同场景下的索引选择。
76 6
|
1月前
|
SQL 关系型数据库 MySQL
案例剖析:MySQL唯一索引并发插入导致死锁!
案例剖析:MySQL唯一索引并发插入导致死锁!
100 0
案例剖析:MySQL唯一索引并发插入导致死锁!
|
1月前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
61 3
Mysql(4)—数据库索引
|
18天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
86 1
|
29天前
|
存储 关系型数据库 MySQL
如何在MySQL中进行索引的创建和管理?
【10月更文挑战第16天】如何在MySQL中进行索引的创建和管理?
58 1
|
19天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
47 0
|
19天前
|
NoSQL 关系型数据库 MySQL
2024Mysql And Redis基础与进阶操作系列(8)作者——LJS[含MySQL 创建、修改、跟新、重命名、删除视图等具体详步骤;注意点及常见报错问题所对应的解决方法]
MySQL 创建、修改、跟新、重命名、删除视图等具体详步骤;举例说明注意点及常见报错问题所对应的解决方法
|
1月前
|
监控 关系型数据库 MySQL
MySQL数据表索引命名规范
MySQL数据表索引命名规范
59 1
|
1月前
|
存储 SQL 关系型数据库
mysql中主键索引和联合索引的原理与区别
本文详细介绍了MySQL中的主键索引和联合索引原理及其区别。主键索引按主键值排序,叶节点仅存储数据区,而索引页则存储索引和指向数据域的指针。联合索引由多个字段组成,遵循最左前缀原则,可提高查询效率。文章还探讨了索引扫描原理、索引失效情况及设计原则,并对比了InnoDB与MyISAM存储引擎中聚簇索引和非聚簇索引的特点。对于优化MySQL性能具有参考价值。