目录
1、表连接查询
1.1 多表查询的概念
所需要的查询结果在多张不同的表中,因此需要用到多表查询。
多表查询分为:内连接和外连接。
内连接包含:隐式内连接和显式内连接。
外连接包含:左外连接和右外连接。
笛卡尔积:
-- 需求 : 查询所有的员⼯和所有的部门select * from emp,dept;-- 设置过滤条件 Column 'id' in where clause is ambiguousselect * from emp, dept where id = 5 ;
1.2 内连接:
-- 隐式内连接:看不到 JOIN 关键字,条件用 WHERE 指定
SELECT 字段名 FROM 左表 , 右表 WHERE 条件 ;select * from emp, dept where emp. `dept_id` = dept. `id` ;-- 显式内连接:使用 INNER JOIN ... ON 语句,可以省略 INNER
SELECT 字段名 FROM 左表 [ INNER ] JOIN 右表 ON 条件 ;select * from emp e inner join dept d on e. `dept_id` = d. `id` ;
1.3 外连接:
-- 左外连接:使用 LEFT OUTER JOIN ... ON, OUTER 可以省略
SELECT 字段名 FROM 左表 LEFT [ OUTER ] JOIN 右表 ON 条件select * from dept d left join emp e on d. `id` = e. `dept_id` ;-- 右外连接:使用 RIGHT OUTER JOIN ... ON, OUTER 可以省略
SELECT 字段名 FROM 左表 RIGHT [ OUTER ] JOIN 右表 ON 条件select * from dept right join emp on dept. `id` = emp. `dept_id` ;
2、子查询
子查询的概念:
1. 一个查询的结果作为另一个查询的条件
2. 有查询的嵌套,内部的查询称为子查询
3. 子查询要使用括号
-- 子查询结果为单行单列
SELECT 查询字段 FROM表 WHERE 字段 = (子查询);
-- 子查询结果为多行单列
SELECT 查询字段 FROM 表 WHERE 字段 IN (子查询);
-- 子查询结果为多行多列
SELECT 查询字段 FROM (子查询) 表别名 WHERE 条件;
3、事务
MySQL中可以有两种方式对事务进行操作:
1. 手动提交事务
2. 自动提交事务
回滚点:
事务的四大特性ACID:
事务的隔离级别:
MySQL数据库的四种隔离级别:
-- 查询全局事务隔离级别
select @@transaction_isolation;
# MySQL 5.x 版本 隔离级别变量名为 tx_isolationset global transaction isolation level 级别字符串 ;