MySQL的學習入門六

一、多表查詢

1.1 內連接

規則:返回兩個表的公共記錄。
語法:
1、select * from 表1 inner join 表2 on 表1.公共字段=表2.公共字段 (inner可以省略)
MySQL的學習入門五的測試數據基礎上,再添加如下測試數據代碼:

create table stuMarks (
  examNo char(7) primary key,
  stuNo varchar(6) not null,
  writtenExam int,
  labExam int
);

insert into stumarks values ('001','01', 80, 60);
insert into stumarks values ('002','05', 90, 55);
insert into stumarks values ('003','08', 88, 89);
insert into stumarks values ('004','09', 90, 92);

在這裏插入圖片描述
例題:
在這裏插入圖片描述
2、select * from 表1, 表2 where 表1.公共字段=表2.公共字段;
在這裏插入圖片描述

1.2 左外連接

規則:以左邊的表爲準,右邊如果沒有對應的記錄,顯示null
語法:select * from 表1 left join 表2 on 表1.公共字段=表2.公共字段;
在這裏插入圖片描述

1.3 右外連接

規則:以右邊的表爲準,左邊如果沒有對應的記錄,顯示null
語法:select * from 表1 rightjoin 表2 on 表1.公共字段=表2.公共字段;
在這裏插入圖片描述

1.4 交叉連接

語法:select * from 表1 cross join 表2 on 條件字段;
返回笛卡爾積。
在這裏插入圖片描述
在這裏插入圖片描述
小結:
1、交叉連接如果沒有連接條件返回笛卡爾積
2、如果有連接條件和內連接是一樣的

1.5 自然連接

自動判斷條件連接,判斷的條件是依據同名字段
1、自然內連接(natural join)
在這裏插入圖片描述
2、自然左外連接(natural left join)
在這裏插入圖片描述

3、自然右外連接(natural right join)
在這裏插入圖片描述

小結:
1、表連接是通過同名字段來連接的
2、如果沒有同名字段則返回笛卡爾積
3、同名的連接值顯示一個,並且將該字段放在最前面

1.5.1 using

using用來指定連接字段,using也會做公共字段的優化,優化的規則和自然連接的是一樣的。
例:
在這裏插入圖片描述

1.6 練習

1、顯示地區及每個地區參加考試(writtenExam(筆試))的人數,並按人數降序排列:
在這裏插入圖片描述
在這裏插入圖片描述
2、顯示有學生參加考試的地區
在這裏插入圖片描述

3、顯示男生和女生的人數
方法一,分組查詢:
在這裏插入圖片描述
方法二,union:
在這裏插入圖片描述
方法三,直接寫條件:
在這裏插入圖片描述

4、顯示每個地區男生、女生、總人數
在這裏插入圖片描述

二、子查詢

語法:select * from 表1 where (子查詢)
外面的查詢稱爲父查詢
子查詢爲父查詢提供查詢條件

2.1 標量子查詢

特點:返回的結果是一個。
例題:查找筆試成績是88的學生:
在這裏插入圖片描述

2.2 列子查詢

如果標量子查詢的結果返回多條記錄,不能使用等於,用in 或 not in。
特點:列子查詢的返回結果是一列。

1、查找筆試成績大於80的同學:
在這裏插入圖片描述

2.3 行子查詢

特點:子查詢返回的結果是多個字段組成

1、找出語文成績最高的男生和女生
在這裏插入圖片描述

2.4 表子查詢

特點:將子查詢的結果作爲表

1、找出語文成績最高的男生和女生

在這裏插入圖片描述
注意:from後面跟的是數據源,如果將子查詢當成表來看,必須給結果集取別名。

2.5 exists 子查詢

1、如果筆試成績有人超過90分,就顯示所有學生信息:
在這裏插入圖片描述
2、如果筆試成績沒有人超過90分,就顯示所有學生信息:
在這裏插入圖片描述

在學習的MySQL的路上,如果你覺得本文對你有所幫助的話,那就請關注點贊評論三連吧,謝謝,你的肯定是我寫博的另一個支持。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章