精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

關系型數據庫最難的地方,就是建模

電子工程師 ? 來源:lp ? 2019-04-04 14:29 ? 次閱讀

關系型數據庫最難的地方,就是建模(model)。

錯綜復雜的數據,需要建立模型,才能儲存在數據庫。所謂"模型"就是兩樣東西:實體(entity)+ 關系(relationship)。

實體指的是那些實際的對象,帶有自己的屬性,可以理解成一組相關屬性的容器。關系就是實體之間的聯系,通??梢苑殖?一對一"、"一對多"和"多對多"等類型。

在關系型數據庫里面,每個實體有自己的一張表(table),所有屬性都是這張表的字段(field),表與表之間根據關聯字段"連接"(join)在一起。所以,表的連接是關系型數據庫的核心問題。

表的連接分成好幾種類型。

內連接(inner join)

外連接(outer join)

左連接(left join)

右連接(right join)

全連接(full join)

以前,很多文章采用維恩圖(兩個圓的集合運算),解釋不同連接的差異。

上周,我讀到一篇文章,認為還有比維恩圖更好的解釋方式。我發現確實如此,換一個角度解釋,更容易懂。

所謂"連接",就是兩張表根據關聯字段,組合成一個數據集。問題是,兩張表的關聯字段的值往往是不一致的,如果關聯字段不匹配,怎么處理?比如,表 A 包含張三和李四,表 B 包含李四和王五,匹配的只有李四這一條記錄。

很容易看出,一共有四種處理方法。

只返回兩張表匹配的記錄,這叫內連接(inner join)。

返回匹配的記錄,以及表 A 多余的記錄,這叫左連接(left join)。

返回匹配的記錄,以及表 B 多余的記錄,這叫右連接(right join)。

返回匹配的記錄,以及表 A 和表 B 各自的多余記錄,這叫全連接(full join)。

下圖就是四種連接的圖示。我覺得,這張圖比維恩圖更易懂,也更準確。

上圖中,表 A 的記錄是 123,表 B 的記錄是 ABC,顏色表示匹配關系。返回結果中,如果另一張表沒有匹配的記錄,則用 null 填充。

這四種連接,又可以分成兩大類:內連接(inner join)表示只包含匹配的記錄,外連接(outer join)表示還包含不匹配的記錄。所以,左連接、右連接、全連接都屬于外連接。

這四種連接的 SQL 語句如下。

SELECT*FROMAINNERJOINBONA.book_id=B.book_id;SELECT*FROMALEFTJOINBONA.book_id=B.book_id;SELECT*FROMARIGHTJOINBONA.book_id=B.book_id;SELECT*FROMAFULLJOINBONA.book_id=B.book_id;

上面的 SQL 語句還可以加上where條件從句,對記錄進行篩選,比如只返回表 A 里面不匹配表 B 的記錄。

SELECT*FROMALEFTJOINBONA.book_id=B.book_idWHEREB.idISnull;

另一個例子,返回表 A 或表 B 所有不匹配的記錄。

SELECT*FROMAFULLJOINBONA.book_id=B.book_idWHEREA.idISnullORB.idISnull;

此外,還存在一種特殊的連接,叫做"交叉連接"(cross join),指的是表 A 和表 B 不存在關聯字段,這時表 A(共有 n 條記錄)與表 B (共有 m 條記錄)連接后,會產生一張包含 n x m 條記錄的新表(見下圖)。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • SQL
    SQL
    +關注

    關注

    1

    文章

    760

    瀏覽量

    44082
  • 數據庫
    +關注

    關注

    7

    文章

    3767

    瀏覽量

    64280
  • 數據集
    +關注

    關注

    4

    文章

    1205

    瀏覽量

    24649

原文標題:數據庫表連接的簡單解釋

文章出處:【微信號:DBDevs,微信公眾號:數據分析與開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    HarmonyOS開發案例:【關系數據庫

    使用關系數據庫的相關接口實現了對賬單的增、刪、改、查操作。
    的頭像 發表于 04-22 14:58 ?626次閱讀
    HarmonyOS開發案例:【<b class='flag-5'>關系</b><b class='flag-5'>型</b><b class='flag-5'>數據庫</b>】

    HarmonyOS開發案例:【搭建關系數據庫】(4)

    本節將介紹如何調用關系數據庫接口在本地搭建數據庫,并讀寫相應的用戶數據。
    的頭像 發表于 05-11 10:27 ?759次閱讀
    HarmonyOS開發案例:【搭建<b class='flag-5'>關系</b><b class='flag-5'>型</b><b class='flag-5'>數據庫</b>】(4)

    關系數據庫與非關系數據庫的區別淺析

    關系數據庫的一個劣勢就是 阻抗失諧(impedance mismatch):關系模型和內存中的數據
    發表于 06-03 06:03

    HarmonyOS關系數據庫和對象關系數據庫的使用方法

    容易就上手的知識。本篇速成教程直接使用最精準和簡短的文字,再配上講解代碼,讓我們能在10分鐘左右就能掌握最基本的數據庫使用方法。數據庫的三大要素:數據庫、表、字段,接下來為大家介紹關系
    發表于 03-29 14:10

    什么是關系數據庫

    什么是關系數據庫 關系數據庫簡介   關系
    發表于 06-17 07:38 ?9120次閱讀

    什么是非關系數據庫

    什么是非關系數據庫 談到非關系數據庫設計的難點,朱海峰說:“我們可以從一些場景來看這個問題
    發表于 06-17 15:49 ?3128次閱讀

    hbase和關系數據庫的區別

    hbase和關系數據庫的區別就是對于傳統數據庫,增加列對于一個項目來講,改變是非常大的。但是對于nosql,插入列和刪除列,跟傳統
    發表于 12-27 15:51 ?1.1w次閱讀
    hbase和<b class='flag-5'>關系</b><b class='flag-5'>型</b><b class='flag-5'>數據庫</b>的區別

    關系數據庫表結構的設計有什么技巧?兩個設計技巧詳細說明

    關系數據庫表結構的設計,有下面兩個設計技巧: 物理主鍵作為關聯的外鍵 關系數據庫,由多個
    發表于 10-16 10:33 ?13次下載

    基于SQLite的鴻蒙的關系數據庫使用

    HarmonyOS關系數據庫基于SQLite組件提供了一套完整的對本地數據庫進行管理的機制,對外提供了一系列的增、刪、改、查接口,也可以直接運行用戶輸入的SQL語句來滿足復雜的場景需
    的頭像 發表于 01-20 11:48 ?4035次閱讀
    基于SQLite的鴻蒙的<b class='flag-5'>關系</b><b class='flag-5'>型</b><b class='flag-5'>數據庫</b>使用

    輕松設計關系數據庫教程

    本文討論關系數據庫設計相關的一些內容,涉及關系模型,表結構設計等內容,以學生選修課程講述設計過程,在盡量講清楚設計要領的前提下,簡化設計內容。 本文基于MySQL數據庫為基礎,適合有一定關系
    的頭像 發表于 07-13 09:13 ?1699次閱讀

    數據庫數據恢復】MySQL數據庫Delete誤刪除的數據恢復案例

    MySQL數據庫屬于關系數據庫。SQL是一種用于操作關系
    的頭像 發表于 12-07 11:49 ?3342次閱讀
    【<b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復】MySQL<b class='flag-5'>數據庫</b>Delete誤刪除的<b class='flag-5'>數據</b>恢復案例

    OpenHarmony關系數據庫概述

    關系數據庫(Relational Database, 以下簡稱RDB)是一種基于關系模型來管理數據
    的頭像 發表于 03-28 18:08 ?1015次閱讀
    OpenHarmony<b class='flag-5'>關系</b><b class='flag-5'>型</b><b class='flag-5'>數據庫</b>概述

    關系數據庫的基本原理(什么是關系數據庫

    組成。關系數據庫是基于實用和可重復使用的概念,是支持高性能交互查詢、交易處理能力、安全性和靈活性的關鍵數據存儲和維護方法。關系數據庫的概念
    的頭像 發表于 07-10 09:06 ?1377次閱讀

    常見的存儲Idea數據庫地方

    Idea的數據庫被存儲在許多不同的地方,取決于應用程序和使用的技術。下面將詳細描述一些常見的存儲Idea數據庫地方關系
    的頭像 發表于 12-06 14:15 ?921次閱讀

    鴻蒙開發接口數據管理:【@ohos.data.rdb (關系數據庫)】

    關系數據庫(Relational Database,RDB)是一種基于關系模型來管理數據數據庫
    的頭像 發表于 06-10 18:35 ?1225次閱讀