chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

完善資料讓更多小伙伴認識你,還能領(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)實世界中的實體對象還是它們之間的聯(lián)系都使用關(guān)系表示。我們在數(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)等。

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

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

面向集合

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

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

SELECT

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

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

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

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

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

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

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

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

GROUP BY

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

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

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

UNION

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

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

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

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

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

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

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

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

JOIN

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

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

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

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

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

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

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

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); 我們已經(jīng)介紹了許多查詢的示例,接下來看看其他的數(shù)據(jù)操作。

DML

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

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 條記錄的關(guān)系表。因為,UNION ALL 返回的是一個關(guān)系表。VALUES 同樣是指定了一個關(guān)系表,在 SQL Server 和 PostgreSQL 中支持以下語句:

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

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

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

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

    關(guān)注

    1

    文章

    789

    瀏覽量

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

    關(guān)注

    0

    文章

    3

    瀏覽量

    5789

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

    微店商品列表API,輕松采集商品列表數(shù)據(jù)

    微店商品列表API是微店開放平臺提供的核心接口,主要用于獲取指定店鋪的商品列表數(shù)據(jù)。該接口支持分頁查詢、條件篩選和排序功能,適用于電商管理系統(tǒng)、競品分析和多平臺展示等場景。 一、接口概述 1.
    的頭像 發(fā)表于 12-01 14:32 ?124次閱讀

    調(diào)用拼多多開放平臺 API 獲取店鋪列表

    ? ?在電商平臺生態(tài)開發(fā)中,獲取店鋪信息是常見的需求。本文將介紹如何通過拼多多開放平臺的 API 接口獲取店鋪列表,包括接口概述、調(diào)用流程以及注意事項。 1. 接口概述 拼多多開放平臺提供了
    的頭像 發(fā)表于 11-10 15:30 ?167次閱讀
    調(diào)用拼多多開放平臺 API 獲取店鋪<b class='flag-5'>列表</b>

    產(chǎn)品列表獲取API接口詳解

    ? 在現(xiàn)代軟件開發(fā)中,API(應(yīng)用程序編程接口)是獲取產(chǎn)品列表的核心工具,它允許開發(fā)者從遠程服務(wù)器高效地檢索數(shù)據(jù)。本文將逐步介紹如何設(shè)計和使用產(chǎn)品列表獲取API接口,包括核心概念、實現(xiàn)步驟、代碼示例
    的頭像 發(fā)表于 07-24 14:29 ?457次閱讀
    產(chǎn)品<b class='flag-5'>列表</b>獲取API接口詳解

    《仿盒馬》app開發(fā)技術(shù)分享-- 分類右側(cè)商品列表(18)

    的切換,對應(yīng)的列表都能夠正常的刷新,同時也要注意數(shù)據(jù)之間的對應(yīng)關(guān)系,及時的修改對應(yīng)的id來幫助我們實現(xiàn)數(shù)據(jù)的查詢。 代碼實現(xiàn) 首先我們來實現(xiàn)右側(cè)列表的展示 因為我們是用左側(cè)列表的rig
    發(fā)表于 06-30 12:00

    FA模型和Stage模型API切換概述

    在FA模型下使用。因此在切換到Stage模型時,需要將應(yīng)用中用到的FAModelOnly接口替換成Stage模型下對應(yīng)的接口。下面是startAbility的接口切換示例,全量接口列表
    發(fā)表于 06-06 06:29

    從FA模型切換到Stage模型時:module的切換說明

    module的切換 從FA模型切換到Stage模型時,開發(fā)者需要將config.json文件module標(biāo)簽下的配置遷移到module.json5配置文件module標(biāo)簽下,具體差異見下列表
    發(fā)表于 06-05 08:16

    KaihongOS操作系統(tǒng)FA模型與Stage模型介紹

    FA模型與Stage模型介紹 KaihongOS操作系統(tǒng)中,F(xiàn)A模型(Feature Ability)和Stage模型是兩種不同的應(yīng)用模型
    發(fā)表于 04-24 07:27

    如何實現(xiàn)MC33774IC在Simulink環(huán)境中使用基于模型的設(shè)計?

    我想熟悉如何實現(xiàn)MC33774IC 在 Simulink 環(huán)境中使用基于模型的設(shè)計。 盡管 MATLAB 提供了一些示例文件,但它們似乎是最終版本。要更深入地了解如何配置MC33774,我正在尋找一個教程,該教程解釋了如何從頭開始在 Simulink 中設(shè)置和添加必要的模
    發(fā)表于 04-10 08:05

    【第二章 模型與設(shè)備連接】手把手教你玩轉(zhuǎn)新版正點原子云

    首先打開原子云,將之前的透傳策略刪掉,因為不刪掉透傳策略的話是無法更換運行模式的。 2. 設(shè)備管理-&gt;模型列表-&gt;創(chuàng)建模型 3. 根據(jù)自己需求
    發(fā)表于 03-12 09:27

    模型領(lǐng)域常用名詞解釋(近100個)

    本文總結(jié)了大模型領(lǐng)域常用的近100個名詞解釋,并按照模型架構(gòu)與基礎(chǔ)概念,訓(xùn)練方法與技術(shù),模型優(yōu)化與壓縮,推理與應(yīng)用,計算與性能優(yōu)化,數(shù)據(jù)與標(biāo)簽,模型
    的頭像 發(fā)表于 02-19 11:49 ?1261次閱讀
    大<b class='flag-5'>模型</b>領(lǐng)域常用名詞<b class='flag-5'>解釋</b>(近100個)

    AI大模型在汽車應(yīng)用中的推理、降本與可解釋性研究

    佐思汽研發(fā)布《2024-2025年AI大模型及其在汽車領(lǐng)域的應(yīng)用研究報告》。 推理能力成為大模型性能提升的驅(qū)動引擎 2024下半年以來,國內(nèi)外大模型公司紛紛推出推理模型,通過以CoT為
    的頭像 發(fā)表于 02-18 15:02 ?1803次閱讀
    AI大<b class='flag-5'>模型</b>在汽車應(yīng)用中的推理、降本與可<b class='flag-5'>解釋</b>性研究

    小白學(xué)解釋性AI:從機器學(xué)習(xí)到大模型

    科學(xué)AI需要可解釋性人工智能的崛起,尤其是深度學(xué)習(xí)的發(fā)展,在眾多領(lǐng)域帶來了令人矚目的進步。然而,伴隨這些進步而來的是一個關(guān)鍵問題——“黑箱”問題。許多人工智能模型,特別是復(fù)雜的模型,如神經(jīng)網(wǎng)
    的頭像 發(fā)表于 02-10 12:12 ?1138次閱讀
    小白學(xué)<b class='flag-5'>解釋</b>性AI:從機器學(xué)習(xí)到大<b class='flag-5'>模型</b>

    ADS1100的實際電壓計算與輸出碼有什么關(guān)系

    ADS1100的實際電壓計算與輸出碼的關(guān)系?? 求解釋!可否直接用輸出碼套用公式? 求解釋!可否直接用輸出碼套用公式?
    發(fā)表于 01-20 06:08

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

    關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫在多個方面存在顯著差異,主機推薦小編為您整理發(fā)布關(guān)系型數(shù)據(jù)庫和非關(guān)系型區(qū)別,以下是它們的主要區(qū)別。
    的頭像 發(fā)表于 01-10 09:58 ?1414次閱讀

    【「大模型啟示錄」閱讀體驗】對大模型更深入的認知

    的平衡,解釋得清清楚楚,讓我這個非專業(yè)人士也能明白大模型在實際應(yīng)用中面臨的挑戰(zhàn)和限制,也對這些模型的復(fù)雜性和挑戰(zhàn)有了更深的理解。 而且,書中還提到了OpenAI的成功案例和CUDA技術(shù)壁壘的形成,這些
    發(fā)表于 12-20 15:46