多表操作(DQL)

2021-10-09 11:01:25 字數 3655 閱讀 3371

多表操作dql

表之間的關係

合併結果集

連線查詢

子查詢表與表的關係

一對多:主外來鍵關聯並且外來鍵也是獨一無二

例如:一夫一妻制

husband_id

husband_name1張三

2李四3王五

wife_id

wife_name

husband_id1孫七

12周八2

3吳九3 wife表的外來鍵husband_id與husband表對應,對於一對一來說此外鍵不能重複

一對多:外來鍵可重複,設定外來鍵的表就是多的一方

student_id

student_name1張三

2李四3王五

textbook_id

textname

student_id

01數學書102

語文書1

03英語數111

數學書2

12語文書213

英語數2

21數學書322

語文書3

03英語數

3 乙個學生可以擁有多本書,但他的書只屬於他

多對多:兩表都需要重複,因此需要建立乙個關係表來設定外來鍵實現

student_id

student_name1張三

2李四course_id

course_name1語文

2數學student_id

course_id11

1221

22學生有多門課,乙個課也有多個學生,用第三張來設定外來鍵就可以實現這種多對多的關係

合併結果集

什麼是合併結果集

合併結果集的兩種方式

select * from 表1

union

select * from 表2;

select * from 表1

union

allselect * from 表2;

/*

兩個表的列數和資料型別要相同,

最終顯示的列名是表1的欄位名

*/

id

name1張三

2李四c_id

c_name3王五

4趙六合並後

idname1張三

2李四3王五

4趙六連線查詢

什麼是連線查詢

什麼是笛卡爾集

表1:id

name

1‍張三2李四

表2:class_id

class_name

student_id1一班

12二班2

執行:select * from 表1,表2;

結果:idname

class_id

class_name

student_id1張三

1一班1‍2

李四1一班1

1張三2二班

22李四2

二班2

多表聯查

篩選想要的資料

select * from 表1,表2 where 表1.id = 表2.student_id;

idname

class_id

class_name

student_id1張三

001一班12

李四002二班2

內連線

/* 等值連線,篩選出主外來鍵對應相等的 */

select * from 表1 inner join 表2 on 表1.id = 表2.student_id;

/* 多表 */

select * from 表1 ,表2 ,表 3

where 表1.*** = 表2.***and 表2.*** = 表3.***;/*------------------------*/

select * from 表1

inner join 表2 on 表1.*** = 表2.***inner join 表3 on 表2.*** = 表3.***

/* 非等值連線,篩選連線表時用不等號關聯 */

select * from 表1

inner join 表2 on 表1.*** = 表2.***where 表1.*** > 表2.***

/* 

自連線:當一張表中每行的記錄與其他記錄可能存在一定的關係

這個時候我們想要去查詢,與指定記錄有關係的所有記錄。

就需要自連線,當成兩張表然後對應關係連線使用

*/

select * from 表 a inner join 表 bon a.*** = *** and a.yyy = b.***;

外連線右連線

自然連線

student

student_id

name1張三

2李四3王五

score

course

score

student_id

語文501語文

602語文70

3 執行:select * from student natural join score;

student_id

name

course

score1張三

語文502李四

語文603王五

語文70

子查詢

什麼是子查詢

子查詢出現的位置

select * from studentwhere score > (select score from student where name = "張三");

勤學如春起之苗,不見其增,只有所長。輟學如磨刀之石,不見其增,日有所虧

MySql語句 DQL 多表查詢

子查詢1.出現的位置 2.條件 分類 兩表上下連線,共同顯示 分類 內連線 兩表相乘 笛卡爾積 笛卡爾積 外連線外連線分主次,左外以左為主,右外以右為主,主表的每一項都會顯示,無論是否滿足條件!當不滿足條件時,次表使用null來補位!左外連線左外 select from 表1 別名1 left ou...

JdbcTemplate的DQL操作公升級

新建乙個handler包,定義處理器的介面 結果集處理器,規範處理結果集的方法名稱 public inte ce resultsethandlert作為一種未知型別,表示處理完結果集,最後結果集就是該型別,型別由該方法的呼叫者決定 在daoimpl類中,實現上述介面 把結果集中的每一行資料封裝成pr...

mysql的多表操作 MySQL多表操作

交叉連線 交叉連線 cross join 又稱笛卡爾連線 cartesian join 或叉乘 product 它是所有型別內連線的基礎。它把表看作是行記錄的集合,交叉連線即返回這兩個集合的笛卡爾積。這其實等價於內連線的連線條件始終為 真 或連線條件不存在。笛卡爾積引用自數學,在數學中,兩個集合x和...