所以你正在考慮建立一個(gè)網(wǎng)站。您已經(jīng)構(gòu)建了網(wǎng)站的前端,現(xiàn)在正在處理后端。但是,您打算如何處理您網(wǎng)站的內(nèi)容、登錄信息以及用戶希望您保存在網(wǎng)站上的信息,以便他們只需再次登錄即可隨時(shí)訪問?這個(gè)存儲(chǔ)問題的答案是 SQL。
SQL 的完整形式是順序查詢語言,一種用于創(chuàng)建、維護(hù)和管理數(shù)據(jù)庫的語言。在這種語言中,您將使用表、函數(shù)、視圖、過程和其他與數(shù)據(jù)庫相關(guān)的東西,從而處理數(shù)據(jù)。今天,我們將討論什么是 SQL 以及如何使用它來跟上您的網(wǎng)站或應(yīng)用程序的數(shù)據(jù)。此外,我們將討論使用 SQL 的好處以及一些有效使用 SQL 的技巧,從而讓事情變得更輕松。
SQL 是如何工作的?
在提取和組織作為關(guān)系數(shù)據(jù)庫一部分的數(shù)據(jù)時(shí),SQL 被認(rèn)為是最常見的數(shù)據(jù)結(jié)構(gòu)語言。讓我們首先了解什么是數(shù)據(jù)庫。數(shù)據(jù)庫只不過是表中存在的行和列。除此之外,通過數(shù)據(jù)庫,您可以從系統(tǒng)中檢索特定信息,這些信息可以進(jìn)一步用于分析。
另一方面,即使分析是用 Python、R 或 SQL 完成的,您仍然需要從公司的數(shù)據(jù)庫中提取所需的數(shù)據(jù)。此外,SQL 允許您創(chuàng)建和管理大量數(shù)據(jù)。另一方面,如果表中有大量數(shù)據(jù)并排存儲(chǔ),則可以使用 SQL 將所有這些信息以完美的順序排列。
SQL 的工作方式使每個(gè)開發(fā)人員都可以利用它的實(shí)現(xiàn)。使用 SQL 的應(yīng)用程序列表非常多,其中包括應(yīng)用程序、數(shù)據(jù)庫管理員、經(jīng)理和最終用戶。在技??術(shù)術(shù)語中,SQL 比其他任何語言都更像是一種數(shù)據(jù)子語言。SQL 的主要目的是為開發(fā)人員提供一個(gè)用戶界面,以查看他們的數(shù)據(jù)是如何存儲(chǔ)的。另外,在使用 SQL 時(shí)需要注意的一點(diǎn)是,您在 SQL 中編寫的每條語句都是對(duì)數(shù)據(jù)庫的一種指令形式。
使用 SQL,您是在邏輯層面上處理數(shù)據(jù),您只需要在操作數(shù)據(jù)時(shí)擔(dān)心實(shí)現(xiàn)。例如,當(dāng)您要從給定表中檢索行集時(shí),您將定義條件以根據(jù)需要過濾出表中存在的行。因此,滿足您條件的行將從數(shù)據(jù)中取出并一步顯示給您。它也可以作為一個(gè)單元傳遞給用戶,以便它可以在另一個(gè) SQL 語句中使用。在這種情況下,您不必逐行處理。此外,您無需擔(dān)心信息的物理存儲(chǔ)方式。
如果以 SQL 中的任何語句為例,您會(huì)發(fā)現(xiàn)它們都有一個(gè)共同點(diǎn):優(yōu)化器的使用。優(yōu)化器是 Oracle 的一部分,它確定訪問指定數(shù)據(jù)的最有效方式。另一方面,Oracle 還為您提供了許多技術(shù),可用于使優(yōu)化器在其工作中表現(xiàn)更好。
SQL的歷史
SQL 編程語言的創(chuàng)建者是兩位 IBM 研究人員,他們分別是 Raymond Boyce 和 Donald Chamberlin。該編程語言是在 Edgar Frand Todd 發(fā)表題為“大型共享數(shù)據(jù)庫的關(guān)系模型數(shù)據(jù)”的論文后創(chuàng)建的。在本文中,托德闡明了一種有助于以關(guān)系形式呈現(xiàn)所有數(shù)據(jù)庫的方法。在這個(gè)理論的基礎(chǔ)上,IBM的兩位研究人員提出了SQL的思想和實(shí)現(xiàn)。SQL 的第一個(gè)迭代旨在檢索和管理存儲(chǔ)在 IBM 最初的關(guān)系數(shù)據(jù)庫管理系統(tǒng)(過去稱為“System R”)中的數(shù)據(jù)。
早在 20 世紀(jì) 70 年代,計(jì)算機(jī)科學(xué)家就在尋找一種方法來標(biāo)準(zhǔn)化數(shù)據(jù)庫的操作方式。從那項(xiàng)研究中,SQL 成為了結(jié)果。從 20 世紀(jì) 70 年代后期到 80 年代初期,我們看到了很多不同的迭代版本的發(fā)布,以及許多基于 SQL 的產(chǎn)品和程序。當(dāng)美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì) (ANSI) 在 1986 年采用并創(chuàng)建第一個(gè) SQL 標(biāo)準(zhǔn)時(shí),SQL 成為主流。關(guān)系數(shù)據(jù)庫的持續(xù)工作導(dǎo)致 SQL 整體上的許多改進(jìn)。
使用 SQL 的好處
正如我們之前所說,SQL 可以做什么以及它如何幫助開發(fā)人員解決與數(shù)據(jù)庫相關(guān)的問題有很多優(yōu)勢(shì)。在下面,我們提到了其中的一些,以展示您如何借助 SQL 來完成數(shù)據(jù)庫中的工作。
無需編碼
好吧,如果您是一個(gè)不喜歡編碼但仍想從事計(jì)算機(jī)工程師生活的人,那么找到工作并以此為職業(yè)的最佳選擇就是學(xué)習(xí) SQL。SQL 是一個(gè)非常易于管理的數(shù)據(jù)庫系統(tǒng),它不需要您編寫任何大量的代碼來完成任務(wù)。
標(biāo)準(zhǔn)非常明確
SQL 的所有標(biāo)準(zhǔn)都已明確定義,并且隨著大多數(shù)網(wǎng)站、應(yīng)用程序和數(shù)據(jù)庫都在其上運(yùn)行,它們不會(huì)很快改變。SQL 數(shù)據(jù)庫使用 ISO 和 ANSI 制定的標(biāo)準(zhǔn)。除此之外,您會(huì)發(fā)現(xiàn)在使用、管理和更改 SQL 數(shù)據(jù)庫時(shí)不需要遵循其他標(biāo)準(zhǔn)。
便攜式數(shù)據(jù)庫
SQL 程序或數(shù)據(jù)庫一旦創(chuàng)建,就可以在不同的計(jì)算機(jī)、服務(wù)器、筆記本電腦和其他可以使用數(shù)據(jù)庫的設(shè)備上反復(fù)使用。這就是它成為軟件開發(fā)領(lǐng)域數(shù)據(jù)庫衛(wèi)冕冠軍的原因。
互動(dòng)語言
當(dāng)您使用 SQL 時(shí),您無需編寫復(fù)雜的代碼即可從數(shù)據(jù)庫中獲取答案。一行簡(jiǎn)單的代碼就足以讓您的所有答案從目錄中彈出。那是因?yàn)?SQL 被認(rèn)為是一種為數(shù)據(jù)庫和開發(fā)人員之間提供溝通橋梁而構(gòu)建的語言。
查看數(shù)據(jù)的多種方式
使用 SQL 時(shí),您可以自由地為單個(gè)數(shù)據(jù)庫創(chuàng)建多個(gè)視圖。因此,如果您希望多個(gè)用戶對(duì)同一塊數(shù)據(jù)有不同的看法,這可以在幾分鐘內(nèi)完成,而且任何用戶都看不到不希望他們看到的數(shù)據(jù)。
查詢處理更快
盡管它是在五年前發(fā)布的,但人們?nèi)匀徽J(rèn)為 SQL 非常快。輸入代碼后,它會(huì)在幾秒鐘內(nèi)檢索信息,無論信息有多大。另一方面,數(shù)據(jù)的插入、刪除、操作等操作都是即時(shí)完成的,而且你會(huì)在第一時(shí)間得到顯示的結(jié)果。
SQL 和 MySQL 的區(qū)別
假設(shè)您想要從事數(shù)據(jù)分析、大數(shù)據(jù)甚至數(shù)據(jù)庫管理員的職業(yè)。在那種情況下,您需要清楚地了解什么被認(rèn)為是 MySQL 以及 SQL 與它的不同之處。在下文中,我們提供了主要區(qū)別以幫助您開始使用它。下次您使用其中一種計(jì)算機(jī)編程語言時(shí),您將更好地了解它們的局限性以及您可以將它們推進(jìn)到什么程度。
數(shù)據(jù)庫
- SQL 是 Microsoft 開發(fā)的第一種數(shù)據(jù)庫編程語言。
- SQL 的主要功能是為用戶提供一種結(jié)構(gòu)化語言查詢系統(tǒng),可以幫助管理和檢索來自給定數(shù)據(jù)庫的數(shù)據(jù)。
- SQL 的語法和格式幾乎是固定不變的。您需要從子句開始,然后以分號(hào)結(jié)束。
- SQL 是一種基于專有的軟件,因此要使用它,您首先需要從開發(fā)人員那里購買。
- SQL 主要是為與 Windows 操作系統(tǒng)一起工作而構(gòu)建的,但對(duì)于所有最新版本,它也可以很好地與 Linux 和 Mac OS 一起工作。
- SQL更像是一種編程語言,許多數(shù)據(jù)庫管理系統(tǒng)都使用它自己。
- 除此之外,SQL 僅適用于單個(gè)存儲(chǔ)引擎,但它支持多個(gè)操作。
- 使用 SQL 的服務(wù)器非常安全,因?yàn)槿魏蔚谌交蛲獠咳藛T都不能或不允許對(duì)您創(chuàng)建的數(shù)據(jù)庫進(jìn)行更改。
- 服務(wù)器和 SQL 都獨(dú)立工作。因此,即使在恢復(fù)會(huì)話期間,開發(fā)人員也可以快速處理數(shù)據(jù)庫,而不必?fù)?dān)心服務(wù)器停機(jī)或正在維修。
- 在恢復(fù)大量數(shù)據(jù)時(shí),SQL 比任何其他數(shù)據(jù)庫管理系統(tǒng)花費(fèi)的時(shí)間都少得多。
- 您可以在執(zhí)行執(zhí)行時(shí)截?cái)?SQL 中的查詢,而不必禁用整個(gè)過程。
- 最后,SQL 有多種語言版本,讓更多人無需學(xué)習(xí)英語就可以使用它
MySQL
MySQL 的開發(fā)者是 MySQL AB,但現(xiàn)在歸甲骨文公司所有。MySQL 的功能是使用 SQL 從各種數(shù)據(jù)庫中查詢數(shù)據(jù)。這就是它被稱為關(guān)系數(shù)據(jù)庫系統(tǒng)的原因。MySQL 與其說是一種編程語言,不如說是一個(gè)程序。因此,您將找不到任何可在 MySQL 中遵循的命令或格式。MySQL 是一個(gè)對(duì)所有人免費(fèi)的開源平臺(tái)。因此,任何人都可以訪問它并在他們的項(xiàng)目中使用它。
MySQL 可用于跨平臺(tái)工作,因此您可以在 Linux、Windows 甚至蘋果的 Mac OS 上使用它。MySQL 支持所有不同類型的編程語言,例如 C、C++、Perl、PHP、Python、Ruby 等。MySQL 還與許多存儲(chǔ)引擎一起工作,并且它不會(huì)占用大量空間來執(zhí)行許多需要執(zhí)行的功能。您甚至還可以啟用存儲(chǔ)引擎插件。作為開源軟件,MySQL 比 SQL 更容易受到安全威脅。它甚至可以允許未經(jīng)授權(quán)的用戶在運(yùn)行時(shí)操作和修改數(shù)據(jù)。
MySQL 服務(wù)器不能獨(dú)立于它們的數(shù)據(jù)庫工作,因此它們會(huì)占用用戶執(zhí)行任何其他操作的時(shí)間。在 MySQL 中恢復(fù)數(shù)據(jù)會(huì)花費(fèi)大量的時(shí)間,并且還需要您輸入大量的 SQL 語句才能開始恢復(fù)過程。當(dāng)查詢處于執(zhí)行過程中時(shí),您無法取消查詢。您可以取消它,但是整個(gè)過程將停止并需要重新啟動(dòng)。因此,要使用它,您必須先了解英語。
使用 SQL 時(shí)的技巧
您可以通過使用這些技巧來增強(qiáng)您的 SQL 體驗(yàn),并且可以通過使用這些 SQL 技巧來提高查詢性能甚至數(shù)據(jù)分組。
使用描述性名稱
使用 SQL 時(shí),最好為列和表使用簡(jiǎn)單易懂的名稱。如果用戶創(chuàng)建了一個(gè)名為“user”的表,那么最好保留該列,不要將其命名為“user_name”、“user_birthday”等。您應(yīng)該將它們命名為“姓名”和“生日”,以便更具描述性。另一方面,當(dāng)您發(fā)現(xiàn)自己組合數(shù)據(jù)以定期檢索列時(shí),最好在您的模式中添加一個(gè)新列來保存這些新數(shù)據(jù)。此外,這將簡(jiǎn)化您的查詢,并且它們不需要任何進(jìn)一步的數(shù)據(jù)操作。
正確格式化代碼
格式化將為您的代碼添加視覺特征,它甚至不會(huì)影響表格的結(jié)果。但是,如果最終出現(xiàn)錯(cuò)誤,它會(huì)使您的代碼更容易理解、調(diào)試和分析。每個(gè)人都有自己喜歡的格式使用方式。您可以選擇自己喜歡的格式,然后確保與它保持一致。同樣,最好在添加任何重要子句之前使用換行符以更好地格式化代碼。
遵循執(zhí)行命令
執(zhí)行順序是子句的列出方式以及程序開始執(zhí)行時(shí)的執(zhí)行順序。當(dāng)您在 SQL 中創(chuàng)建程序時(shí),您最終可能會(huì)因執(zhí)行順序發(fā)生變化而給自己制造問題。這很像烤蛋糕;您需要在編寫查詢時(shí)按照這些步驟為您提供所需的結(jié)果。以正確的方式遵循執(zhí)行順序,您將永遠(yuǎn)不必?fù)?dān)心使用性能提升技巧來使事情順利進(jìn)行。
避免使用過度規(guī)范化
您不應(yīng)創(chuàng)建僅包含一列或兩列的表。下面舉個(gè)例子,讓大家更容易理解。如果您正在創(chuàng)建電話的通話記錄,最好不要提供郵政編碼和日期以擁有自己的表并使用外鍵。如果這樣做,您最終會(huì)增加重復(fù) SQL 的數(shù)量,然后對(duì)數(shù)據(jù)庫造成更高程度的壓力。
總是要高,不要寬
如果您的表有超過幾十個(gè)列和順序數(shù)據(jù),例如“地址的第一行”或“地址的第二行”,您可能會(huì)創(chuàng)建又大又寬的表。另一方面,你會(huì)給數(shù)據(jù)庫帶來很大的壓力。在這種情況下,創(chuàng)建一個(gè)新表來存儲(chǔ)順序數(shù)據(jù)將是一個(gè)好主意。您還可以使用 JSON 列來改進(jìn)表的生成,但請(qǐng)記住它們不適合分析環(huán)境。
包起來
這就是 SQL 的意義所在;如果你想成為一名數(shù)據(jù)科學(xué)家或從事任何其他與數(shù)據(jù)相關(guān)的領(lǐng)域,最好先學(xué)習(xí) SQL,然后再繼續(xù)。SQL 構(gòu)成了您理解數(shù)據(jù)庫管理系統(tǒng)如何運(yùn)行的基礎(chǔ)。此外,一旦你掌握了它,你將能夠快速學(xué)習(xí)其他數(shù)據(jù)庫管理軟件。我們希望本文能消除您對(duì) SQL 的任何困惑。如果我們遺漏了您認(rèn)為我們應(yīng)該包括的任何內(nèi)容,請(qǐng)?jiān)谠u(píng)論中告訴我們。我們將對(duì)其進(jìn)行調(diào)查并進(jìn)行必要的更改。