日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql交叉查询教程_史上最简单的 MySQL 教程(二十六)「连接查询(上)」

發布時間:2025/3/15 数据库 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql交叉查询教程_史上最简单的 MySQL 教程(二十六)「连接查询(上)」 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

連接查詢連接查詢:將多張表(大于等于 2 張表)按照某個指定的條件進行數據的拼接,其最終結果記錄數可能有變化,但字段數一定會增加。

連接查詢的意義:在用戶查詢數據的時候,需要顯示的數據來自多張表。

連接查詢為join,使用方式為:左表join右表。

左表:join左邊的表;

右表:join右邊的表。

連接查詢分類:在 SQL 中將連接查詢分為四類,分別為內連接、外鏈接、自然連接和交叉連接。

交叉連接交叉連接:cross join,從一張表中循環取出每一條記錄,每條記錄都去另外一張表進行匹配,匹配的結果都保留(沒有條件匹配),而連接本身的字段會增加,最終形成的結果為笛卡爾積形式。

基本語法:左表 cross join 右邊;

其結果與多表查詢相同。

執行如下 SQL 語句,進行測試:

-- 將表 student 與 class 進行交叉連接

select * from student cross join class;

-- 將表 student 與 class 進行多表查詢

select * from student,class;

實際上,笛卡爾積形式(交叉連接和多表查詢)的結果并沒有什么實際意義,應該盡量避免,其存在的價值就是保證連接這種結構的完整性。

內連接內連接:inner join,從左表中取出每一條記錄,和右表中的所有記錄進行匹配,并且僅當某個條件在左表和右表中的值相同時,結果才會保留,否則不保留。

基本語法:左表 + [inner] + join + 右表 + on + 左表.字段 = 右表.字段;

其中,關鍵字on表示連接條件,兩表中的條件字段有著相同的業務含義。

執行如下 SQL 語句,進行測試:

-- 將表 student 與 class 進行內連接

select * from student inner join class on student.grade = class.grade;

select * from student join class on student.grade = class.grade;

在這里,值得注意的是:如果兩表中有某個表的條件字段名唯一,那么在書寫連接條件的時候,可以省略表名,直接書寫字段名,MySQL 會自動識別唯一字段名,但不建議這么做。此外,咱們會發現,在上面的結果中有同名字段,這會給咱們理解數據的意義造成一定的困擾,這時就需要使用字段別名和表別名做區別啦!

執行如下 SQL 語句,進行測試:

-- 將表 student 與 class 進行內連接,起別名

select s.*,c.id as c_id,c.grade as c_grade,room from student as s inner join class as c on s.grade = c.grade;

最后,內連接可以沒有連接條件,即可以沒有on及之后的內容,這時內連接的結果全部保留,與交叉連接的結果完全相同。而且在內連接的時候可以使用where關鍵字代替on,但不建議這么做,因為where沒有on的效率高。

執行如下 SQL 語句,進行測試:

-- 將表 student 與 class 進行內連接,不加連接條件

select s.*,c.id as c_id,c.grade as c_grade,room from student as s inner join class as c;

-- 將表 student 與 class 進行交叉連接

select s.*,c.id as c_id,c.grade as c_grade,room from student as s cross join class as c;

-- 使用 on 關鍵字進行內連接

select s.*,c.id as c_id,c.grade as c_grade,room from student as s inner join class as c on s.grade = c.grade;

-- 使用 where 關鍵字進行內連接

select s.*,c.id as c_id,c.grade as c_grade,room from student as s inner join class as c where s.grade = c.grade;

溫馨提示:符號[]括起來的內容,表示可選項;符號+,則表示連接的意思。

———— ☆☆☆ —— 返回 -> 史上最簡單的 MySQL 教程

總結

以上是生活随笔為你收集整理的mysql交叉查询教程_史上最简单的 MySQL 教程(二十六)「连接查询(上)」的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。