今天简单的过了一遍mysql的主要知识点,下面做一个简单小结
今天主要看了下面五个部分
- 多表查询
- 合并查询
- 内连接和外连接
- 事务隔离级别
- 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中事务隔离级别分为四种
- 读未提交(Read uncommitted)
- 读已提交(Read committed)
- 可重复度(Repeatable read)
- 可串行化(Serializable)
图截取至韩顺平老师的课件。
事务的隔离级别可以由语句
set session transaction isolation level (事务隔离级别)得到
mysql 默认事务隔离级别是repeatable read ,这已经可以满足大部分需求
这些事务隔离级别是以四个标准衡量的,脏读,不可重复读,幻读,加锁读。
脏读:一个会话会读取到另一个会话没有提交(commit)的修改数据
不可重复读:同一查询在同一个事务中多次进行,由于其他提交事务所做的修改和删除,每次返回不同的结果集,此时发生不可重复读。
幻读:同一查询在同一个事务中多次进行,由于其他提交事务所做的插入操作,每次返回不同的结果集,此时发生不可重复读。
Mysql存储类型
刚刚看,还没有深入了解。不支持事务的存储引擎查询效率普遍高一些。
小结
最近因为项目开发需要使用数据库,但是很多基本概念都不清楚,所以找了个视频简单过了一遍,让脑子里对整个mysql有个大致的认识。填补一下空白,确实是学会了很多。很多认为很难的东西,其实看一下就懂了,并不难。