Mysql
文章平均质量分 64
oyw5201314ck
这个作者很懒,什么都没留下…
展开
-
1.内(外)连接、左(外)连接、右连接
目前有2个表:users和scores,它们的数据如下:可见, id为1的xiaoming在scores中没有对应的记录,同样,user_id为5的score在users中没有对应的记录mysql> SELECT * FROM users;+----+----------+| id | username |+----+----------+| 1 | xiaoming || 2 ...原创 2018-03-18 20:48:18 · 246 阅读 · 0 评论 -
2. AUTO_INCREMENT 自增列
有些场景下,我们可能需要使用到自增列AUTO_INCREMENT,自增列必须为整数,当插入的数据中该字段值为0、或者不给值、给默认值,给null值,会触发自增,即系统会从该字段下当前的最大值进行+1操作然后赋给当前插入的记录。自增列有如下限制:1. 自增列必须为整数数据类型mysql> CREATE TABLE autoinc ( -> id char(10) AUTO...原创 2018-03-18 21:49:24 · 410 阅读 · 0 评论 -
3. 数据库事务
我们在开发数据库应用时,会遇到类似以下的场景:假设有个表users(id pk,name,age,sex)用于存放用户信息,有个表blogs(id pk, user_id fk, title, content)用于存放用户记录的博客信息,blogs的user_id字段记录博客拥有者的id。现在,我们需要删除某个用户,当然我们也会连同删掉其的博客信息delete from users where i...原创 2018-03-20 09:56:22 · 319 阅读 · 0 评论 -
4. 事务隔离级别之Read Uncommitted
前面我们说过,要获得最高的事务隔离性,可以采取序列化/串行的方式,代价是严重影响系统处理事务的吞吐量。就好像数据库是个多核CPU,事务串行后,那么意味着我们总是在使用单核,没办法发挥多核CPU的并行威力。基于以上这个问题,大多数的数据库实现都为使用者提供了多个事务隔离级别;Mysql提供的事务隔离级别有: Read Uncommitted,Read Committed,Repeatable Rea...原创 2018-03-20 10:26:50 · 15393 阅读 · 0 评论 -
5. 事务隔离级别之Read Committed
这篇我们学习事务隔离级别Read Committed,顾名思义,就是读已提交,一个事务只能看到其他并发的已提交事务所作的修改。很显然,该级别可以解决Read Uncommitted中出现的“脏读“问题。除了Mysql,很多数据库都以Read Committed作为默认的事务隔离级别。下面通过例子来演示Read Committed解决“脏读”:1. 小明连接数据库去查询自己本学期的成绩,他设置ses...原创 2018-03-20 11:03:43 · 25555 阅读 · 1 评论 -
6. 事务隔离级别之Repeatable Read
接下来我们学习Mysql默认的事务隔离级别Repeatable Read,顾名思义,可重复读,也即在一个事务范围内相同的查询会返回相同的数据。延续上面的栗子:1. 小明很开心自己考了69分,于是他连接到数据库查询自己的成绩来炫耀给小伙伴,由于Repeatable Read是默认的事务隔离级别,因此这次他不需要进行修改:xiaoming> select @@tx_isolation;+---...原创 2018-03-20 11:32:09 · 10150 阅读 · 0 评论 -
7.事务隔离级别之Serializable
最后我们学习一下最高的事务隔离级别Serializable,顾名思义,可串行化的,也即并发事务串行执行。很显然,该级别可以避免前面讲到的所有问题:“脏读”、“不可重复读”和“幻读”。代价是处理事务的吞吐量低,严重浪费数据库的性能,因此要慎用此事务隔离级别。下面演示Serializable如何解决这些问题:1. 小明连接数据库去查询自己本学期的成绩,他设置session(当前连接)的事务隔离级别为S...原创 2018-03-20 12:51:14 · 5051 阅读 · 4 评论 -
8. 事务隔离级别: 总结
通过前面的学习,我们可以总结出Mysql的4种事务隔离级别可能产生的问题如下所示:事务隔离界别脏读不可重复读幻读Read-Uncommitted(读未提交)有有有Read-Committed(读已提交)无有有Repeatable-Read(可重复读)无无有Serializable(可串行化)无无无通常生产实践中使用较多的事务隔离界别就是默认的Repeatable-Read和Read-Committ...原创 2018-03-20 13:03:01 · 482 阅读 · 2 评论