【Mysql】利用內串連與巢狀查詢實現多表查詢,主鍵、外鍵的基本概念

來源:互聯網
上載者:User

標籤:多表查詢   內串連   主鍵   外鍵   巢狀查詢   

雖然多表查詢,在電腦的必須課,資料庫,裡面已經大講特講,但是這個痛點很多老師都沒有講深講透。跟你淨扯一大堆,左串連右串連的東西,讓人一頭霧水。老師把所有多表查詢的方法告訴你,但是到頭來一種方法都沒有掌握。其實只要記住一種就夠了,學會多表查詢,除了在你考資料庫能夠拿到很高分之外,到了實際應用,很多地方都用到多表查詢。比如論壇工程中分析回帖發帖的關係,提供該使用者發了什麼文章的功能、比如資訊管理系統中,分析班級與學生、老師之間的關係,提供該班級中存在多少學生的查詢功能。就需要用到多表查詢,你總不能把每一表都弄到如同視圖一般,然後關係表不要把?說到地就是如何建立不同的視圖給不同攻城獅使用,下面使用MYSQL舉個例子說明,如何利用內串連與巢狀查詢,實現多表查詢。其實所有資料庫都一樣,SQL語句是通用的。


一、基本目標

已知,在test資料庫,可自行腦補為school資料庫,中存在如下表:

(1)學生表i_student,裡面記錄著該學校所有學生的資料,表示該學校中有3個學生a,b,c


(2)班級表i_class,裡面記錄著該學校所有班級的資料,表示該學校中有2個學生1,2


(3)班級-學生關係表i_class_student,裡面記錄著該學校所有班級與學生的對應關係,表示該學校中1班有學生1,2,2班有學生3


然後問題來了,求1班中有哪些學生?怎麼用SQL語句查詢?


二、基本思想

其實這三張表有如下簡單的關係:


班級-學生關係表i_class_student的class_id資料取自班級表i_class的主鍵id,班級-學生關係表i_class_student的student_id資料取自學生表i_student的主鍵id,存在一個所謂的“參照完整性”,上面的那個箭頭就是外鍵嘛。其餘表中的鑰匙表徵圖就是主鍵嘛,每一個表的ID列存在所謂的“實體完整性”嘛,也就是說ID列數字不能再出現第二次或許不能不填,也就所謂的唯一且非空。


三、製作過程

1、基於上面的分析,你可以先對班級-學生關係表i_class_student下手,使用如下的語句:

select student_id from i_class_student where class_id=1

查出1班轄下的所有student_id

2、再對學生表i_student下手,根據找出這些student_id對應的學生名字就行了嘛,這裡要把上面的查詢結果,與整張學生表i_student中的ID列與姓名列name連起來再查詢。首先你要有張學生表i_student的ID列與姓名列name。雖然現在整張學生表i_student中的ID列與姓名列name就是整張學生表i_student,但是實際中學生表i_student往往不止存兩列資訊。通過一句簡單得不能再簡單,凡是學過資料庫都必須知道的語句查出整張學生表i_student中的姓名列name:

select id,name from i_student
查詢結果如下:


3、設第一步的查詢結果為t1,第二步的查詢結果為t2,把t1與t2兩張表串連起來,只存在保留id與student_id對應的結果,就得到最後的結果:


所以同樣把第一步的查詢語句與第二步的查詢語句,加條件地內串連起來,便得到如下的查詢語句,但此時我們無需再查詢學生表i_student的id了,這個id只作比對作用,可以把第二步的查詢語句中的id去掉,

select name from i_student as t1 INNER JOIN (select student_id from i_class_student where class_id=1) as t2 where t1.id=t2.student_id
也自然而然地得到正確的結果:

班級1不正是有a,b兩個學生嗎?

【Mysql】利用內串連與巢狀查詢實現多表查詢,主鍵、外鍵的基本概念

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.