資料庫表的連線查詢 子查詢

2021-07-27 03:37:31 字數 1623 閱讀 4179

語法:select * from 表1 cross join 表2;

例如:select * from offices cross join users;

語法:

select 需要查詢的列名列表

from 表1

join 表2 on 表1.關聯列名= 表2.關聯列名;

例如:select users.uid,users.uname,offices.name

from users

join offices on users.oid=offices.id;

左連線語法:

select 需要查詢的列名列表

from 表1

left join 表2 on 表1.關聯列名= 表2.關聯列名;

顯示結果中包含匹配的所有資料和左邊表1中不匹配的所有資料,不匹配列顯示為null。

右連線語法:

select 需要查詢的列名列表

from 表1

right join 表2 on 表1.關聯列名= 表2.關聯列名;

顯示結果中包含匹配的所有資料和右邊表2中不匹配的所有資料,不匹配列顯示為null。

使用in關鍵字進行子查詢:該查詢in後面返回的是資料集合,將集合的資料作為in前面查詢的運算元據。

語法:select 欄位名列表 from 表名 where 欄位名 in(select 欄位名 from 表名 where 條件|欄位名 in(...));

使用exists進行測試查詢:會先判斷exists中查詢結果是否為true(即是否存在),為true才執行前面的查詢,為false就不執行。exists後面的子查詢不會產生任何資料,只會返回true或false。

語法:select 欄位名列表 from 表名 where exists(select 欄位名 from 表名 where 條件|欄位名 in(...));

使用any進行子查詢:前面查詢的條件可以和any結果集合的條件一一比較,只要滿足條件就執行前面的查詢返回結果。

語法:select 欄位名列表 from 表名 where 欄位名 比較運算子 any(select 欄位名 from 表名 where 條件|欄位名 in(...));

例如:select name from users where age > any(select age from users);

使用all進行子查詢:all要求全部滿足條件才執行前面的查詢。

語法:select 欄位名列表 from 表名 where 欄位名 比較運算子 all(select 欄位名 from 表名 where 條件|欄位名 in(...));

注:any和all之前可以使用比較運算子,返回的是資料集合:>,(!=),>=,<=,=。

使用union聯合結果集:合併兩個或者多個select語句的結果集,union all表示合併時允許重複的值。並且聯合後的結果集的列名總是等於union中第乙個select語句中的列名。

mysql資料庫 多表查詢(表連線查詢

交叉連線的結果為笛卡爾積,所有連線方式都會先臨時生成笛卡爾積表。語法格式 select 查詢字段 from 表一 corss join 表二 nysql預設的連線方式為內連線。語法格式 select 查詢字段 from 表一 inner join 表二 on 表一.關係字段 表二.關係字段 wher...

Jdbc資料庫連線查詢表

data reportdemo.mdb connection conn drivermanager.getconnection url,statement stmtnew conn.createstatement 9 firebird url jdbc firebirdsql host name p...

資料庫多表查詢 子查詢

子查詢 查詢中巢狀查詢,稱巢狀巢狀查詢為子查詢 下面要使用的表如下,放在此處便於更好地理解 emp 員工資訊表 dept 部門表 例 查詢公司員工工資最高的員工資訊 首先要得到公司員工的最高工資的值 select max salary from emp 假設查詢結果為10000然後根據上一句sql語...