事务
事务是指将一系列数据操作捆绑成为一个整体进行统一管理,如果某一事务执行成功,则在该事务中进行的所有数据更改均会提交,成为数据库中的永久组成部分。如果事务执行时遇到错误且必须取消或回滚,则数据将全部恢复到操作前的状态,所有数据的更改均被清除。
事务是作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元必须有四个属性,即原子性,一致性,隔离性及持久性,这些特性通常简称为ACID。
原子性:事务是一个完整的操作。事务的各元素是不可分的(原子的)。事务中的所有元素必须作为一个整体提交或回滚。如果事务中的任何元素失败,则整个事务将失败。
一致性:当事务完成时,数据必须处于一致状态,也就是说,在事务开始之前,数据库中存储的数据处于一致状态,在正在进行的事务中,数据可能处于不一致的状态,如数据可能有部分被修改。然而,当事务成功完成时,数据必须再次回到已知的一致状态。通过事务对数据所做的修改不能损坏数据,或者说事务不能使数据存储处于不稳定的状态。
隔离性:对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应该以任何方式依赖于或影响其他事务。
持久性:事务的持久性指不管系统是否发生了故障,事务处理的结果都是永久的。
执行事务的语法:
1.开始事务:BEGIN; 或 START YRANSACTION;
2.提交事务: COMMIT;
3.回滚(撤销)事务:ROLLBACK;
设置自动提交关闭或开启
SET autocommit=0|1;
编写事务时要遵守以下原则
1.事务尽可能简短
2.事务中当问的数据量尽量最少
3.查询数据时尽量不要使用事务
4.在事务处理过程中尽量不要出现等待用户输入的操作
视图
视图是保存在数据库中的SELECT查询。
使用视图的原因:一个是出于安全考虑,用户不必看到整个数据库的结构,而隐藏部分数据;另一个是符合用户日常业务逻辑,使他们更容易理解数据。
视图通常用来进行以下三种操作
1.筛选表中的行
2.防止未经许可的用户访问敏感数据
3.将多个物理数据表抽象为一个逻辑数据表
对最终用户的好处
1.结果更容易理解
2.获得数据更容易
对开发人员的好处
1.限制数据检索更容易
2.维护应用程序更方便
使用SQL语句创建视图
CREATE VIEW 视图名
AS
<SELECT语句>;
使用SQL语句删除视图
DROP VIEW [IF EXISTS] 视图名;
使用SQL语句查看视图数据
SELECT 字段1,字段2,… FROM view _name;
使用视图的注意事项
1.每个视图中可以使用多个表
2.与查询相似,一个视图可以嵌套另一个视图,但最好不要超过三层
3.对试图数据进行添加,更新和删除操作直接引用表中的数据
4.当视图数据来自多个表时,不允许添加和删除数据
索引
索引提供指针以指向存储在表中指定列的数据值,再根据指定的排序次序排列这些指针。
索引分为六类
1.普通索引:允许在定义索引的列中插入重复值和空值,它的唯一任务就是加快对数据的访问速度du
2.唯一索引:唯一索引不允许两行具有相同的索引值
3.主键索引:要求主键中的每个值是非空,唯一的
4.复合索引:在创建索引时,并不是只能对其中一列创建索引,与创建主键一样,可以将多个列组合作为索引,这种索引称为复合索引
5.全文索引:在定义索引的列值的上支持值的全文查找,允许在这些索引列中插入重复值和空值。
6.空间索引:对空间数据类型的列建立的索引,空间索引只能在存储引擎为MyISAM的表中创建。
创建索引的语法
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
ON table_name(colum_name[length]…);
删除索引的语法
DROP INDEX index_name ON table_name;
查看索引的语法
SHOW INDEX FROM table_name;
数据库的备份和恢复
为了防止数据丢失,将损失降到最低,定期对数据库进行备份是非常必要的,以便于发生意外情况后可以及时恢复数据。
使用mysqldump命令备份数据库
mysqldump -u username -h host -ppassword
dbname[tbname1[,tbname2…]]>filename.sql
使用mysql命令恢复数据库
mysql -u username -p [dbname] <filename.sql
表数据导出到文本文件的语法
SELECT columnlist FROM tablename
[WHERE contion]
INTO OUTFILE ‘filename’ [OPTION];
文本文件导入到数据表的语法
LOAD DATA INFILE filename INTO TABLE tablename [OPTION];