多表查询:
笛卡尔积:
由两个集合A,B,取这两个集合的所有组成情况;
要完成多表查询,需要先消除无用的数据;
多表查询的分类:
1.内连接查询;
2.外连接查询;
3.子查询;
内连接查询:
隐式内连接:
语法:
select 字段列表 from 表名列表 where 条件;
使用where条件消除无用的数据;
显示内连接:
语法;select 字段列表 from 表名1 [inner] join 表名2 on 条件;
内连接查询需要确定的前提:
1.从那些表中查询数据;
2.条件是什么;
3.查询哪些字段;
外连接查询:
左外连接:
select 字段列表 from 表名1 left [outer] join 表名2 on 条件;
查询的是左表所有数据以及交集部分;
右外连接:
select 字段列表 from 表名1 right [outer] join 表名2 on 条件;
查询的是右表所有数据以及交集部分;
子查询:
概念:
查询中嵌套查询,称嵌套查询为子查询;
不同情况:
1.子查询的结果都是单行单列的,子查询可以作为条件,使用运算符判断;
2.子查询结果是多行单列的,子查询可以作为条件判断,使用运算符 in{};
3.子查询的结果是多行多列的,子查询可以作为一张虚拟表参与查询;
例: select 字段列表 from 表名列表,子查询 where 条件;
事务:
概念:
如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败;
操作:
1.开启事务: start transation;
2.回滚:rollbacl;
3.提交: commit;
MySQL里的事务:
MySQL里事务默认自动提交;
事务提交的两种方式:
1.自动提交:
MySQL默认自动提交,一条DML语句自动提交一次事务;
2.手动提交:
需要先开启事务,再提交;
修改事务的默认提交方式:
1.查看事务默认提交方式:select @@autocommit(0代表手动提交,1代表自动提交);
2.修改默认提交方式:set @@autocommit=0(1);