事务(Transaction):
是指将一系列数据操作捆绑成为一个整体进行统一管理。
事务是作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元必须有四个属性:
1.原子性(Atomicity)
事务里的各元素是不可分的,所有元素必须作为一个整体提交或回滚。如果事务中有任何元素失败,则整个事务都将失败。
2.一致性(Consistency)
事务完成的时候数据必须保持一致状态。
3.隔离性(Isolation)
一个事务的操作及使用数据对其它事务是隔离的,事务之间不能互相干扰
4.持久性(Durability)
事务成功提交后,事务对数据库的改变是永久性的。接下来的其它任何操作或者古筝都不会对其结果有任何影响。
执行事务:
1.执行事务的语法
(1)开始事务
BEGIN;
或
START TRANSACTION;
(2)提交事务
COMMIT;
(3)回滚(撤销)事务
ROLLBACK;
2.设置自动提交关闭或开启
语法:
SET autocommit = 0|1;
值为0:关闭自动提交
值为1:开启自动提交
视图
另一种查看数据库中一个或多个表中数据的方法。
1.创建和使用视图
(1)使用SQL语句创建视图
CREATE VIEW 视图名
AS
<SELECT 语句>;
(2)使用SQL语句删除视图
DROP VIEW [IF EXISTS] 视图名;
(3)使用SQL语句查看视图数据
SELECT 字段1,字段2,````` FROM view_name;
(4)使用视图注意事项
1)每个视图可以使用多个表。
2)与查询相似,一个试图可以嵌套另一个视图,但最好不要超过三层。
3)对视图数据进行添加,更行和删除操作直接引用表中的数据。
4)当时图数据来自多个表时,不允许添加和删除数据。
索引
索引分类
1.普通索引
允许在定义索引的列中插入重复值和空值。唯一的任务是加快对数据的访问速度。
2.唯一索引
不允许两行具有相同的索引值
3.主键索引
唯一索引的特殊类型。在数据库关系图中为表定义一个主键时会自动创建主键索引。要求主键中的每个值都是非空、唯一的。
4.复合索引
在创建索引时,并不是只能对其中一列创建索引,与创建主键一样,可以将多个列组合作为索引。需要注意:只有在查询中使用了组合索引最左边字段是,索引才会被使用,即第一个字段作为前缀的集合。
5.全文索引
在定义索引的列上支持值的全文查找,允许在这些索引列中插入重复值和空值。
6.空间索引
对空间数据类型的列建立的索引。必须将其声明为NOT NULL。
创建索引
语法:
CREATE [UNIQUE|FULLTEXT|SPQTIAL]INDEX index_name
ON table_name (column_name[length]```);
UNIQUE|FULLTEXT|SPQTIAL:分别表示唯一索引、全文索引和空间索引,为可选参数。
index_name:指定索引名。
table_name:指定创建索引的表名。
column_name:指定需要创建索引的列。
length:指定索引长度,可选参数,只有字符串类型才能指定索引长度。
删除索引
语法:
DROP INDEX index_name ON table_name;
查看索引
语法:
SHOW INDEX FROM table_name;
数据库的备份和恢复
使用mysqldump命令备份数据库
mysqldump命令格式
语法:
mysqldump -u uesrname -h host -p password dbname[tbname[,tbname2```]]>filename.sql
username表示用户名
host表示登录用户的主机名称,如本机为主机可省略
password表示登录密码
dbname为需要备份的数据库
tbname为需要备份的数据表,可指定多张表。为可选项,如备份整个数据库则此项省略
filename.sql表示备份文件的名称
mysqldump提供了许多参数,包括用于调试和压缩的。以下帮助命令可以获得当前版本的完整选项列表
mysqldump --help
使用mysql命令恢复数据库
mysql -u uesrname -p [dbname] < filename.sql
username表示用户名
dbname表示数据库名
filename.sql为数据库备份后的文件
如果已经登录了MySQL服务器,也可以使用source命令恢复数据库。
语法:
source filename;
通过复制文件实现数据备份和恢复
可以直接复制MySQL数据库的存储目录及文件进行备份。
表数据导出到文本文件
通过对表数据的导出和导入,可以实现MySQL数据库服务器与其他数据库服务器间移动数据。
数据导出
语法:
SELECT columnlist FROM tablename
[WHERE contion]
INTO OUTFILE 'filename'[OPTION];
文本文件导入到数据表
语法:
LOAD DATA INFILE filename INTO TABLE tablename[POTION];
filename用来指定文本文件的路径和特征
tablename用来指定导入表的名称