色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

列表解釋關系模型

數據分析與開發 ? 來源:數據分析與開發 ? 作者:數據分析與開發 ? 2020-09-24 15:04 ? 次閱讀

關系模型(Relational model)由 E.F.Codd 博士于 1970 年提出,以集合論中的關系概念為基礎;無論是現實世界中的實體對象還是它們之間的聯系都使用關系表示。我們在數據庫系統中看到的關系就是二維表(Table),由行(Row)和列(Column)組成。因此,也可以說關系表是由數據行構成的集合。

關系模型由數據結構、關系操作、完整性約束三部分組成。

關系模型中的數據結構就是關系表,包括基礎表、派生表(查詢結果)和虛擬表(視圖)。

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

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

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

面向集合

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

在關系數據庫中,關系、表、集合三者通常表示相同的概念。

SELECT

下面是一個簡單的查詢語句:

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

SELECT * FROM (SELECT employee_id, first_name, last_name, hire_dateFROMemployees)t; 括號內的查詢語句被稱為派生表,我們給它指定了一個別名叫做 t。同樣,整個查詢結果也是一個表;這就意味著我們可以繼續嵌套,雖然這么做很無聊。 我們再看一個 PostgreSQL 中的示例:

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

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

ORDER BY 用于對查詢的結果進行排序,示意圖如下:

總之,SQL 可以完成各種數據操作,例如過濾、分組、排序、限定數量等;所有這些操作的對象都是關系表,結果也是關系表。

在這些關系操作中,有一個比較特殊,就是分組。

GROUP BY

分組( GROUP BY)操作和其他的關系操作不同,因為它改變了關系的結構。來看下面的示例:

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

盡管如此,GROUP BY 的結果仍然是一個集合。

UNION

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

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

兩邊的集合中對應字段的類型必須匹配或兼容。

具體來說,UNION 和 UNION ALL 用于計算兩個集合的并集,返回出現在第一個查詢結果或者第二個查詢結果中的數據。它們的區別在于 UNION 排除了結果中的重復數據,UNION ALL 保留了重復數據。下面是 UNION 操作的示意圖:

INTERSECT 操作符用于返回兩個集合中的共同部分,即同時出現在第一個查詢結果和第二個查詢結果中的數據,并且排除了結果中的重復數據。INTERSECT 運算的示意圖如下:

EXCEPT 或者 MINUS 操作符用于返回兩個集合的差集,即出現在第一個查詢結果中,但不在第二個查詢結果中的記錄,并且排除了結果中的重復數據。EXCEPT 運算符的示意圖如下:

除此之外,DISTINCT 運算符用于消除重復數據,也就是排除集合中的重復元素。

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

JOIN

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

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

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

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

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

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

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

SELECT department_id FROM departments UNIONSELECT department_idFROMemployees; 等價于:

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

DML

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

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); 我們通過一個 INSERT 語句插入了 3 條記錄,或者說是插入了一個包含 3 條記錄的關系表。因為,UNION ALL 返回的是一個關系表。VALUES 同樣是指定了一個關系表,在 SQL Server 和 PostgreSQL 中支持以下語句:

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

原文標題:圖解 SQL,這也太形象了吧!

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

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

    關注

    1

    文章

    764

    瀏覽量

    44129
  • 關系模型
    +關注

    關注

    0

    文章

    3

    瀏覽量

    5708

原文標題:圖解 SQL,這也太形象了吧!

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

收藏 人收藏

    評論

    相關推薦

    什么是大模型、大模型是怎么訓練出來的及大模型作用

    ,基礎模型。 ? 大模型是一個簡稱,完整的叫法,應該是“人工智能預訓練大模型”。預訓練,是一項技術,我們后面再解釋。 ? 我們現在口頭上常說的大模型
    的頭像 發表于 11-25 09:29 ?1424次閱讀
    什么是大<b class='flag-5'>模型</b>、大<b class='flag-5'>模型</b>是怎么訓練出來的及大<b class='flag-5'>模型</b>作用

    Llama 3 與開源AI模型關系

    在人工智能(AI)的快速發展中,開源AI模型扮演著越來越重要的角色。它們不僅推動了技術的創新,還促進了全球開發者社區的合作。Llama 3,作為一個新興的AI項目,與開源AI模型關系密切,這種
    的頭像 發表于 10-27 14:42 ?371次閱讀

    AI大模型與深度學習的關系

    AI大模型與深度學習之間存在著密不可分的關系,它們互為促進,相輔相成。以下是對兩者關系的介紹: 一、深度學習是AI大模型的基礎 技術支撐 :深度學習是一種機器學習的方法,通過多層神經網
    的頭像 發表于 10-23 15:25 ?732次閱讀

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

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

    鴻蒙跨端實踐-長列表解決方案和性能優化

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

    MSPM0 L1測量儀表解決方案指南

    電子發燒友網站提供《MSPM0 L1測量儀表解決方案指南.pdf》資料免費下載
    發表于 09-04 10:47 ?1次下載
    MSPM0 L1測量儀<b class='flag-5'>表解</b>決方案指南

    ai大模型和ai框架的關系是什么

    AI大模型和AI框架是人工智能領域中兩個重要的概念,它們之間的關系密切且復雜。 AI大模型的定義和特點 AI大模型是指具有大量參數的深度學習模型
    的頭像 發表于 07-16 10:07 ?4w次閱讀

    AI大模型與AI框架的關系

    在探討AI大模型與AI框架的關系時,我們首先需要明確兩者的基本概念及其在人工智能領域中的角色。AI大模型通常指的是具有極大規模、高度復雜性和強大能力的人工智能系統,它們能夠處理復雜的任務和數據,并在
    的頭像 發表于 07-15 11:42 ?1091次閱讀

    知識圖譜與大模型之間的關系

    在人工智能的廣闊領域中,知識圖譜與大模型是兩個至關重要的概念,它們各自擁有獨特的優勢和應用場景,同時又相互補充,共同推動著人工智能技術的發展。本文將從定義、特點、應用及相互關系等方面深入探討知識圖譜與大模型之間的
    的頭像 發表于 07-10 11:39 ?1065次閱讀

    人工智能與大模型關系與區別

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

    【大規模語言模型:從理論到實踐】- 閱讀體驗

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

    【大語言模型:原理與工程實踐】大語言模型的評測

    。評測任務涵蓋了詞義理解、語義理解、閱讀理解、拼音理解以及古文及諺語理解等五大類別。在詞義理解方面,我們要求模型解釋成語“畫龍點睛”的含義,并區分“愛護”與“愛戴”之間的差異。在語義理解環節,我們測試
    發表于 05-07 17:12

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

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

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

    關系,從而在各種任務中表現出色。Transformer架構的推出,標志著語言模型技術的重大突破。它摒棄了傳統的遞歸方式,利用自注意力機制捕捉序列中的依賴關系。這一創新極大地提高了模型
    發表于 05-04 23:55

    osi參考模型與TCP/IP參考模型的對應關系

    OSI參考模型是一種將計算機網絡協議分解成七個不同層次的概念模型。這七個層次分別是物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層。每一層都負責不同的任務和功能,通過這種分層的方式,可以
    的頭像 發表于 01-11 14:26 ?6100次閱讀
    主站蜘蛛池模板: 校园高h肉耽文| 芒果影院网站在线观看| 甜宠溺H宝贝嗯撞PLAY啊 | 中国xxxxx69| 亚洲热在线视频| 亚洲精品九色在线网站| 亚洲国语在线视频手机在线| 鞋奴的视频VK| 亚洲AV蜜桃永久无码精品无码网 | 天美麻豆成人AV精品| 日本久久网站| 入禽太深在线观看免费高清| 日日碰狠狠躁久久躁77777| 日本乱子伦一区二区三区| 日韩一本道无码v| 十八禁啪啦啪漫画| 午夜影院费试看黄| 内射爽无广熟女亚洲| 免费观看99热只有精品| 国产在线午夜| 国内外成人免费在线视频| 菠萝菠萝蜜免费播放高清| 成人国产精品视频频| 国产精品久久久久精品A片软件| 国产精品永久免费视频观看| 99爱免费视频| 超碰在线 视频| 国产精品亚洲精品久久国语| 寂寞夜晚免费观看视频| 国产色播视频在线观看| 狠狠色综合久久丁香婷婷| 久青草国产在线观看视频| 黑人特黄AA完整性大片| 久久精品国产只有精品| 女人把腿张开叫男人桶免费视频| 人妻中文字幕乱人伦在线| 欧美69xxx| 天美传媒在线观看免费完整版| 亚洲视频成人| 99久久婷婷国产麻豆精品电影| 国产成人精品综合在线观看|