一、數據庫設計
1、三個數據表長這樣





其中user表記錄用戶信息,cat主要記錄男女性別,mete表是用戶id和性別id的對應關系

2、具體數據如下


二、查詢目標
查詢出所有性別為“男”的用戶的“姓名”,如下記錄兩種不同形式的查詢
1、單純的條件查詢
SQL:
select user.value from user where user.uid in (select mete.uid from mete where mete.cid=1)
結果:


語句解釋:
先使用select mete.uid from mete where mete.cid=1語句在mete表中,查找到所有“男”的uid(這里默認我們已經知道cid=1代表男性),再通過條件查詢,與上句查詢結果進行比對,從而顯示出user表中的所有男性名字。
2、使用連接查詢,條件顯示所有用戶的姓名和對應的性別
SQL:
select U.value,C.value from mete as M join cat as C on C.cid=M.cid join user as U on U.uid=M.uid
結果:


語句解釋:使用到了內聯查詢,只輸出包含連接條件的數據行,從左往右看,可以理解為先將mete表與cat表連接,通過條件C.cid=M.cid,形成了一個性別類型匹配的新表,新表再和user表連接,通過U.uid=M.uid ,形成了一個姓名匹配的表,此時這三張表就聯合形成了一個性別類型、名稱類型一一對應的表,長得是這樣,


再通過select語句,選出了我們想要的姓名和性別對應的表。
注:如上是內聯查詢,只輸出滿足所有條件的數據,也可以通過外聯查詢,不對數據過濾,只對數據組合的新表
SQL:
select * from mete as M left join cat as C on C.cid=M.cid left join user as U on U.uid=M.uid
語句解釋:在join前加left/right,則可以使用外聯查詢,不同的是連接的表組和后輸出左表(右表)中不符合條件的記錄,如下

