那曲檬骨新材料有限公司

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ù)分析與開發(fā) ? 來源:數(shù)據(jù)分析與開發(fā) ? 作者:數(shù)據(jù)分析與開發(fā) ? 2020-09-24 15:04 ? 次閱讀

關(guān)系模型(Relational model)由 E.F.Codd 博士于 1970 年提出,以集合論中的關(guān)系概念為基礎(chǔ);無論是現(xiàn)實(shí)世界中的實(shí)體對(duì)象還是它們之間的聯(lián)系都使用關(guān)系表示。我們?cè)跀?shù)據(jù)庫系統(tǒng)中看到的關(guān)系就是二維表(Table),由行(Row)和列(Column)組成。因此,也可以說關(guān)系表是由數(shù)據(jù)行構(gòu)成的集合。

關(guān)系模型由數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作、完整性約束三部分組成。

關(guān)系模型中的數(shù)據(jù)結(jié)構(gòu)就是關(guān)系表,包括基礎(chǔ)表、派生表(查詢結(jié)果)和虛擬表(視圖)。

常用的關(guān)系操作包括增加、刪除、修改和查詢(CRUD),使用的就是 SQL 語言。其中查詢操作最為復(fù)雜,包括選擇(Selection)、投影(Projection)、并集(Union)、交集(Intersection)、差集(Exception)以及笛卡兒積(Cartesian product)等。

完整性約束用于維護(hù)數(shù)據(jù)的完整性或者滿足業(yè)務(wù)約束的需求,包括實(shí)體完整性(主鍵約束)、參照完整性(外鍵約束)以及用戶定義的完整性(非空約束、唯一約束、檢查約束和默認(rèn)值)。

我們今天的主題是關(guān)系操作語言,也就是 SQL。本文使用的示例數(shù)據(jù)來源于https://blog.csdn.net/horses/article/details/86518676。

面向集合

SQL(結(jié)構(gòu)化查詢語言)是操作關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言。SQL 非常接近英語,使用起來非常簡(jiǎn)單。它在設(shè)計(jì)之初就考慮了非技術(shù)人員的使用需求,我們通常只需說明想要的結(jié)果(What),而將數(shù)據(jù)處理的過程(How)交給數(shù)據(jù)庫管理系統(tǒng)。所以說,SQL 才是真正給人用的編程語言! 接下來我們具體分析一下關(guān)系的各種操作語句;目的是為了讓大家能夠了解SQL 是一種面向集合的編程語言,它的操作對(duì)象是集合,操作的結(jié)果也是集合。

在關(guān)系數(shù)據(jù)庫中,關(guān)系、表、集合三者通常表示相同的概念。

SELECT

下面是一個(gè)簡(jiǎn)單的查詢語句:

SELECT employee_id, first_name, last_name, hire_dateFROMemployees; 它的作用就是從 employees 表中查詢員工信息。顯然,我們都知道 FROM 之后是一個(gè)表(關(guān)系、集合)。不僅如此,整個(gè)查詢語句的結(jié)果也是一個(gè)表。所以,我們可以將上面的查詢作為表使用:

SELECT * FROM (SELECT employee_id, first_name, last_name, hire_dateFROMemployees)t; 括號(hào)內(nèi)的查詢語句被稱為派生表,我們給它指定了一個(gè)別名叫做 t。同樣,整個(gè)查詢結(jié)果也是一個(gè)表;這就意味著我們可以繼續(xù)嵌套,雖然這么做很無聊。 我們?cè)倏匆粋€(gè) PostgreSQL 中的示例:

-- PostgreSQLSELECT * FROM upper('sql');| upper ||-------||SQL| upper() 是一個(gè)大寫轉(zhuǎn)換的函數(shù)。它出現(xiàn)再 FROM 子句中,意味著它的結(jié)果也是一個(gè)表,只不過是 1 行 1 列的特殊表。 SELECT 子句用于指定需要查詢的字段,可以包含表達(dá)式、函數(shù)值等。SELECT 在關(guān)系操作中被稱為投影(Projection),看下面的示意圖應(yīng)該就比較好理解了。

除了 SELECT 之外,還有一些常用的 SQL 子句。 WHERE 用于指定數(shù)據(jù)過濾的條件,在關(guān)系運(yùn)算中被稱為選擇(Selection),示意圖如下:

ORDER BY 用于對(duì)查詢的結(jié)果進(jìn)行排序,示意圖如下:

總之,SQL 可以完成各種數(shù)據(jù)操作,例如過濾、分組、排序、限定數(shù)量等;所有這些操作的對(duì)象都是關(guān)系表,結(jié)果也是關(guān)系表。

在這些關(guān)系操作中,有一個(gè)比較特殊,就是分組。

GROUP BY

分組( GROUP BY)操作和其他的關(guān)系操作不同,因?yàn)樗淖兞岁P(guān)系的結(jié)構(gòu)。來看下面的示例:

SELECT department_id, count(*), first_name FROM employeesGROUPBYdepartment_id; 該語句的目的是按照部門統(tǒng)計(jì)員工的數(shù)量,但是存在一個(gè)語法錯(cuò)誤,就是 first_name 不能出現(xiàn)在查詢列表中。原因在于按照部門進(jìn)行分組的話,每個(gè)部門包含多個(gè)員工;無法確定需要顯示哪個(gè)員工的姓名,這是一個(gè)邏輯上的錯(cuò)誤。 所以說,GROUP BY 改變了集合元素(數(shù)據(jù)行)的結(jié)構(gòu),創(chuàng)建了一個(gè)全新的關(guān)系。分組操作的示意圖如下:

盡管如此,GROUP BY 的結(jié)果仍然是一個(gè)集合。

UNION

SQL 面向集合特性最明顯的體現(xiàn)就是 UNION(并集運(yùn)算)、INTERSECT(交集運(yùn)算)和 EXCEPT/MINUS(差集運(yùn)算)。 這些集合運(yùn)算符的作用都是將兩個(gè)集合并成一個(gè)集合,因此需要滿足以下條件:

兩邊的集合中字段的數(shù)量和順序必須相同;

兩邊的集合中對(duì)應(yīng)字段的類型必須匹配或兼容。

具體來說,UNION 和 UNION ALL 用于計(jì)算兩個(gè)集合的并集,返回出現(xiàn)在第一個(gè)查詢結(jié)果或者第二個(gè)查詢結(jié)果中的數(shù)據(jù)。它們的區(qū)別在于 UNION 排除了結(jié)果中的重復(fù)數(shù)據(jù),UNION ALL 保留了重復(fù)數(shù)據(jù)。下面是 UNION 操作的示意圖:

INTERSECT 操作符用于返回兩個(gè)集合中的共同部分,即同時(shí)出現(xiàn)在第一個(gè)查詢結(jié)果和第二個(gè)查詢結(jié)果中的數(shù)據(jù),并且排除了結(jié)果中的重復(fù)數(shù)據(jù)。INTERSECT 運(yùn)算的示意圖如下:

EXCEPT 或者 MINUS 操作符用于返回兩個(gè)集合的差集,即出現(xiàn)在第一個(gè)查詢結(jié)果中,但不在第二個(gè)查詢結(jié)果中的記錄,并且排除了結(jié)果中的重復(fù)數(shù)據(jù)。EXCEPT 運(yùn)算符的示意圖如下:

除此之外,DISTINCT 運(yùn)算符用于消除重復(fù)數(shù)據(jù),也就是排除集合中的重復(fù)元素。

SQL 中的關(guān)系概念來自數(shù)學(xué)中的集合理論,因此 UNION、INTERSECT 和 EXCEPT 分別來自集合論中的并集(∪cup∪)、交集(∩cap∩)和差集(?setminus?)運(yùn)算。需要注意的是,集合理論中的集合不允許存在重復(fù)的數(shù)據(jù),但是 SQL 允許。因此,SQL 中的集合也被稱為多重集合(multiset);多重集合與集合理論中的集合都是無序的,但是 SQL 可以通過 ORDER BY 子句對(duì)查詢結(jié)果進(jìn)行排序。

JOIN

在 SQL 中,不僅實(shí)體對(duì)象存儲(chǔ)在關(guān)系表中,對(duì)象之間的聯(lián)系也存儲(chǔ)在關(guān)系表中。因此,當(dāng)我們想要獲取這些相關(guān)的數(shù)據(jù)時(shí),需要使用到另一個(gè)操作:連接查詢(JOIN)。 常見的 SQL連接查類型包括內(nèi)連接、外連接、交叉連接等。其中,外連接又可以分為左外連接、右外連接以及全外連接。 內(nèi)連接(Inner Join)返回兩個(gè)表中滿足連接條件的數(shù)據(jù),內(nèi)連接的原理如下圖所示:

左外連接(Left Outer Join)返回左表中所有的數(shù)據(jù);對(duì)于右表,返回滿足連接條件的數(shù)據(jù);如果沒有就返回空值。左外連接的原理如下圖所示:

右外連接(Right Outer Join)返回右表中所有的數(shù)據(jù);對(duì)于左表,返回滿足連接條件的數(shù)據(jù),如果沒有就返回空值。右外連接與左外連接可以互換,以下兩者等價(jià):

t1 RIGHT JOIN t2t2LEFTJOINt1 全外連接(Full Outer Join)等價(jià)于左外連接加上右外連接,同時(shí)返回左表和右表中所有的數(shù)據(jù);對(duì)于兩個(gè)表中不滿足連接條件的數(shù)據(jù)返回空值。全外連接的原理如下圖所示:

交叉連接也稱為笛卡爾積(Cartesian Product)。兩個(gè)表的交叉連接相當(dāng)于一個(gè)表的所有行和另一個(gè)表的所有行兩兩組合,結(jié)果的數(shù)量為兩個(gè)表的行數(shù)相乘。交叉連接的原理如下圖所示:

其他類型的連接還有半連接(SEMI JOIN)、反連接(ANTI JOIN)。

集合操作將兩個(gè)集合合并成一個(gè)更大或更小的集合;連接查詢將兩個(gè)集合轉(zhuǎn)換成一個(gè)更大或更小的集合,同時(shí)獲得了一個(gè)更大的元素(更多的列)。很多時(shí)候集合操作都可以通過連接查詢來實(shí)現(xiàn),例如:

SELECT department_id FROM departments UNIONSELECT department_idFROMemployees; 等價(jià)于:

SELECT COALESCE(d.department_id, e.department_id) FROM departments dFULLJOINemployeeseON(e.department_id=d.department_id); 我們已經(jīng)介紹了許多查詢的示例,接下來看看其他的數(shù)據(jù)操作。

DML

DML 表示數(shù)據(jù)操作語言,也就是插入、更新和刪除。以下是一個(gè)插入語句示例:

CREATE TABLE test(id int); -- MySQL、SQL Server 等INSERT INTO test(id) VALUES (1),(2),(3); -- OracleINSERT INTO test(id)(SELECT 1 AS id FROM DUALUNION ALLSELECT 2 FROM DUALUNION ALLSELECT3FROMDUAL); 我們通過一個(gè) INSERT 語句插入了 3 條記錄,或者說是插入了一個(gè)包含 3 條記錄的關(guān)系表。因?yàn)椋琔NION ALL 返回的是一個(gè)關(guān)系表。VALUES 同樣是指定了一個(gè)關(guān)系表,在 SQL Server 和 PostgreSQL 中支持以下語句:

SELECT *FROM ( VALUES(1),(2),(3))test(id); 前面我們已經(jīng)說過,F(xiàn)ROM 之后是一個(gè)關(guān)系表,所以這里的 VALUES 也是一樣。由于我們經(jīng)常插入單條記錄,并沒有意識(shí)到實(shí)際上是以表為單位進(jìn)行操作。 同樣,UPDATE 和 DELETE 語句也都是以關(guān)系表為單位的操作;只不過我們習(xí)慣了說更新一行數(shù)據(jù)或者刪除幾條記錄。

原文標(biāo)題:圖解 SQL,這也太形象了吧!

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

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

    關(guān)注

    1

    文章

    775

    瀏覽量

    44254
  • 關(guān)系模型
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    5716

原文標(biāo)題:圖解 SQL,這也太形象了吧!

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    什么是大模型、大模型是怎么訓(xùn)練出來的及大模型作用

    ,基礎(chǔ)模型。 ? 大模型是一個(gè)簡(jiǎn)稱,完整的叫法,應(yīng)該是“人工智能預(yù)訓(xùn)練大模型”。預(yù)訓(xùn)練,是一項(xiàng)技術(shù),我們后面再解釋。 ? 我們現(xiàn)在口頭上常說的大模型
    的頭像 發(fā)表于 11-25 09:29 ?3398次閱讀
    什么是大<b class='flag-5'>模型</b>、大<b class='flag-5'>模型</b>是怎么訓(xùn)練出來的及大<b class='flag-5'>模型</b>作用

    一種新型機(jī)翼應(yīng)變載荷關(guān)系神經(jīng)網(wǎng)絡(luò)模型

    摘要 建立飛機(jī)結(jié)構(gòu)應(yīng)變載荷關(guān)系模型時(shí),地面標(biāo)定試驗(yàn)數(shù)據(jù)保真度高、但工況范圍及數(shù)量受限,有限元仿真工況范圍覆蓋廣、但數(shù)據(jù)保真度低,導(dǎo)致單獨(dú)依據(jù)地面標(biāo)定試驗(yàn)數(shù)據(jù)和有限元仿真數(shù)據(jù)建立的應(yīng)變載荷關(guān)系
    的頭像 發(fā)表于 11-21 10:59 ?206次閱讀
    一種新型機(jī)翼應(yīng)變載荷<b class='flag-5'>關(guān)系</b>神經(jīng)網(wǎng)絡(luò)<b class='flag-5'>模型</b>

    Llama 3 與開源AI模型關(guān)系

    在人工智能(AI)的快速發(fā)展中,開源AI模型扮演著越來越重要的角色。它們不僅推動(dòng)了技術(shù)的創(chuàng)新,還促進(jìn)了全球開發(fā)者社區(qū)的合作。Llama 3,作為一個(gè)新興的AI項(xiàng)目,與開源AI模型關(guān)系密切,這種
    的頭像 發(fā)表于 10-27 14:42 ?434次閱讀

    AI大模型與深度學(xué)習(xí)的關(guān)系

    AI大模型與深度學(xué)習(xí)之間存在著密不可分的關(guān)系,它們互為促進(jìn),相輔相成。以下是對(duì)兩者關(guān)系的介紹: 一、深度學(xué)習(xí)是AI大模型的基礎(chǔ) 技術(shù)支撐 :深度學(xué)習(xí)是一種機(jī)器學(xué)習(xí)的方法,通過多層神經(jīng)網(wǎng)
    的頭像 發(fā)表于 10-23 15:25 ?1278次閱讀

    基于TPS61094的長壽命、低成本智能電表解決方案

    電子發(fā)燒友網(wǎng)站提供《基于TPS61094的長壽命、低成本智能電表解決方案.pdf》資料免費(fèi)下載
    發(fā)表于 09-24 10:47 ?13次下載
    基于TPS61094的長壽命、低成本智能電<b class='flag-5'>表解</b>決方案

    鴻蒙跨端實(shí)踐-長列表解決方案和性能優(yōu)化

    這是我參加創(chuàng)作者計(jì)劃的第一篇文章。 前言 長列表是前端和客戶端應(yīng)用中最常見的業(yè)務(wù)場(chǎng)景,比如商品瀑布流等,有成千上萬條數(shù)據(jù),因此長列表的渲染性能在iOS,Android,Harmony,Web等各大
    的頭像 發(fā)表于 09-23 15:26 ?546次閱讀
    鴻蒙跨端實(shí)踐-長<b class='flag-5'>列表解</b>決方案和性能優(yōu)化

    MSPM0 L1測(cè)量?jī)x表解決方案指南

    電子發(fā)燒友網(wǎng)站提供《MSPM0 L1測(cè)量?jī)x表解決方案指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-04 10:47 ?1次下載
    MSPM0 L1測(cè)量?jī)x<b class='flag-5'>表解</b>決方案指南

    ai大模型和ai框架的關(guān)系是什么

    AI大模型和AI框架是人工智能領(lǐng)域中兩個(gè)重要的概念,它們之間的關(guān)系密切且復(fù)雜。 AI大模型的定義和特點(diǎn) AI大模型是指具有大量參數(shù)的深度學(xué)習(xí)模型
    的頭像 發(fā)表于 07-16 10:07 ?4.9w次閱讀

    AI大模型與AI框架的關(guān)系

    在探討AI大模型與AI框架的關(guān)系時(shí),我們首先需要明確兩者的基本概念及其在人工智能領(lǐng)域中的角色。AI大模型通常指的是具有極大規(guī)模、高度復(fù)雜性和強(qiáng)大能力的人工智能系統(tǒng),它們能夠處理復(fù)雜的任務(wù)和數(shù)據(jù),并在
    的頭像 發(fā)表于 07-15 11:42 ?1262次閱讀

    知識(shí)圖譜與大模型之間的關(guān)系

    在人工智能的廣闊領(lǐng)域中,知識(shí)圖譜與大模型是兩個(gè)至關(guān)重要的概念,它們各自擁有獨(dú)特的優(yōu)勢(shì)和應(yīng)用場(chǎng)景,同時(shí)又相互補(bǔ)充,共同推動(dòng)著人工智能技術(shù)的發(fā)展。本文將從定義、特點(diǎn)、應(yīng)用及相互關(guān)系等方面深入探討知識(shí)圖譜與大模型之間的
    的頭像 發(fā)表于 07-10 11:39 ?1217次閱讀

    人工智能與大模型關(guān)系與區(qū)別

    在科技日新月異的今天,人工智能(AI)已成為推動(dòng)社會(huì)進(jìn)步的重要力量。而在人工智能的眾多分支中,大模型(Large Models)作為近年來興起的概念,以其巨大的參數(shù)數(shù)量和強(qiáng)大的計(jì)算能力,在多個(gè)領(lǐng)域展現(xiàn)出了非凡的潛力。本文旨在深入探討人工智能與大模型之間的
    的頭像 發(fā)表于 07-04 16:07 ?4130次閱讀

    【大規(guī)模語言模型:從理論到實(shí)踐】- 閱讀體驗(yàn)

    直觀地解釋和理解。這可能會(huì)影響模型的可解釋性和可信賴性,特別是在需要高度可靠性的場(chǎng)景中。 通過修改注意力機(jī)制的計(jì)算方式或引入新的架構(gòu)來降低計(jì)算復(fù)雜度和內(nèi)存消耗;通過引入正則化技術(shù)來提高模型
    發(fā)表于 06-07 14:44

    【大語言模型:原理與工程實(shí)踐】大語言模型的評(píng)測(cè)

    。評(píng)測(cè)任務(wù)涵蓋了詞義理解、語義理解、閱讀理解、拼音理解以及古文及諺語理解等五大類別。在詞義理解方面,我們要求模型解釋成語“畫龍點(diǎn)睛”的含義,并區(qū)分“愛護(hù)”與“愛戴”之間的差異。在語義理解環(huán)節(jié),我們測(cè)試
    發(fā)表于 05-07 17:12

    【大語言模型:原理與工程實(shí)踐】核心技術(shù)綜述

    的復(fù)雜模式和長距離依賴關(guān)系。 預(yù)訓(xùn)練策略: 預(yù)訓(xùn)練是LLMs訓(xùn)練過程的第一階段,模型在大量的文本數(shù)據(jù)上學(xué)習(xí)語言的通用表示。常用的預(yù)訓(xùn)練任務(wù)包括遮蔽語言建模(Masked Language
    發(fā)表于 05-05 10:56

    【大語言模型:原理與工程實(shí)踐】揭開大語言模型的面紗

    關(guān)系,從而在各種任務(wù)中表現(xiàn)出色。Transformer架構(gòu)的推出,標(biāo)志著語言模型技術(shù)的重大突破。它摒棄了傳統(tǒng)的遞歸方式,利用自注意力機(jī)制捕捉序列中的依賴關(guān)系。這一創(chuàng)新極大地提高了模型
    發(fā)表于 05-04 23:55
    大发888娱乐场下载英皇国际 | 德州扑克算法| 百家乐官网画哪个路单| 百家乐赢多少该止赢| 澳门百家乐官网娱乐城开户| 金界百家乐的玩法技巧和规则| 赌百家乐官网怎样能赢| 威尼斯人娱乐场骗人| 百家乐官网视频游戏盗号| 百家乐保单机作弊| 百家乐官网赌博娱乐| 网上百家乐赌| 百家乐官网楼梯缆| 大发888娱乐城shouye| 王牌百家乐官网的玩法技巧和规则 | 百家乐官网变牌器批发| 大发888网页多少| 真人百家乐官网| 大发在线扑克| 百家乐赌场玩法技巧| 百家乐官网正网开户| 百家乐游戏作弊| 真钱百家乐官网哪里最好| 全讯网高手世家| 8运24山风水图解| 百家乐官网玩法秘决| LV百家乐娱乐城| 至尊百家乐官网| 百家乐官网网址哪里有| 百家乐高人玩法| 百家乐官网投注技巧建议| 大发888在线娱乐城加盟合作| 娱乐城百家乐高手| 百家乐官网免佣台| 皇城娱乐| 百家乐老是输| 月华百家乐官网的玩法技巧和规则 | 大发888娱乐城官方下载安装| 有百家乐的游戏平台| 百家乐官网赢钱面面观| 和硕县|