主要內容
- 多表查詢
- 事物
- DCL
1 多表查詢
- 查詢語法:
select
列名列表
from
表名列表
where…- 笛卡爾積:
- 有兩個集合A,B.取這兩個幾個所有組成情況
- 要完成多表查詢,需要消除無用的數據
- 多表查詢的分類:
- 內連接查詢:
- 外連接查詢:
1. 左外連接:查詢的是左表所有數據以及交集部分
select 字段列表 from 表1 left [outer] join 表2 on 條件;
select t1.*,t2.name from emp t1 left join dept t2 on t1.dept_id = t2.id;
2. 右外連接:查詢的是右表所有數據及其交集部分
select 字段列表 from 表1 right [outer] join 表2 on 條件;
select * from dept t2 right join emp t1 on t1.dept_id = t2.id;
- 子查詢:查詢中嵌套查詢,稱嵌套查詢爲子查詢
select * from emp where emp.salary = (select max(salary) from emp);
- 子查詢的結果是單行單列的:
子查詢可以作爲條件,使用運算符:> >= < <= =
查詢員工工資小於平均工資的人
select * from emp where emp.salary < (select avg(salary) from emp);- 子查詢的結果是多行單列的:
子查詢可以作爲條件,使用運算符:in
select * from emp where dept_id in(select id from dept where name in (‘財務部’,‘市場部’));- 子查詢的結果是多行多列
子查詢可以作爲一張虛擬表參與查詢
select * from dept t1,(select * from emp where emp.join_date > ‘2011-11-11’) t2 where t1.id = t2.dept_id;
普通內連接方法:
select * from emp t1,dept t2 where t1.dept_id = t2.id and t1.join_date > ‘2011-11-11’;