mysql 高階 查詢 MYSQL中的高階查詢

2021-10-17 15:18:37 字數 1567 閱讀 6743

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後面的表示式,不一定為=,也可以》,

問題:列出所有房屋的完整資訊,資訊包括:房屋資訊和該房屋目前住的人的資訊。

1.1.5. 右連線

a left join b 等價於 b right join a

推薦使用左連線代替右連線

MYSQL中的高階查詢

找到雙人間的 根據第一步找到的 作為查詢條件去查滿足條件的房屋型別,利用where字句 子查詢是乙個巢狀在 select insert update 或 delete 語句或其他子查詢中的查詢 子查詢在where語句中的一般用法 將子查詢和比較運算子聯合使用 注意 子查詢返回的資料列有且僅能有一列 ...

Mysql高階查詢

if expr1,expr2,expr3 如果 expr1 是true 則 if 的返回值為expr2 否則返回值則為 expr3。如 select if status 0 and status promotion 1,1,2 as status from my table ifnull expr1...

mysql 高階查詢

1 巢狀子查詢和相關子查詢 子查詢 1 乙個詢語句中還包含其他查詢。其中包含其他查詢的查詢叫父查詢,被包含的查詢叫子查詢。2 子查詢也可以和update insert delete一起使用,語法類似於select語句 3 子查詢中可以再包含子查詢,即允許多層巢狀。select from studen...