一.多表查詢:
1.* 查詢語法:
select
列名列表
from
表名列表
where…
* 準備sql
2. 例:select * from 表1, 表2
若1表有5 行資料,而2表有3行資料,就會查詢出來15行資料
這遵循了笛卡爾積準則
3.要完成多表查詢,需要消除無用的資料
二.* 多表查詢的分類:
1. 內連線查詢:
隱式內連線:使用where條件消除無用資料
* 例子:
– 查詢所有員工資訊和對應的部門資訊
select * from emp,dept where emp.dept_id
= dept.id
;
– 查詢員工表的名稱,性別。部門表的名稱
select emp.name,emp.gender,dept.name from emp,dept where emp.dept_id
= dept.id
;
select
t1.name, – 員工表的姓名
t1.gender,-- 員工表的性別
t2.name – 部門表的名稱
from
emp t1,
dept t2
where
t1.dept_id
= t2.id
;
顯式內連線:
* 語法: select 字段列表 from 表名1 [inner] join 表名2 on 條件
* 例如:
* select * from emp inner join dept on emp.dept_id
= dept.id
;
* select * from emp join dept on emp.dept_id
= dept.id
;
3.使用內連線查詢的基本思維邏輯:
從哪些表中查詢資料
條件是什麼
查詢哪些字段
左外連線:
* 語法: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
;
右外連線:
* 語法:select 字段列表 from 表1 right [outer] join 表2 on 條件;
* 查詢的是右表所有資料以及其交集部分。
* 例子:
select * from dept t2 right join emp t1 on t1.dept_id
= t2.id
;
當右外連線的兩表交換位置時,查詢的結果與左外連線相同
子查詢:
* 概念:查詢中巢狀查詢,稱巢狀查詢為子查詢。
– 查詢工資最高的員工資訊
– 1 查詢最高的工資是多少 9000
select max(salary) from emp;
– 2 查詢員工資訊,並且工資等於9000的
select * from emp where emp.salary
= 9000;
– 一條sql就完成這個操作。子查詢
select * from emp where emp.salary
= (select max(salary) from emp);
子查詢的結果是多行多列的:
* 子查詢可以作為一張虛擬表參與查詢
*子查詢作為表需要取別名,否則這張表沒有名稱則無法訪問表中的字段
– 查詢員工入職日期是2011-11-11日之後的員工資訊和部門資訊
– 子查詢
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』
子查詢小結
子查詢結果只要是單列,則在 where 後面作為條件
子查詢結果只要是多列,則在 from 後面作為表進行二次查詢
多表查詢 多表查詢 多表查詢
查詢語法 select 列表名稱 from 表明列表 where 笛卡爾積 有兩個集合a,b,取這兩個集合的所有組成情況 要完成多表查詢,需要消除無用的資料 多表查詢分類 1 內連線查詢 1 隱式內連線 使用where消除無用的資料 例子 select t1.name,t1.gender,t2.na...
查詢 多表查詢。。。
此時你得使用鏈結條件。通過存在於相對應列中的公共值,乙個表中的資料可以被另乙個表的資料鏈結,通常都是主鍵和外來鍵進行鏈結。一般鏈結條件寫在where子句裡。select empno,emp.deptno,loc from emp,dept where emp.deptno dept.deptno 對...
mysql 多表查詢or MySQL 多表查詢
前期準備 建表create table dep id int,name varchar 20 create table emp id int primary key auto increment,name varchar 20 enum male female not null default ma...