MySQL(DCL)

1.掌握MySQL的事务处理方法

1.1事务的作用
业务:一套固定的顺序流程 (例如: 银行转账、入学、登陆、注册)
1.2事务的概述
事务:一系列操作要么执行成功!要么都失败!
RDB安全、事务支持好 NoSQL事务一般并不是太强(Redis是假事务)
MySQL:存储引擎 INNODB(默认、高频采用)BDB才支持事务
MyISAM:也是常用存储引擎 但是它在事务等方面不支持 它的查询性能比较强 也支持全文索引其实在使用了支持事务的引擎之后,事务就已经在使用了,因为MySQL事务中默认自动提交数据
1.3事务的使用
1.自动开启事务 begin / start transaction(tx)
2.如果没有出现异常,则应该提交事务 commit
3.如果出现异常 事务应该进行回滚 rollback 通过关闭自动提交来使用事务 set autocommit = 0(关闭)| 1(开启)
SET autocommit = 0;
SET autocommit = 1;

2.理解MySQL的ACID原则(事务的特点)

四大特性:原子性、一致性、隔离性、持久性
原子性:(在化学上讲究原子为最小单位 不可再分)事务是不可分割!要么都成功,要么都失败
**一致性:**事务执行前和事务执行后,数据总量不变!
**持久性:**事务在执行完毕之后必须能够将数据持久保存到数据库中!
**隔离性:**多个事务之间应该彼此独立,不受影响。
事务并发可能引发的问题:脏读、不可重复读、幻读/虚读
脏读:一个事务读取到了另一个事务未提交的数据!(基本不允许,因为事务有可能回滚)
不可重复读:一个事务在执行期间读取了多次内容,结果不一样。主要针对另外一个事务对同样的内容进行了修改操作(UPDATE)
幻读/虚读:一个事务在执行全表性操作时,另一个事物进行了插入操作,那么第一个事务就会发现还有未执行完的内容。(INSERT)
(MySQL)四大隔离级别:读未提交、读已提交、可重复度、串行化
读未提交:任何事务并发问题都无法解决!(基本不采用)
读已提交
:能解决脏读问题!(Oracle数据库默认)
可重复读
:MySQL默认!可以解决脏读和不可重复读问题!(MySQL默认)
串行化
:最严格的隔离级别!可以解决所有并发问题!(基本不采用)

3.了解视图的使用

视图:它是一种虚拟表,可以用来降低查询复杂度!也可以适用于不同群体对数据的不同要求视图的创建:create view 视图名 AS (内容);
**视图的使用:**select * from 视图名;
【视图是一张虚拟表,你对它的改动会最终影响到真实数据物理表!】
**视图的删除:drop view 视图名;
注意事项:
1.视图仅仅作为查询使用,不要进行修改等操作
2.视图可以嵌套使用
3.视图的数据是来自于对应的物理表!

4.掌握数据库索引的创建

索引:提升查询性能!
原理:类似于字典前的目录页
索引的分类:普通索引 、唯一索引、主键索引、复合索引、全文索引、空间索引。
**普通索引:**提升查询性能。将一个列或者一组列进行相关组合排序
**唯一索引:**除了提升查询性能,还可以保证列唯一
**主键索引:**除了提升性能还可以保证主键的特点 非空且唯一
**复合索引:**可以将多个字段列组合提升查询性能
**全文索引:**它只能在MyISAM存储引擎中使用 提升大数据量情况下对文本查找的性能
1.创建一个普通索引

CREATE INDEX index_stu_name ON student(stuName);

创建外键和主键和唯一键都会产生对应的索引
2.删除索引

DROP INDEX index_stu_name ON student;

3.查看索引列表

SHOW INDEX FROM student;

索引并不是一味的创建即可提升性能!,因为索引页会占用存储空间!而且索引列会在操作时进行索引验证, 因此 要谨慎的设计和使用设计:
索引并不是一味的创建即可提升性能!,因为索引页会占用存储空间!而且索引列会在操作时进行索引验证, 因此 要谨慎的设计和使用设计:
建议:
1.频繁搜索的列!
2.频繁用作于查询的列。
3.经常排序分组的列。
4.经常用于连接的列。
不建议:
5.仅包含几个不同值的列!例如:性别、学历…
6.在表中仅包含几行的列!数据不多!使用:
1.尽量不要使用*来查找数据!
2.索引列应该尽量小,在字节数小的列上建立!
3.如果where中有多个条件表达式,那么索引列的条件表达式要放在前面
4.避免对索引进行计算表达式!

5.了解MySQL数据库的备份和恢复

备份数据库:mysqldump【参数选项】-u用户名 -p -h主机地址 要备份的数据库名【要备份的数据表列表】> 输出的地址
-add-drop-table 表示在创建表语句前都添加 drop table语句 可以通过-skip-add…
–add-locks 表示在插入数据前后加上锁表和解锁语句 可以防止插入出错!
**-t(- table 减去table )**导出数据时 不添加数据结构创建的语句 create table
**-c (complete 完整的)**可以帮助我们在导出数据时 添加语句可以加上字段列表
**-d (-date 减去 date )**导出时 只要表结构 不要数据恢复数据库:mysql -u用户 -p -h主机地址 要恢复的到的数据库名 < 数据脚本地址在登陆mysql服务器之后可以使用source命令来恢复数据库 source 数据脚本文件地址;(切换到指定数据库)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值