什么是事务
事务是一种机制、一个操作序列,包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执行。
事务是作为单元逻辑工作单元执行的一系列操作。一个逻辑工作单元必须有四个属性,即原子性、一致性、隔离性及持久性,这些特性通常简称为ACID。
1) 原子性
事务是一个完整的操作。事务的各元素是不可分的(原子的)。事务中的所有元素必须作为一个整体提交或回滚。如果事务中的任何元素失败,则整个事务将失败。
2) 一致性
当事务完成时,数据必须处于一致状态。也就是说,在事务开始之前,数据库中存储的数据处于一致状态。在正在进行的事务中,数据可能处于不一致的状态,如数据可能有部分被修改。然而,当事务成功完成时,数据必须再次回到已知的一致状态。
3) 隔离性
对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务。
4 持久性
事务的持久性指不管系统是否发生了故障,事务处理的结果都是永久的。
执行事务的语法
(1)开始事务
BEGIN;
或
START TRANSACTION;
这个语句显示地标记一个事务的起始点
(2)提交事务
COMMIT;
这个语句标志一个事务成功提交。自事务开始至提交语句之间执行的所有数据更新将永久地保存在数据库数据文件中,并释放连接时占用的资源。
(3)回滚(撤销)事务
ROLLBACK;
清除自事务起始点至该语句所做的所有数据更新操作,将数据状态回滚到事务开始前,并释放由事务控制的资源。
设置自动提交关闭或开启
MySQL中默认开启自动提交模式,即未指定开启事务时,每条SQL语句都是单独的事务执行完毕自动提交。可以关闭自动提交模式,手动提交或回滚事务。
语法:
SET autocommit = 0 | 1
值为0:关闭自动提交
值为1:开启自动提交
什么是视图
试图是另一种查看数据中一个或多个表中数据的方法。试图是一种虚拟表,通常是作为来自一个或多个表的行或列的子集创建的。但是,试图并不是数据库中存储的数据值的集合,它的行和列来自查询中引用的表。
如何使用SQL语句创建视图
语法:
CREATE VIEW 视图名
AS
<SELECT语句>;
使用SQL语句删除视图
语法:
DROP VIEW [IF EXISTS] 视图名;
使用SQL语句查看视图
语法:
SELECT 字段1,字段2,… FROM VIEW_NAME;
什么是索引
在数据库中,由于数据存储在数据表中,因此索引是创建在数据库表对象上的,由表中的一个字段或多个字段生成的键组合,这些键存储在数据结构(B-树或哈希表)中,通过MySQL可以快速有效地查找与键值相关联的字段,根据索引的存储类型,可以将索引分为B-树索引和哈希索引。
索引分类
1)普通索引
普通索引是MySQL中的基本索引类型,允许在定义索引的列中插入重复值和空值
2)唯一索引
唯一索引不允许两行具有相同的索引值
3)主键索引
在数据库关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。
主键索引要求主键中的每个值是非空、唯一的。
4)复合索引
在创建索引时,并不是只能对其中一列创建索引,与创建主键一样,可以将多个列组合作为索引,这种索引称为复合索引。
5)全文索引
全文索引的作用是定义在索引的列上支持值的全文查找,允许在这些索引列中插入重复值和空值。
6)空间索引
空间索引是对空间数据类型的列建立的索引。
创建索引
语法:
CREATE [索引类型] INDEX 索引名
ON 索引的表名 (索引长度)
删除索引
语法:
DROP INDEX 索引名 ON 索引表名
查看索引
语法:
SHOW INDEX FROM 索引表名
使用mysqldump命令备份数据库
mysqldump命令格式
语法:
mysqldump -u 用户名 -h 主机名称 -ppassword
需要备份的数据库 > 备份文件的名称
mysql命令恢复数据库
语法:
==mysql -u 用户名 -p [数据库名] < 备份后的文件 ==
source命令恢复数据库
语法:
source 数据库备份文件
表数据导出到文本文件
语法:
==SELECT columnlist FROM tablename
[WHERE contion]
INTO OUTFILE ‘filename’ [OPTION];
文本文件导入到数据表
语法:
==LOAD DATA INFILE filename INTO TABLE tablename [OpTION] ==