最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

10個(gè)簡單步驟,讓你完全理解SQL

2023-08-17 15:03 作者:程序員大致學(xué)長  | 我要投稿

本文是為了以下讀者而特地編寫的:

  • 1、 在工作中會(huì)用到 SQL 但是對它并不完全了解的人。

  • 2、 能夠熟練使用 SQL 但是并不了解其語法邏輯的人。

  • 3、 想要教別人 SQL 的人,卻不知道如何去教的人。

在開始之前呢,我給大家整理了一些自己看過且干貨的一些學(xué)習(xí)資料(獲取方式在文章末尾哦~):


正文開始:

1、 SQL 是一種聲明式語言


首先要把這個(gè)概念記在腦中:“聲明”。 SQL 語言是為計(jì)算機(jī)聲明了一個(gè)你想從原始數(shù)據(jù)中獲得什么樣的結(jié)果的一個(gè)范例,而不是告訴計(jì)算機(jī)如何能夠得到結(jié)果。sql的執(zhí)行引擎會(huì)根據(jù)你聲明的數(shù)據(jù)結(jié)果去獲取對應(yīng)的數(shù)據(jù)。

那我們應(yīng)該從哪兒學(xué)習(xí)到這些?

如果 SQL 語言這么簡單,那么是什么讓人們“聞 SQL 色變”?

主要的原因是:我們潛意識(shí)中的是按照命令式編程的思維方式思考問題的。就好像這樣:“電腦,先執(zhí)行這一步,再執(zhí)行那一步,但是在那之前先檢查一下是否滿足條件 A 和條件 B ”。例如,用變量傳參、使用循環(huán)語句、迭代、調(diào)用函數(shù)等等,都是這種命令式編程的思維慣式。


2、 SQL 的語法并不按照語法順序執(zhí)行

SQL 語句有一個(gè)讓大部分人都感到困惑的特性,就是:SQL 語句的執(zhí)行順序跟其語句的語法順序并不一致。SQL 語句的語法順序是:

為了方便理解,上面并沒有把所有的 SQL 語法結(jié)構(gòu)都列出來,但是已經(jīng)足以說明 SQL 語句的語法順序和其執(zhí)行順序完全不一樣,就以上述語句為例,其執(zhí)行順序?yàn)椋?/span>


3、 SQL 語言的核心是對表的引用(table references)

由于 SQL 語句語法順序和執(zhí)行順序的不同,很多同學(xué)會(huì)認(rèn)為SELECT 中的字段信息是 SQL 語句的核心。其實(shí)真正的核心在于對表的引用。

根據(jù) SQL 標(biāo)準(zhǔn),F(xiàn)ROM 語句被定義為:

FROM 語句的“輸出”是一張聯(lián)合表,來自于所有引用的表在某一維度上的聯(lián)合。我們們慢慢來分析:

這個(gè)聯(lián)合表里的數(shù)據(jù)是 a*b,即 a 和 b 的笛卡爾積。換句話說,也就是 a 表中的每一條數(shù)據(jù)都要跟 b 表中的每一條數(shù)據(jù)配對。如果 a 表有3 條數(shù)據(jù), b 表有 5 條數(shù)據(jù),那么聯(lián)合表就會(huì)有 15 ( =5*3)條數(shù)據(jù)。

FROM 輸出的結(jié)果被 WHERE 語句篩選后要經(jīng)過 GROUP BY 語句處理,從而形成新的輸出結(jié)果。

如果我們從集合論(關(guān)系代數(shù))的角度來看,一張數(shù)據(jù)庫的表就是一組數(shù)據(jù)元的關(guān)系,而每個(gè) SQL 語句會(huì)改變一種或數(shù)種關(guān)系,從而產(chǎn)生出新的數(shù)據(jù)元的關(guān)系(即產(chǎn)生新的表)。

4、 靈活引用表能使 SQL 語句變得更強(qiáng)大

靈活引用表能使 SQL 語句變得更強(qiáng)大。一個(gè)簡單的例子就是 JOIN 的使用。

嚴(yán)格的說 JOIN 語句并非是 SELECT 中的一部分,而是一種特殊的表引用語句。

SQL 語言標(biāo)準(zhǔn)中表的連接定義如下:

在 SQL 語句中派生表的應(yīng)用甚至比表連接更加強(qiáng)大!

我們學(xué)到了什么?

思考問題時(shí),要從表引用的角度出發(fā),這樣就很容易理解數(shù)據(jù)是怎樣被 SQL 語句處理的,并且能夠幫助你理解那些復(fù)雜的表引用是做什么的。

更重要的是,要理解 JOIN 是構(gòu)建連接表的關(guān)鍵詞,并不是 SELECT 語句的一部分。有一些數(shù)據(jù)庫允許在 INSERT 、 UPDATE 、 DELETE 中使用 JOIN 。

5、 SQL 語句中推薦使用表連接

我們先看看剛剛這句話:

高級(jí) SQL 程序員也許給你忠告:盡量不要使用逗號(hào)來代替 JOIN 進(jìn)行表的連接,這樣會(huì)提高你的 SQL 語句的可讀性,并且可以避免一些錯(cuò)誤。 利用逗號(hào)來簡化 SQL 語句有時(shí)候會(huì)造成思維上的混亂,想一下下面的語句:

我們不難看出使用 JOIN 語句的好處在于: 安全。 JOIN 和要連接的表離得非常近,這樣就能避免錯(cuò)誤。更多連接的方式,JOIN 語句能去區(qū)分出來外連接和內(nèi)連接等。

我們學(xué)到了什么?

記著要盡量使用 JOIN 進(jìn)行表的連接,永遠(yuǎn)不要在 FROM 后面使用逗號(hào)連接表。

6、SQL 語句中的幾個(gè)簡單的關(guān)鍵詞: DISTINCT , UNION , ORDER BY 和 OFFSET

  • DISTINCT 在映射之后對數(shù)據(jù)進(jìn)行去重

  • UNION 將兩個(gè)子查詢拼接起來并去重

  • UNION ALL 將兩個(gè)子查詢拼接起來但不去重

  • EXCEPT 將第二個(gè)字查詢中的結(jié)果從第一個(gè)子查詢中去掉

  • INTERSECT 保留兩個(gè)子查詢中都有的結(jié)果并去重

  • 排序運(yùn)算( ordering operation):

  • 排序運(yùn)算跟邏輯關(guān)系無關(guān)。這是一個(gè) SQL 特有的功能。排序運(yùn)算不僅在 SQL 語句的最后,而且在 SQL 語句運(yùn)行的過程中也是最后執(zhí)行的。使用 ORDER BY 和 OFFSET…FETCH 是保證數(shù)據(jù)能夠按照順序排列的最有效的方式。其他所有的排序方式都有一定隨機(jī)性,盡管它們得到的排序結(jié)果是可重現(xiàn)的。 OFFSET…SET是一個(gè)沒有統(tǒng)一確定語法的語句,不同的數(shù)據(jù)庫有不同的表達(dá)方式,如 MySQL 和 PostgreSQL 的 LIMIT…OFFSET、SQL Server 和 Sybase 的 TOP…START AT 等。

文章整理不易,還請各位大佬們多多支持~

獲取方式:

一鍵三連+關(guān)注? ? ? ? (重點(diǎn))

后臺(tái)主動(dòng)留下痕跡:“語言”(重點(diǎn))?




10個(gè)簡單步驟,讓你完全理解SQL的評(píng)論 (共 條)

分享到微博請遵守國家法律
北宁市| 彰化县| 彰武县| 贵溪市| 云霄县| 永靖县| 调兵山市| 蓬安县| 宾川县| 台北县| 白城市| 济阳县| 双桥区| 阳西县| 无棣县| 洪雅县| 当阳市| 浦县| 来宾市| 钟祥市| 万山特区| 渑池县| 通城县| 冷水江市| 巴南区| 和静县| 平罗县| 堆龙德庆县| 宜城市| 屏山县| 肇州县| 静乐县| 广元市| 太仆寺旗| 新龙县| 绥芬河市| 陵川县| 会同县| 乌拉特前旗| 荣昌县| 淳化县|