表連線查詢

2021-10-04 05:37:41 字數 2427 閱讀 6123

1.1 基本格式

select fieldname

from tbname1

連線符 tbname2

on 條件

1.2 笛卡爾乘積【避免】
-- 笛卡爾乘積,沒有約束條件,資料庫匹配發生相乘關係,結果也不是預期結果

-- 無意義結果

select employee_id, first_name

from t_employees

inner join t_jobs;

1.3 內連線查詢 inner join on兩張表
-- 查詢所有部門部門名,和對應的員工資訊id和first_name

select t_departments.department_name,

t_employees.employee_id,

t_employees.first_name -- 查詢內容

from t_employees -- 從員工表中查詢

inner join t_departments -- 內連線部門表

on t_employees.department_id = t_departments.department_id;

-- 條件限制員工表中的部門id = 部門表中的部門id

-- 查詢所有部門部門名,和對應的員工資訊id和first_name

-- 給予**乙個別名,方便使用

select d.department_name,

e.employee_id,

e.first_name -- 查詢內容

from t_employees e-- 從員工表中查詢

inner join t_departments d-- 內連線部門表

on e.department_id = d.department_id; -- 條件限制員工表中的部門id = 部門表中的部門id

1.4 內連線查詢 inner join on 四張表
-- 查詢所有員工對應的id號,名字,部門名稱,和國家對應名字

select te.employee_id, te.first_name, td.department_name, tc.country_name

from t_employees te

inner join t_departments td on te.department_id = td.department_id

inner join t_locations tl on td.location_id = tl.location_id

inner join t_countries tc on tl.country_id = tc.country_id;

1.5 內連線查詢 inner join on 五張表
-- 查詢所有員工對應的id號,名字,工作職稱,部門名稱,和國家對應名字

select te.employee_id, te.first_name, tj.job_title, td.department_name, tc.country_name

from t_employees te

inner join t_jobs tj on te.job_id = tj.job_id

inner join t_departments td on te.department_id = td.department_id

inner join t_locations tl on td.location_id = tl.location_id

inner join t_countries tc on tl.country_id = tc.country_id;

1.6 左外連線 left join on
-- 左外連線 左表是主表,要求左表完整顯示,右表匹配左表資料,如果右表沒有資料匹配,顯示null

-- 查詢所有的員工資訊id,first_ame,已經對應的部門名字

select te.employee_id, te.first_name, td.department_name

from t_employees te

left join t_departments td on te.department_id = td.department_id;

1.7 右外連線 right
-- 右外連線查詢,右表是主表,要求右表完整展示,左表匹配右表資料,如果左表沒有資料匹配,顯示null

-- 查詢所有部門對應員工資訊,員工資訊沒有顯示null

select td.department_name,te.employee_id, te.first_name

from t_employees te

right join t_departments td on te.department_id = td.department_id;

表連線查詢

內連線 inner join explain select count from base base inner join a a on base.id a.a id inner join b b on base.id b.b id 結果等同於 explain select count from b...

多表查詢(表連線)

insert into emp empno,ename,job values 8888,張三 clerk 1 內連線 等值連線 之前使用的都是等值連線 select e.empno,e.ename,e.job,d.deptno,d.dname,d.loc from emp e,dept d wher...

sql 表連線查詢

自連線查詢 要求查詢學生表中和吳剛同乙個 地的學生的所有訊息 select t1.from student1 t1,student1 t2 where t1.origin t2.origin and t2.name 吳剛 兩表間不等值連線查詢 select st.name st.birthday n...