--事务
事务是一种机制,一个操作序列,包含了一组数据库操作命令,事务是作为单个逻辑工作单元执行的一系列操作。
一个逻辑工作单元必须有四个属性: 原子性(Atomicity),一致性(Consistency),隔离性(lsosation),持久性(Durablity),这些特性通常称为:ACID
1.原子性(atomicity):一个事务必须视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,
要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性。
2.一致性(consistency):数据库总数从一个一致性的状态转换到另一个一致性的状态。
3.隔离性(isolation):一个事务所做的修改在最终提交以前,对其他事务是不可见的。
4.持久性(durability):一旦事务提交,则其所做的修改就会永久保存到数据库中。此时即使系统崩溃,修改的数据也不会丢失。
执行事务的语法关键字
1.开始事务
BEGIN;
2.提交事务
COMMIT
3.回滚(撤销)事务
ROLLBACK;
实例--
DELIMITER $$ CREATE PROCEDURE usp_transfer() BEGIN ##错误总数默认是0 DECLARE t_error INTEGER DEFAULT 0; ##语法错误 form 违反了约束 ## continue 继续 hanlder 执行 并且对 t_error重新赋值为1 DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1; SET autocommit=0; START TRANSACTION; UPDATE bank SET balance=balance-100 WHERE cid=1; UPDATE bank SET balance =balance+100 WHERE cid=2; IF t_error > 0 THEN ROLLBACK; ELSE COMMIT; END IF; SET autocommit=1; END$$ DELIMITER ;
--视图
视图是保存在数据库中的SELECT查询,使用视图原因两点:一,安全考虑,用户不必看到整个数据库的结构,而隐藏部分内容,二,符合用户日常业务逻辑,使他们更容易理解数据。
视图相关的MySQL指令
操作指令 | 代码 |
---|---|
创建视图 | CREATE VIEW 视图名(列1,列2...) AS SELECT (列1,列2...) FROM ...; |
使用视图 | 当成表使用就好 |
修改视图 | CREATE OR REPLACE VIEW 视图名 AS SELECT [...] FROM [...]; |
查看数据库已有视图 | >SHOW TABLES [like...]; (可以使用模糊查找) |
查看视图详情 | DESC 视图名 或者SHOW FIELDS FROM 视图名 |
视图条件限制 |
|
视图通常用来进行以下三种操作
1.筛选表中的行 ,2.防止未经许可的用户访问敏感数据,3.将多个物理数据表抽象唯一个逻辑数据表。
4.删除视图
drop view 视图名
--索引
1.索引是占硬盘空间 ,也是按页存放的 。
2.索引:是一种有效组合数据的方式,为了快速查找指定记录
建立索引的原则
1.在列基数比较少的列上,不适合创建索引
2.在不经常使用的列 上,建立索引没有意义
3.在频繁搜索的列上,适合建立索引
-索引分类
mysql索引按存储类型分2种:
01.B-树索引(BTREE):INNODB,MyISAM 支持
02.哈希索引
01.普通索引:允许在定义为索引的列中 出现 重复值和空值!
02.唯一索引:索引列不允许出现重复值,但是可以出现一个空值!
03.主键索引:创建主键的时候,系统会默认创建一个主键索引!唯一!不能为空!
04.复合索引:将我们的多个列组合起来!(name,sid)姓名和身份证号! name被查询时才能触发索引的使用!
需要注意的是,只有查询中使用了复合索引最左边的字段时,索引才会被使用!
05.全文索引:允许值的全文查询!允许空值和重复值!适合在一个内容比较多的列!text!
06.空间索引:对空间数据类型的列建立的索引!
-创建索引
CREATE UNIQUE(唯一),FULLTEXT(全文),SPATIAL(空间) INDEX 指定索性名称 ON 指定需要创建索引的表名(指定需要创建索引的列);
-删除索引
DROP INDEX 指定索引名 ON 指定创建索引的表名;
删除索引时注意:
删除表时,该表的所有索引将同时被删除。
删除表中的列时,如果 要删除的列为索引的组成部分,则该列也会从索引中删除,如果组成索引的所有列都被删除,则整个索引将被删除。
-查看索引
SHOW INDEX FROM 指定的表名
--数据库的备份和恢复
备份
mysqldump -uroot -hlocalhost -p myschool>指定的地址和.sql文件
恢复
注意:数据库必须已经存在,否则会报错。
mysql -uroot -proot myschool<指定的地址和.sql文件