數(shù)據(jù)庫 - 多表查詢

多表查詢

關聯(lián)關系

  • 創(chuàng)建表格時,表與表之間是存在業(yè)務關系的。

有哪些

  • 1對1 :有AB兩張表,A表中1條數(shù)據(jù)對應B表中1條,同時,B表中1條數(shù)據(jù)對應A表1條。
  • 1對多:有AB兩張表,A表中1條數(shù)據(jù)對應B表中多條,同時,B表中1條數(shù)據(jù)對應A表1條
  • 多對多:有AB兩張表,A表中1條數(shù)據(jù)對應B表中多條,同時,B表中1條數(shù)據(jù)對應A表多條

關聯(lián)查詢

  • 同時查詢多張表的數(shù)據(jù),查詢方式稱為關聯(lián)查詢。
  • 關聯(lián)查詢必須寫關聯(lián)關系

關聯(lián)查詢的方式

1.交叉連接

  • 如果不寫關聯(lián)關系的話,則會得到兩張表數(shù)據(jù)量的乘積,這個乘積被稱為笛卡爾積,在工作中要避免出現(xiàn)。
  • 關鍵字:cross join
  • 書寫格式:
select * from 表1 cross join 表2;
  • 案例分析:
select * from emp cross join dept;

2.等值查詢

  • 書寫格式:
select 字段信息 
from 表1,表2 
where 關聯(lián)關系 
and 其他條件;

關聯(lián)關系:查詢的數(shù)據(jù)需要滿足這個條件,如果不滿足的話將不會被查詢到

  • 案例分析:
  1. 查詢每個員工的姓名和對應的部門名
select e.ename,e.deptno,d.deptno,d.dname
from emp e,dept d
where e.deptno = d.deptno;
  1. 查詢1號部門的員工姓名,工資,部門名,部門地址
select e.ename,e.sal,d.ename,d.loc
from emp e,dept d
where e.deptno = d.deptno
and e.deptno=1;

3.內連接(建議使用)

  • 內連接所查詢到的數(shù)據(jù)時兩個表或多個表的交集,即符合查詢關聯(lián)關系的數(shù)據(jù)

  • 關鍵字:inner join

  • 書寫格式

select 字段信息
from 表1 [inner] join 表2
on 關聯(lián)關系
where 條件 ;
  • 案例分析:
  1. 查詢每個員工的姓名和對應部門的名稱
select e.ename,d.dname
from emp e join dept d
on e.deptno = d.deptno;
  1. 查詢1號部門的員工姓名,工資,部門名,部門地址
select e.ename,e.sal,d.dname,d.loc
from emp e join dept d 
on e.deptno = d.deptno
where d.deptno =1;

4.外連接

左連接(建議使用)

  • 返回的結果包括左表中的全部數(shù)據(jù)和右表中滿足連接條件(關聯(lián)關系)的數(shù)據(jù)
  • 關鍵字:left join
  • 書寫格式:
select 字段信息
from 表1 left join 表2
on 關聯(lián)關系
where 條件;
  • 案例分析:
insert into emp(empno,ename) values(100,"滅霸");

查詢所有員工姓名和對應的部門信息

select e.ename,d.deptno,d.dname,d.loc
from emp e left join dept d
on e.deptno = d.deptno;

右連接

  • 返回的結果包括右表中的全部數(shù)據(jù)和左表中滿足連接條件(關聯(lián)關系)的數(shù)據(jù)
  • 關鍵字:right join
  • 書寫格式:
select 字段信息
from 表1 right join 表2
on 關聯(lián)關系
where 條件;
  • 案例分析:

查詢所有部門的名稱和對應的員工名

select d.dname,e.ename
from emp e right join dept d
on e.deptno = d.deptno;

注意事項:

  • 等值查詢,內連接查詢,外連接查詢的功能是一樣,建議大家使用內連接,外連接;
  • 等值查詢 關聯(lián)關系使用:where 關聯(lián)關系
  • 內連接,外連接關聯(lián)關系使用:on 關聯(lián)關系

總結:

  • 三種查詢方式:等值查詢,內連接,外連接
  • 如果需要查詢兩張表的交集數(shù)據(jù)使用等值查詢和內連接(推薦)
  • 如果查詢一張表的全部數(shù)據(jù)和另一張表的交集數(shù)據(jù)則使用外連接(推薦使用左連接)
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 數(shù)據(jù)庫的概述 1.數(shù)據(jù)庫的作用:倉庫,存儲數(shù)據(jù)。 2.關系型的數(shù)據(jù)庫,保存實體與實體之間的關系。 3.常見的數(shù)據(jù)庫...
    三萬_chenbing閱讀 959評論 0 3
  • 今日任務 完成對MYSQL數(shù)據(jù)庫的多表查詢及建表的操作 教學目標 掌握MYSQL中多表的創(chuàng)建及多表的查詢 掌握MY...
    majorty閱讀 1,616評論 0 0
  • 一、關聯(lián)查詢 1.關聯(lián)查詢select 表1的字段名,表2的字段名 from 表1 [別名1],表2 [別名2] ...
    咸魚有夢想呀閱讀 470評論 0 1
  • 當我們對一個按照范式設計的數(shù)據(jù)庫進行數(shù)據(jù)查詢時,我們勢必會需要面對查詢的數(shù)據(jù)分布在不同但是有關聯(lián)的數(shù)據(jù)表中的情況。...
    Tobebold閱讀 356評論 0 1
  • 1、笛卡爾積現(xiàn)象,即交叉相乘 多表進行聯(lián)合查詢,不使用關聯(lián)條件的話,就會產生笛卡爾積現(xiàn)象,產生很多重復無用的數(shù)據(jù)。...
    Kerwin_chyl閱讀 266評論 0 0

友情鏈接更多精彩內容