MySql视图,索引

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 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, …):可选参数,指定导入数据时要插入的列。如果省略,则默认导入所有列。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
3月前
|
存储 SQL 关系型数据库
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
|
3月前
|
存储 关系型数据库 MySQL
MySQL数据库索引的数据结构?
MySQL中默认使用B+tree索引,它是一种多路平衡搜索树,具有树高较低、检索速度快的特点。所有数据存储在叶子节点,非叶子节点仅作索引,且叶子节点形成双向链表,便于区间查询。
108 4
|
5月前
|
存储 关系型数据库 MySQL
阿里面试:MySQL 一个表最多 加几个索引? 6个?64个?还是多少?
阿里面试:MySQL 一个表最多 加几个索引? 6个?64个?还是多少?
阿里面试:MySQL 一个表最多 加几个索引? 6个?64个?还是多少?
|
7月前
|
关系型数据库 MySQL 数据库
Mysql的索引
MYSQL索引主要有 : 单列索引 , 组合索引和空间索引 , 用的比较多的就是单列索引和组合索引 , 空间索引我这边没有用到过 单列索引 : 在MYSQL数据库表的某一列上面创建的索引叫单列索引 , 单列索引又分为 ● 普通索引:MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点。 ● 唯一索引:索引列中的值必须是唯一的,但是允许为空值 ● 主键索引:是一种特殊的唯一索引,不允许有空值 ● 全文索引: 只有在MyISAM引擎、InnoDB(5.6以后)上才能使⽤用,而且只能在CHAR,VARCHAR,TEXT类型字段上使⽤用全⽂文索引。
|
3月前
|
存储 SQL 关系型数据库
MySQL 核心知识与索引优化全解析
本文系统梳理了 MySQL 的核心知识与索引优化策略。在基础概念部分,阐述了 char 与 varchar 在存储方式和性能上的差异,以及事务的 ACID 特性、并发事务问题及对应的隔离级别(MySQL 默认 REPEATABLE READ)。 索引基础部分,详解了 InnoDB 默认的 B+tree 索引结构(多路平衡树、叶子节点存数据、双向链表支持区间查询),区分了聚簇索引(数据与索引共存,唯一)和二级索引(数据与索引分离,多个),解释了回表查询的概念及优化方法,并分析了 B+tree 作为索引结构的优势(树高低、效率稳、支持区间查询)。 索引优化部分,列出了索引创建的六大原则
|
4月前
|
存储 关系型数据库 MySQL
MySQL覆盖索引解释
总之,覆盖索引就像是图书馆中那些使得搜索变得极为迅速和简单的工具,一旦正确使用,就会让你的数据库查询飞快而轻便。让数据检索就像是读者在图书目录中以最快速度找到所需信息一样简便。这样的效率和速度,让覆盖索引成为数据库优化师傅们手中的尚方宝剑,既能够提升性能,又能够保持系统的整洁高效。
126 9
|
10月前
|
SQL 关系型数据库 MySQL
深入解析MySQL的EXPLAIN:指标详解与索引优化
MySQL 中的 `EXPLAIN` 语句用于分析和优化 SQL 查询,帮助你了解查询优化器的执行计划。本文详细介绍了 `EXPLAIN` 输出的各项指标,如 `id`、`select_type`、`table`、`type`、`key` 等,并提供了如何利用这些指标优化索引结构和 SQL 语句的具体方法。通过实战案例,展示了如何通过创建合适索引和调整查询语句来提升查询性能。
1890 10
|
5月前
|
机器学习/深度学习 关系型数据库 MySQL
对比MySQL全文索引与常规索引的互异性
现在,你或许明白了这两种索引的差异,但任何技术决策都不应仅仅基于理论之上。你可以创建你的数据库实验环境,尝试不同类型的索引,看看它们如何影响性能,感受它们真实的力量。只有这样,你才能熟悉它们,掌握什么时候使用全文索引,什么时候使用常规索引,以适应复杂多变的业务需求。
113 12
|
9月前
|
存储 关系型数据库 MySQL
MySQL索引学习笔记
本文深入探讨了MySQL数据库中慢查询分析的关键概念和技术手段。
611 81
|
6月前
|
SQL 存储 关系型数据库
MySQL选错索引了怎么办?
本文探讨了MySQL中因索引选择不当导致查询性能下降的问题。通过创建包含10万行数据的表并插入数据,分析了一条简单SQL语句在不同场景下的执行情况。实验表明,当数据频繁更新时,MySQL可能因统计信息不准确而选错索引,导致全表扫描。文章深入解析了优化器判断扫描行数的机制,指出基数统计误差是主要原因,并提供了通过`analyze table`重新统计索引信息的解决方法。
139 3

推荐镜像

更多