天天看点

Mysql学习小结多表查询合并查询内连接和外连接事务隔离级别Mysql存储类型小结

今天简单的过了一遍mysql的主要知识点,下面做一个简单小结

今天主要看了下面五个部分

  1. 多表查询
  2. 合并查询
  3. 内连接和外连接
  4. 事务隔离级别
  5. Mysql 存储类型

多表查询

如果第一张表t1有M条记录,第二张表t2有N条记录。那么select * from t1,t2;的多表查询结果会得到M*N条记录,结果是一个笛卡尔集。所以不做过滤的话,多表查询的结果数量会快速增长。可以用相同的字段值进行过滤。

select * from t1,t2 where t1.No = t2.No;类似于这种形式。

合并查询

合并查询涉及到两个关键字union 和union all。union 能够去掉重复的记录, union all不会去掉重复记录。从菜鸟课程上抄一个例子

SELECT country FROM Websites

UNION

SELECT country FROM apps

ORDER BY country;

可以将两个查询结果合并在一起。

内连接和外连接

内连接涉及的基本语法是

select * from t1 inner join t2 on t1.no=t2.no

inner join 起到的作用有点类似于逗号 ,on 类似于 where

外连接分为左连接和右连接

左连接和右连接本质是一样的

表示完全显示左边的表还是右边的表

左连接是left join,右连接是 right join

事务隔离级别

这个词听过很多次了,但是一直不知道是什么。今天终于有了一个简单的认识。

mysql中事务隔离级别分为四种

  1. 读未提交(Read uncommitted)
  2. 读已提交(Read committed)
  3. 可重复度(Repeatable read)
  4. 可串行化(Serializable)

    图截取至韩顺平老师的课件。

    Mysql学习小结多表查询合并查询内连接和外连接事务隔离级别Mysql存储类型小结

    事务的隔离级别可以由语句

    set session transaction isolation level (事务隔离级别)得到

    mysql 默认事务隔离级别是repeatable read ,这已经可以满足大部分需求

    这些事务隔离级别是以四个标准衡量的,脏读,不可重复读,幻读,加锁读。

脏读:一个会话会读取到另一个会话没有提交(commit)的修改数据

不可重复读:同一查询在同一个事务中多次进行,由于其他提交事务所做的修改和删除,每次返回不同的结果集,此时发生不可重复读。

幻读:同一查询在同一个事务中多次进行,由于其他提交事务所做的插入操作,每次返回不同的结果集,此时发生不可重复读。

Mysql存储类型

Mysql学习小结多表查询合并查询内连接和外连接事务隔离级别Mysql存储类型小结

刚刚看,还没有深入了解。不支持事务的存储引擎查询效率普遍高一些。

小结

最近因为项目开发需要使用数据库,但是很多基本概念都不清楚,所以找了个视频简单过了一遍,让脑子里对整个mysql有个大致的认识。填补一下空白,确实是学会了很多。很多认为很难的东西,其实看一下就懂了,并不难。