赞
踩
继续我的MySQL之旅,继续上篇的DDL、DML、DQL、以及一些约束,该到了多表查询和事务的学习总结,以及相关的案例实现,为未来的复习以及深入的理解做好知识储备。
目录
多表查询分为连接查询和子查询
连接查询分为内连接与外连接
MySQL里把inner join 称为等值连接,就是需要指定出来等值的连接条件inner join划分在一起
- // 第一种只包含where 隐式内连接
- select 字段列表 from 表1,表2... where 条件;
- // 第二种:join…on
- SELECT * FROM table1 a JOIN table2 b on a.id=b.id;
- // 显式内连接 inner join ……on
- SELECT * FROM table1 a inner join table2 b on a.id=b.id;
- -- 多表查询
- -- 笛卡尔积
- SELECT
- tb_goods.id,
- tb_order.id,
- tb_goods.title,
- tb_goods.price
- FROM
- tb_goods
- CROSS JOIN tb_order;-- 连接查询--内连接
- -- 隐式内连接 相当于查询两个集合的交集
- -- select 字段列表 from 表1,表2…… where 条件;
- SELECT
- tb_goods.id,
- tb_order.id,
- tb_goods.title,
- tb_goods.price
- FROM
- tb_goods
- CROSS JOIN tb_order
- WHERE
- tb_goods.id = tb_order.id;-- 显示内连接
- -- select 字段列表 from 表1 [INNER] join 表2 on 条件
- SELECT
- *
- FROM
- tb_goods a
- INNER JOIN tb_order b ON a.id = b.id;
1. 左外连接 left inner join
左边为主表,左边所有数据都显示,右边显示相关联,剩余的显示不关联的 null
- -- 外连接
- -- 左外连接
- select * from tb_goods a left join tb_order b on a.id = b.id;
右外连接,right inner join
右边为主表右边所有数据都显示,左边显示相关联,剩余的显示不关联的 null
-
- -- 右外连接
- SELECT * from tb_goods a right join tb_order b on a.id = b.id;
概念 :
查询中嵌套查询,称嵌套查询为子查询
子查询根据查询结果不同,作用不同:
单行单列、多行单列、多行多列几类
实质:
查询之中嵌套着一个查询,这个嵌套进去的查询
数据库中的一种特性
数据库的事务是一种机制、一个操作序列,包含了一组数据库操作命令
事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么同时成功,要么同时失败
事务是一个不可分割的工作逻辑单元
python 中事务的提交不是自动的,MySQL 的事务是自动提交的
一共三个操作
- -- 开启事务
- start transaction;
- // 或者 begin
- -- 提交事务
- commit;
- -- 回滚事务
- rollback;
A C I D四大特性
原子性(Atomicity):事务是不可分割的最小操作单位,要么同时成功,要么同时失败
一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态
隔离性(lsolation):多个事务之间,操作的可见性,多个事件的独立性
持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的
- -- 1.查询事务的默认提交方式,默认值为1自动提交,手动为0
- select @@autocommit;
- -- 2.修改事务的提交方式为手动提交,则执行下方修改代码后不会提交,即是不存在永久改变
- set @@autocommit = 0;
- -- 3.李四金额-500
- update account set money = money - 500 where name = '李四';
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。