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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MySql的连接查询

發布時間:2023/12/9 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySql的连接查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

若一個查詢同時涉及到兩個或者兩個以上的表,則稱之為連接查詢。常見的包括:等值連接查詢,自然連接查詢,非等值連接查詢,自身連接查詢,外連接查詢(左右連接)。

1.等值與非等值連接查詢(內連接)。

(等值連接的圖)

?

參考表數據庫表:

(表1與表2做了外鍵關聯)

等值連接概念:當連接運算符為=時為等值連接,相當于兩表執行笛卡爾后,取兩表連結列值相等的記錄。

查詢語句:

SELECT A.*, B.*
FROM student A INNER JOIN sc B
ON A.`sno`=B.`sno`;

另外一種寫法:

SELECT student.* ,sc.*
FROM student , sc
WHERE student.`sno` = sc.`sno`;

兩種寫法除了語法上的差別,沒有明顯差距,主要方便了解。看了大多數博客上寫的都是第一次,可能有一定優劣,有興趣的可以自己去百度下。

查詢結果都是一樣:

非等值連接概念:連接規則由等號以外的運算符組成。>,=,<,,>=,<=,<>,!=,between等。

這里只使用大于號">"比較兩個表的連接列的值,相當于兩表執行笛卡爾后,取一個表大于另一個表的連結列值的記錄。(這兩個表查詢的結果并沒有太大的意義,只是為了方便理解概念)

查詢語句:

SELECT A.*, B.*
FROM student A INNER JOIN sc B
ON A.`sno`>B.`sno`;

另外一種寫法:

SELECT student.* ,sc.*
FROM student , sc?
WHERE student.`sno` >sc.`sno`;

查詢的結果仍然一樣:

自然連接:在等值連接中把重復的屬性列去掉則為自然連接。(自然連接并不是自連接,兩者要有一定區分度)

查詢語句(仍然是兩種寫法,不過我懶的copy了 -_-):

SELECT student.* ,sc.`cno`,sc.`grade`
FROM student , sc
WHERE student.`sno` = sc.`sno`;

查詢結果:

?

2.外連接(左右連接)

左連接概念:指將左表的所有記錄與右表符合條件的記錄,返回的結果除內連接的結果,還有左表不符合條件的記錄,并在右表相應列中填NULL。

?

查詢語句:

SELECT student.*,sc.`cno`,sc.`grade`
FROM student LEFT JOIN sc
ON student.`sno`=sc.`sno`;

?

右外連接:指將右表的所有記錄與左表符合條件的記錄,返回的結果除內連接的結果,還有右表不符合條件的記錄,并在左表相應列中填NULL。(畫圖功底太low,就不多此一舉了 -_-)

查詢語句:

SELECT student.*,sc.`cno`,sc.`grade`
FROM student RIGHT JOIN sc
ON student.`sno`=sc.`sno`;

?

這里要提示一下:

on和where條件的區別如下:

1、?on條件是在生成臨時表時使用的條件,它不管on中的條件是否為真,都會返回左邊表中的記錄。

2、where條件是在臨時表生成好后,再對臨時表進行過濾的條件。

而inner jion(內連接)沒這個特殊性,則條件放在on中和where中,返回的結果集是相同的。

?

3.自身連接(自連接)

自身連接概述:連接操作不僅可以在兩個表之間進行,也可以是一個表與其自己進行連接,成為表的自身連接,也就是所謂的自連接。

自連接查詢其實等同于連接查詢,需要兩張表,只不過它的左表(父表)和右表(子表)都是自己。做自連接查詢的時候,是自己和自己連接,分別給父表和子表取兩個不同的別名,然后附上連接條件。

這里以一個課程的數據庫表來做實例。

查詢語句:

SELECT a.*,b.name
FROM SUBJECT a , SUBJECT b
WHERE a.`pno`=b.`cno`;

查詢結果:

有些課程沒有先行課,因此我們可以用左關聯結合自連接來查詢,便于觀察。

查詢語句:

SELECT a.*,b.name
FROM SUBJECT a LEFT JOIN SUBJECT b
ON a.`pno`=b.`cno`;

查詢結果:

?

轉載于:https://www.cnblogs.com/ITSeed/p/11167226.html

總結

以上是生活随笔為你收集整理的MySql的连接查询的全部內容,希望文章能夠幫你解決所遇到的問題。

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