视图
什么是视图, 视图是从一个或几个基本表(或视图)中导出的虚表,数据库中只存放了视图的定义,不存放视图对应的数据。
它是原始数据库数据的一种变换,是查看表中数据的另外—种方式。可以将视图看成是一个移动的窗口,通过它可以看到感兴趣的数据。视图是从一个或多个实际表中获得的,这些表的数据存放在数据库中。那些用于产生视图的表叫做该视图的基表。一个视图也可以从另一个视图中产生。
视图的特点体现在三个方面:
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
- 组合索引:指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用组合索引时遵循最左前缀集合;
- 主键索引:是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值;使用id查询:
- 唯一索引:与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一;
- 普通索引:是最基本的索引,它没有任何限制;
索引的语法
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, …):可选参数,指定导入数据时要插入的列。如果省略,则默认导入所有列。