所有多表操作都可以简单理解为把多个表联系成一个表,最终思想成面上当成一个表对待
实际情况多表查询表与表之间都要有关联的,现在只是做个测试
INNER JOIN 两个表整匼(表1 m 条数据,表二 n 条数据总计 m*n 条数据),如果有条件删选合并查找
LEFT JOIN 关键字从左表返回所有的行,即使右表中没有匹配如果右表中沒有匹配,则结果为 NULL
RIGHT JOIN 关键字从右表返回所有的行,即使左表中没有匹配如果左表中没有匹配,则结果为 NULL
union all 会把所有的全都找出来(包括重复的)union去重。
MySQL 事务主要用于处理操作量大复杂度高的数据。
比如你同事问你借100大洋你会少100,你同事多100这两个事件都要发生完整,缺一不可它们就构成了一个事务。
- 只有使用了 Innodb 数据库引擎的数据库或表才支持事务;
- 事务处理可以用来维护数据库的完整性保证成批的 SQL 语句要么全部执行,要么全部不执行;
MYSQL 事务处理主要有两种方法:
- ROLLBACK 事务回滚(事件有一失败)
- COMMIT 事务确认(事件都成功)
- 脏读:事务A读取了事务B更新的数据然后B回滚操作,那么A读取到的数据是脏数据;
- 不可重复读:事务 A 多次读取同一数据事务 B 在事务A多次读取的过程中,对数据作了更新并提交导致事务A多次读取同一数据时,结果不一致;
- 不可重复读:事务 A 多次读取同一数据事务 B 在事务A多次读取的过程中,对数据作了更新并提交导致事务A多次读取同一数据时,结果不一致
- 幻读:系统管理员A将数据库中所有学生的成绩从具体分数改為ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样
ps: 不可重复读的和幻读很容易混淆,不可重复读侧重于修改幻读侧重于新增或删除。
最低的事务隔离级别一个事务还没提交時,它做的变更就能被别的事务看到 |
保证一个事物提交后才能被另外一个事务读取另外一个事务不能读取该事物未提交的数据。 |
多次读取同一范围的数据会返回第一次查询的快照即使其他事务对该数据做了更新修改。事务在执行期间看到的数据前后必须是一致的 |
事务 100% 隔离,可避免脏读、不可重复读、幻读的发生花费最高代价但最可靠的事务隔离级别。 |