一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)系型數(shù)據(jù)庫(kù)最難的地方,就是建模

電子工程師 ? 來(lái)源:lp ? 2019-04-04 14:29 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

關(guān)系型數(shù)據(jù)庫(kù)最難的地方,就是建模(model)。

錯(cuò)綜復(fù)雜的數(shù)據(jù),需要建立模型,才能儲(chǔ)存在數(shù)據(jù)庫(kù)。所謂"模型"就是兩樣?xùn)|西:實(shí)體(entity)+ 關(guān)系(relationship)。

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

在關(guān)系型數(shù)據(jù)庫(kù)里面,每個(gè)實(shí)體有自己的一張表(table),所有屬性都是這張表的字段(field),表與表之間根據(jù)關(guān)聯(lián)字段"連接"(join)在一起。所以,表的連接是關(guān)系型數(shù)據(jù)庫(kù)的核心問(wèn)題。

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

內(nèi)連接(inner join)

外連接(outer join)

左連接(left join)

右連接(right join)

全連接(full join)

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

上周,我讀到一篇文章,認(rèn)為還有比維恩圖更好的解釋方式。我發(fā)現(xiàn)確實(shí)如此,換一個(gè)角度解釋,更容易懂。

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

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

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

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

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

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

下圖就是四種連接的圖示。我覺(jué)得,這張圖比維恩圖更易懂,也更準(zhǔn)確。

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

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

這四種連接的 SQL 語(yǔ)句如下。

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 語(yǔ)句還可以加上where條件從句,對(duì)記錄進(jìn)行篩選,比如只返回表 A 里面不匹配表 B 的記錄。

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

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

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

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • SQL
    SQL
    +關(guān)注

    關(guān)注

    1

    文章

    783

    瀏覽量

    45183
  • 數(shù)據(jù)庫(kù)
    +關(guān)注

    關(guān)注

    7

    文章

    3929

    瀏覽量

    66303
  • 數(shù)據(jù)集
    +關(guān)注

    關(guān)注

    4

    文章

    1224

    瀏覽量

    25463

原文標(biāo)題:數(shù)據(jù)庫(kù)表連接的簡(jiǎn)單解釋

文章出處:【微信號(hào):DBDevs,微信公眾號(hào):數(shù)據(jù)分析與開(kāi)發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    HarmonyOS開(kāi)發(fā)案例:【關(guān)系數(shù)據(jù)庫(kù)

    使用關(guān)系數(shù)據(jù)庫(kù)的相關(guān)接口實(shí)現(xiàn)了對(duì)賬單的增、刪、改、查操作。
    的頭像 發(fā)表于 04-22 14:58 ?1046次閱讀
    HarmonyOS開(kāi)發(fā)案例:【<b class='flag-5'>關(guān)系</b><b class='flag-5'>型</b><b class='flag-5'>數(shù)據(jù)庫(kù)</b>】

    HarmonyOS開(kāi)發(fā)案例:【搭建關(guān)系數(shù)據(jù)庫(kù)】(4)

    本節(jié)將介紹如何調(diào)用關(guān)系數(shù)據(jù)庫(kù)接口在本地搭建數(shù)據(jù)庫(kù),并讀寫相應(yīng)的用戶數(shù)據(jù)
    的頭像 發(fā)表于 05-11 10:27 ?1471次閱讀
    HarmonyOS開(kāi)發(fā)案例:【搭建<b class='flag-5'>關(guān)系</b><b class='flag-5'>型</b><b class='flag-5'>數(shù)據(jù)庫(kù)</b>】(4)

    關(guān)系數(shù)據(jù)庫(kù)與非關(guān)系數(shù)據(jù)庫(kù)的區(qū)別淺析

    關(guān)系數(shù)據(jù)庫(kù)的一個(gè)劣勢(shì)就是 阻抗失諧(impedance mismatch):關(guān)系模型和內(nèi)存中的數(shù)據(jù)
    發(fā)表于 06-03 06:03

    HarmonyOS關(guān)系數(shù)據(jù)庫(kù)和對(duì)象關(guān)系數(shù)據(jù)庫(kù)的使用方法

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

    什么是關(guān)系數(shù)據(jù)庫(kù)

    什么是關(guān)系數(shù)據(jù)庫(kù) 關(guān)系數(shù)據(jù)庫(kù)簡(jiǎn)介   關(guān)系
    發(fā)表于 06-17 07:38 ?9204次閱讀

    什么是非關(guān)系數(shù)據(jù)庫(kù)

    什么是非關(guān)系數(shù)據(jù)庫(kù) 談到非關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)的難點(diǎn),朱海峰說(shuō):“我們可以從一些場(chǎng)景來(lái)看這個(gè)問(wèn)題
    發(fā)表于 06-17 15:49 ?3236次閱讀

    hbase和關(guān)系數(shù)據(jù)庫(kù)的區(qū)別

    hbase和關(guān)系數(shù)據(jù)庫(kù)的區(qū)別就是對(duì)于傳統(tǒng)數(shù)據(jù)庫(kù),增加列對(duì)于一個(gè)項(xiàng)目來(lái)講,改變是非常大的。但是對(duì)于nosql,插入列和刪除列,跟傳統(tǒng)
    發(fā)表于 12-27 15:51 ?1.2w次閱讀
    hbase和<b class='flag-5'>關(guān)系</b><b class='flag-5'>型</b><b class='flag-5'>數(shù)據(jù)庫(kù)</b>的區(qū)別

    關(guān)系數(shù)據(jù)庫(kù)表結(jié)構(gòu)的設(shè)計(jì)有什么技巧??jī)蓚€(gè)設(shè)計(jì)技巧詳細(xì)說(shuō)明

    關(guān)系數(shù)據(jù)庫(kù)表結(jié)構(gòu)的設(shè)計(jì),有下面兩個(gè)設(shè)計(jì)技巧: 物理主鍵作為關(guān)聯(lián)的外鍵 關(guān)系數(shù)據(jù)庫(kù),由多個(gè)
    發(fā)表于 10-16 10:33 ?13次下載

    基于SQLite的鴻蒙的關(guān)系數(shù)據(jù)庫(kù)使用

    HarmonyOS關(guān)系數(shù)據(jù)庫(kù)基于SQLite組件提供了一套完整的對(duì)本地數(shù)據(jù)庫(kù)進(jìn)行管理的機(jī)制,對(duì)外提供了一系列的增、刪、改、查接口,也可以直接運(yùn)行用戶輸入的SQL語(yǔ)句來(lái)滿足復(fù)雜的場(chǎng)景需
    的頭像 發(fā)表于 01-20 11:48 ?4914次閱讀
    基于SQLite的鴻蒙的<b class='flag-5'>關(guān)系</b><b class='flag-5'>型</b><b class='flag-5'>數(shù)據(jù)庫(kù)</b>使用

    輕松設(shè)計(jì)關(guān)系數(shù)據(jù)庫(kù)教程

    本文討論關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)相關(guān)的一些內(nèi)容,涉及關(guān)系模型,表結(jié)構(gòu)設(shè)計(jì)等內(nèi)容,以學(xué)生選修課程講述設(shè)計(jì)過(guò)程,在盡量講清楚設(shè)計(jì)要領(lǐng)的前提下,簡(jiǎn)化設(shè)計(jì)內(nèi)容。 本文基于MySQL數(shù)據(jù)庫(kù)為基礎(chǔ),適合有一定關(guān)系
    的頭像 發(fā)表于 07-13 09:13 ?2053次閱讀

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)】MySQL數(shù)據(jù)庫(kù)Delete誤刪除的數(shù)據(jù)恢復(fù)案例

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

    OpenHarmony關(guān)系數(shù)據(jù)庫(kù)概述

    關(guān)系數(shù)據(jù)庫(kù)(Relational Database, 以下簡(jiǎn)稱RDB)是一種基于關(guān)系模型來(lái)管理數(shù)據(jù)數(shù)
    的頭像 發(fā)表于 03-28 18:08 ?1421次閱讀
    OpenHarmony<b class='flag-5'>關(guān)系</b><b class='flag-5'>型</b><b class='flag-5'>數(shù)據(jù)庫(kù)</b>概述

    關(guān)系數(shù)據(jù)庫(kù)的基本原理(什么是關(guān)系數(shù)據(jù)庫(kù)

    組成。關(guān)系數(shù)據(jù)庫(kù)是基于實(shí)用和可重復(fù)使用的概念,是支持高性能交互查詢、交易處理能力、安全性和靈活性的關(guān)鍵數(shù)據(jù)存儲(chǔ)和維護(hù)方法。關(guān)系數(shù)據(jù)庫(kù)的概念
    的頭像 發(fā)表于 07-10 09:06 ?1750次閱讀

    常見(jiàn)的存儲(chǔ)Idea數(shù)據(jù)庫(kù)地方

    Idea的數(shù)據(jù)庫(kù)被存儲(chǔ)在許多不同的地方,取決于應(yīng)用程序和使用的技術(shù)。下面將詳細(xì)描述一些常見(jiàn)的存儲(chǔ)Idea數(shù)據(jù)庫(kù)地方。 關(guān)系
    的頭像 發(fā)表于 12-06 14:15 ?1396次閱讀

    關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系區(qū)別

    關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)在多個(gè)方面存在顯著差異,主機(jī)推薦小編為您整理發(fā)布
    的頭像 發(fā)表于 01-10 09:58 ?690次閱讀