1.1. 子查詢
1.1.1. 在房屋類型中,如何找出比雙人間貴的所有房屋類型?

- 找到雙人間的價格
- 根據第一步找到的價格作為查詢條件去查滿足條件的房屋類型,利用Where字句

子查詢是一個嵌套在 SELECT、INSERT、UPDATE 或 DELETE 語句或其他子查詢中的查詢
子查詢在WHERE語句中的一般用法:
將子查詢和比較運算符聯合使用
注意:子查詢返回的數據列有且僅能有一列;若判斷條件不為in的時候,則子查詢只能返回有且只有一行數據,若是in的話子查詢可以返回多行數據。
子查詢的執行過程是:
首先,執行小括號中的子查詢,返回的結果是所有來自子查詢的結果
其次,才開始執行外圍的父查詢,返回查詢的最終結果

1.1.2. 查出價格在100-300的房間有哪些?
第一步:查出價格在100到300之間的房屋類型
第二部:依據第一步得到的結果作為條件,在房間表中查出這些房間類型的房屋有哪些?
1.2. 連接查詢
在數據庫應用中,若需要從多張表中通過某一些組合條件查詢出我們需要的結果,此時就需要表連接查詢。
在MySQL中,連接查詢包括:
- INNER JOIN(內連接,或等值連接):獲取兩個表中字段匹配關系的記錄。
- LEFT JOIN(左連接):獲取左表所有記錄,即使右表沒有對應匹配的記錄。
- RIGHT JOIN(右連接): 與 LEFT JOIN 相反,用於獲取右表所有記錄,即使左表沒有對應匹配的記錄。
1.1.3. 內連接:
查詢結果是左右連接的交集,【即左右連接的結果去除null項后的並集(去除了重復項)】
語法為:SELECT 字段1,字段2 from 表1
Inner join 表2 on 表1.字段1 = 表2.字段2 where 條件
等價於:
Select 字段1,字段2 from 表1 , 表2
Where表1.字段1 = 表2.字段2 and 條件
其中on之后的條件為表1和表2關聯的條件。
問題1:查詢所有狀態為正常可用的房屋(房屋號、類型名稱、狀態名稱,床位,價格)
問題2:查詢出所有狀態為正常可用且價格低於500的房屋
1.1.4. 左連接
以左表為准,去右表找數據,如果沒有匹配的數據,則以null補空位,所以輸出結果數>=左表原數據數
左右表區分:在語句前面的為左表,后面的為右表。
語法:select n1,n2,n3 from ta left join tb on ta.n1= ta.n2 [這里on后面的表達式,不一定為=,也可以>,<等算術、邏輯運算符]【連接完成后,可以當成一張新表來看待,運用where等查詢】
問題:列出所有房屋的完整信息,信息包括:房屋信息和該房屋目前住的人的信息。
1.1.5. 右連接
a left join b 等價於 b right join a
推薦使用左連接代替右連接
