事务处理
事务就是将一组sql语句放在同一批次去执行,
如果sql语句出错,则该批次内的所有sql都将被取消执行.
注 : 只支持InnoDB和BDB数据表类型
事务的ACID原则 :
原子性、一致性、隔离性、持久性
事务处理流程:
- 使用set语句来改变自动提交模式
set autocommit=0; - 开始一个事务(标记事务的起始点)
start transaction; - 提交一个事务给数据库,或将事务回滚,所有commit中的操作将被取消
commit; || rollback; - 还原数据库的自动提交
set autocommit=1;
//例:转账
CREATE TABLE account(
id INT(11) AUTO_INCREMENT PRIMARY KEY,
NAME VARCHAR(32),
cash DECIMAL (9,2));
INSERT INTO account(NAME,cash) VALUES('A',2000),('B',10000);
SET autocommit=0;
START TRANSACTION;
UPDATE account SET cash=cash-500 WHERE NAME='A';
UPDATE account SET cash=cash+500 WHERE NAME='B';
COMMIT;
SET autocommit=1;
数据库索引
索引的作用:作用 : 1.提高查询速度 2. 确保数据唯一性 3.加速表与表之间的连接 4.显著减少分组和排序的时间 5.全文检索字段进行搜索优化
简而言之,即提高查询操作效率
索引分类:
- 主键索引 (primary key) 最常见的索引, 唯一,确保数据唯一性
- 唯一索引(unique) 作用 : 避免同一个表中数据列中的值重复 , 与主键索引的区别: 唯一索引可有多个 可以有null值 , 主键索引只能有一个 , 不能有null值
- 常规索引(index/key) 作用 : 快速定位数据 , 应加在查找条件的字段 , 不宜添加太多常规索引,影响数据插入,删除 ,修改
- 全文索引(fulltext) 只能用于MyISAM类型的数据表 , 只能用于char varchar text类型的数据类型 适合大数据量
创建索引
#内部添加索引
CREATE TABLE test(
sid INT(11),
sub_no INT(11),
name varchar(20),
PRIMARY KEY(sid,sub_no) #联合主键
);
#外部添加索引
ALTER TABLE test ADD UNIQUE KEY(sid,sub_no);
ALTER TABLE test ADD UNIQUE KEY(sid);
ALTER TABLE `student` ADD INDEX KEY(name);
查找索引
show keys from 表;
删除索引
drop index 索引名 on 表名;
//或者
alter table 表名 drop index 索引名;
索引准则:
分析sql语句的执行性能(查看是否触发索引)
explain/desc select语句
注: \G结尾竖排显示
Mysql的备份
数据库备份的必要性 :
1.保证重要数据不丢失
2.数据转移
方法:
1.mysqldump备份工具
2.数据库管理工具
3.直接拷贝数据库文件和相关配置文件
作用:
1.转储数据库
2.搜集数据库进行备份
3.将数据转移到另一个SQL服务器(不一定是MySQL服务器)
备份格式如下: 注:mysqldump与mysql同级别,因此在使用时应退出mysql服务
mysqldump -h 主机名 –u 用户名 –p 数据库名 [table1 table2 table3] > path/filename.sql
mysqldump常用选项:
数据库恢复
方法二 :
新建接收库,输入一下代码将数据恢复到新建库