1. 程式人生 > >MySQL連線查詢 內連線和外連線的區別

MySQL連線查詢 內連線和外連線的區別

MySQL 連線查詢

  • @ sunRainAmazing

1.使用連線查詢的場景

將多張表進行記錄的連線查詢(按照某個欄位指定的條件進行資料的拼接);
    進行資料的拼接(兩張表的內容顯示在一個結果表中  使用連線查詢)
    最終的結果是:記錄數有可能變化,欄位數一定會增加(至少兩張表的合併)

    意義:在使用者檢視資料的時候,顯示的資料來自於多張表

連線查詢的分類 4類

內連線 inner join

內連線 【掌握】  ---拼接查詢結果
    內部有聯絡,使用內連線
    格式: [inner] join  ----inner可省
    結果:
        從左表中取出每一條記錄,去右表中與所有的記錄進行匹配;
        匹配必須是某個條件是左表中與右表中相同,才會保留結果,否則不保留;
    基本語法:
        左表 [inner] join 右表 
            on
左表.欄位 = 右表.欄位; 注意事項: 1on 表示連線條件;條件欄位代表相同的業務含義 (如 stu.cid 和 cla.id) 學生stu表中的班級cid 和 班級cla表中的id 2、內連線可以沒有連線條件,沒有on之後的內容, 這時候系統會保留所有結果(笛卡爾集) 3、內連線可以使用where 代替 on 通常不用where,因為where沒有on效率高 on
指匹配到第一條成功的就結束,其他不匹配; 若沒有,不進行匹配 而where會一直匹配,進行判斷 4、通常使用欄位別名 表別名 在查詢資料的時候,不同表有同名欄位, 這時候需要加上表名才能區分, 而若表名太長,使用表別名 若不想使用預設的欄位名 可以通過[as] 設定欄位別名

外連線

外連線 【掌握】--以某一張表為基表 進行相關查詢
        outer  join
以某張表為主,取出裡面的所有記錄, 然後每條與另外一張表進行連線, 不管能不能匹配上條件,最終都會保留, 能匹配,正確保留; 不能匹配其他表的欄位都置空null 分類:分為兩種 左連線,右連線 left join 左外連線---左連線,以左表為主 right join 右外連線---右連線,以右表為主 基本語法: 左表 left/right join 右表 on 左表.欄位 = 右表.欄位;------條件必須有

交叉連線

交叉連線【幾乎不用】
        基本不用這個連線查詢
        cross join:從一張表中迴圈取出每一條記錄,
        每條記錄都會去另一張表中進行匹配;
        匹配結果一定保留(無條件匹配)------笛卡爾集;
        而連線就會增加(保留),形成的結果就是笛卡爾集;

        基本語法:
            左表  cross  join  右表; 
            等價於 from 左表,右表;------沒有條件

        笛卡爾集沒有意義,應該儘量避免(交叉連線沒用)
        存在的價值:
            保證連線的結構的完整性

自然連線

自然連線【很少用】
     natural join 自然連線  就是系統自動匹配連線條件
    系統以欄位名字作為匹配模式(同名欄位作為欄位,多個同名欄位都作為條件)
    自然連線:可以分為 自然內連線 和 自然外連線
    內連線  natural left join  自然左外連線 

    其實:內連線和外連線都可以模擬自然連線,使用同名欄位,合併欄位
    左表  left/ right  inner  join 右表 on   using(欄位名)
        -----使用同名欄位,合併欄位

    --自然內連線 
    select * from stu natural join cla;

    --自然左外連線
    select * from stu natural left join cla;

    --外連線模擬自然左外連線
    select * from stu left join cla using(id);

相關推薦

關於區別

關於內網和外網 網上經常看到有人問內網和外網的區別,其實外網和內網的概念很模糊,全看你怎麼理解。希望這篇文章能幫助大家明確一些概念。 簡單的說,自己的單位或者家庭、小區內部有區域網;單位、家庭之外有覆蓋範圍極大的網路,比如internet,這個大網路延伸

MySQL連線查詢 連線連線區別

MySQL 連線查詢 @ sunRainAmazing 1.使用連線查詢的場景 將多張表進行記錄的連線查詢(按照某個欄位指定的條件進行資料的拼接); 進行資料的拼接(兩張表的

mysqlmysql連線連線小例子

解釋名詞: 1、內連線(自然連線): 只有兩個表相匹配的行才能在結果集中出現 2、外連線: 包括 (1)左外連線(左邊的表不加限制) (2)右外連線(右邊的表不加限制) (3)全外連線(左右兩表都不加限制) 3、建立student、score表如下        

Mysql學習筆記2-連線連線

本節以學生和課程表為例子,來實際操作一下內連線和外連線,本節參考Anthony_tester的部落格,感謝分享。 內連線 內連線(自然連線): 只有兩個表相匹配的行才能在結果集中出現 - 首先建立學生表和課程表 內連線inner join查詢

mysql連線連線on後的條件何時生效說明

工作中,由於看到錯誤使用的外連線後on的條件,所以寫此文章進行總結. 1.首先建立使用者表t_user,手機號表t_phone. #建立使用者表 CREATE TABLE t_user( user_id VARCHAR(36) PRIMARY KEY COMMENT'主鍵i

mysql資料庫——連線連線

SQL語句的查詢順序:select選項,欄位別名,資料來源(單表,多表和子查詢[別名]),where 子句(條件判斷:從磁碟上開始),group by子句(分組統計,統計函式,分組排序,多欄位分組),having子句(判斷結果,針對分組統計結果),order by子句(排序,

資料庫查詢語句中的連線連線

內連線:指連線結果僅包含符合連線條件的行,參與連線的兩個表都應該符合連線條件。 外連線:連線結果不僅包含符合連線條件的行同時也包含自身不符合條件的行。   外連線包括:左外連線、右外連線和全外連線。     左外連線:左邊表資料行全部保留,右邊表保留符合連線條件的行。     右外連線:右邊表資料行全部保留,

SQL 連線連線區別

資料庫的資料: 資料分級: 100 定義的是鎖,110 定義的是門鎖,111定義的是門鎖的種類例如光交門鎖。 那麼 門鎖的種類就是110~190  9 種,具體細分,鎖的種類就是總共:9*9=81種。夠用了。 這種型別的表,適合做自連線。 左外連結:連線2次。左側的資

mysql連結與連線

1.內連線(或等值連線)       作用:獲取兩個表中欄位匹配關係的記錄。相當於求兩個集合的交集,即共有的部分 注意:MySQL的INNER JOIN(也可以省略 INNER 使用 JOIN,效果一樣) 格式: select 欄

連線 右連結的區別連線連線的卻別!!

假設有A,B兩個表。   表A記錄如下:   aID     aNum   1     a20050111   2     a20050112   3     a20050113   4     a20050114   5     a20050115   表B記錄如下:  

UDP連線通訊的問題

這幾天忙著搞UDP的socket通訊,忙乎了幾天終於有點成就了,竊喜下。。。。 如果你不懂內網和外網的區別,不懂區域網和廣域網就先熟悉下,再來看程式。我目前的情況是客戶端在一個內網上,要連線外網的伺服器,外網伺服器在收到客戶端的請求後,反饋資訊給客戶端。 請注意是UDP,不

連線 右連結的區別連線連線區別

假設有A,B兩個表。  表A記錄如下:  aID     aNum  1     a20050111  2     a20050112  3     a20050113  4     a20050114  5     a20050115  表B記錄如下:  bID     b

MySQL笛卡爾積等值連線(多表查詢

單標查詢:從一張表中查詢資料多表查詢:從多張表中聯合查詢出資料單標查詢:SELECT * FROM sys_user多表查詢:SELECT * FROM sys_user,sys_role_user注意在時間執行環境下,應避免使用笛卡爾積多表查詢會產生笛卡爾積:假設集合a={

資料庫的連線連線區別

內連線:指連線結果僅包含符合連線條件的行,參與連線的兩個表都應該符合連線條件。外連線:連線結果不僅包含符合連線條件的行同時也包含自身不符合條件的行。包括左外連線、右外連線和全外連線。左外連線:左邊表資料行全部保留,右邊表保留符合連線條件的行。右外連線:右邊表資料行全部保留,左

連線連線區別

drop table employees; drop table departments; --建立資料表 --父表 create table departments(        department_id int(10),        department_name varchar(15) ); --

電腦同時連線網route命令

         如何讓電腦同時連線多個網路呢?經常會遇到這樣的情況,一臺電腦如果連上了內網(區域網),外網(因特網)就不能訪問了;要是連上了外網,內網就不能正常訪問了。能否同時上內網和外網呢?答案是肯定的,其實一臺可以同時連線多個網路,只需設定合理的路由。       

mySQL進行多表的左連線、右連線連線、全連線

內連線: 只連線匹配的行 左外連線: 包含左邊表的全部行(不管右邊的表中是否存在與它們匹配的行),以及右邊表中全部匹配的行 右外連線: 包含右邊表的全部行(不管左邊的表中是否存在與它們匹配的行),以及左邊表中全部匹配的行 全外連線: 包含左、右兩個表的全部行,不管另外一

postgreSQL中的連線連線

測試資料: city表: create table city(id int,name text); insert into city values(0,'北京'),(1,'西安'),(2,'天津'),(3,'上海'),(4,'哈爾濱'),(5,'西藏')

MySQL全面瓦解12:連線查詢的原理應用

概述 MySQL最強大的功能之一就是能在資料檢索的執行中連線(join)表。大部分的單表資料查詢並不能滿足我們的需求,這時候我們就需要連線一個或者多個表,並通過一些條件過濾篩選出我們需要的資料。 瞭解MySQL連線查詢之前我們先來理解下笛卡爾積的原理。 資料準備 依舊使用上節的表資料(包含classes 班級

window系統的雙網絡卡配置 同時連線 公司網以及網(域名可解析)

記錄一下雙網絡卡的配置 電腦有兩張網絡卡,無線和有線 我現在是使用有線去連線公司內網,無線連線外網; 公司內網的ip格式:  10.*.*.* 內網網路掩碼:         255.255.255.0 內網閘道器地址: