SQL語言概況(4.1)

来源:https://www.cnblogs.com/liujiaxin-alpha/archive/2020/04/24/12769148.html
-Advertisement-
Play Games

SQL語言概況(4.1) [toc] 參考資料: 資料庫原理及設計(第3版) 配套資料庫為:microsoft sql server 參照ANSI SQL 92標準 4.1 SQL語言概況 4.1.1 歷史及標準簡介 一切都源於 關係型資料庫之父 —— Edgar Frank Codd 於1970年 ...


SQL語言概況(4.1)

目錄

參考資料:

資料庫原理及設計(第3版)

配套資料庫為:microsoft sql server

參照ANSI SQL-92標準

4.1 SQL語言概況

4.1.1 歷史及標準簡介

一切都源於關係型資料庫之父——Edgar Frank Codd 於1970年6月首次提出了關係數據模型。

之後嘛,肯定是經歷了以下這個過程:

  • 各學校、公司開始理論研究,看看這個玩意兒能不能給帶來利益?!

  • 誒?!好像可以帶來利益誒……那我們開發成產品商化吧,再配套一個使用工具(語言)!

  • 權威機構:麻了?!怎麼發展的這麼蓬勃(五花八門)?!不得行,是時候我出場統一一下標準了!

  • 基於標準開發,再來點擴展,投放市場使用……

    其它公司:誒?!好玩意兒……可是我們的開發應用要界面啊,能不能把這個嵌入到其他語言中使用?!

  • ……

至此,我們來梳理一下真正的歷史過程

  • 1974年BoyceChamberlin提出SQL

  • 20世紀70年代中期,IBM公司在研製System R 的過程中,開發了世界上最早的SQL語言

  • 1979年,Oracle公司最先提出了商用的SQL語言

  • SQL標準變遷史

    • 1986年10月,ANSI制訂,SQL-86
    • 1989年,ANSI改進,SQL-89
    • 1992年,ANSI與ISO合作改動完善,SQL-92
    • 1999年,增加面向對象特征擴展,提出SQL:1999
    • 2003年,SQL:2003
    • ……

    可以說,命名就很有意思了,就是年份結尾嘛,但是1999年開始變成四位數字,具體原因我也是百度了一篇博客,放出來《SQL標準簡介

    https://blog.csdn.net/lengye7/article/details/80606489

    還有一點,非正式的一些稱呼

    • 第一代SQL語言,SQL1,SQL-86 & SQL-89
    • 第二代SQL語言,SQL2,SQL-92
    • 第三代SQL語言,SQL3,SQL:1999

其中,針對於SQL-92來說,絕大多數RDBMS產品不是完全支持的,那差異一般都會體現在SQL命令的語法上面。

針對這個不完全支持,我們可以從兩個方向上來看

  • SQL-92中的某些功能,在實際RDBMS中可能沒有得到支持
  • 實際RDBMS也有可能出現該標準中沒有的功能和特性

那麼根據支持SQL-92的程度,我們可以分為三種:

  • 入門(entry)級:其功能特性接近SQL-89
  • 中間(intermediate)級:包含SQL-92近一半的新特點
  • 完全(full)版:完全支持

因此,所給的建議是:

  • 使用具體的RDBMS時,查閱產品的技術資料
  • 增強SQL代碼的移植性,最好採用在SQL標準中也推薦的功能

4.1.2 SQL語言定義及特點

什麼是SQL語言

  • 是最流行的一種資料庫語言
  • 結構化查詢語言(structured query language
  • 是RDBMS支持的資料庫語言

很多人會跟我有一樣的疑問,為啥叫查詢語言???

  • 首先不要被這個名字誤導了,並不是它只支持查詢,它的功能還有很多,,比如數據模式定義、數據的“增、刪、改”以及安全和事務控制功能。

    所以說……一個好的名字還是很重要的……

  • 具體原因:從操縱數據的角度來看,查詢是最重要也是用的最多的操作(想想你們自己管理開發的時候,是不是動不動就要查詢這個查詢那個?!)

接下來,我們看看這個SQL語言有哪些功能特點呢

  1. 功能一體化。

    說的有點玄乎,實際上就是,它作為資料庫語言的一種,也是遵循資料庫語言的劃分,由3個子語言構成:

    • DDL(data definition language)
    • DML(data manipulation language)
    • DCL(data control language)

    各個自語言又有很多自己的功能……

  2. 語言非過程化。

    之前我們說過,它的名字中有結構化,那什麼是結構化,什麼是過程化呢?

    • 結構化是相對於過程化來說的
    • 過程化的語言:需要用戶在程式設計中指明程式“做什麼”,還需要程式員按照一定的演算法編寫出“怎麼做”的程式來。
    • 結構化的預言(以RDBMS為例):用戶只需要定義“做什麼”,RDBMS系統內部會解決“怎麼做”。
  3. 互動式與嵌入式使用。

    • 互動式(interactive):用戶直接在RDBMS控制臺上使用SQL語言中的SQL命令直接交互。
    • 嵌入式(embedded):在過程化語言(宿主host語言)中使用。
  4. 標準化與易移植性。

    之前,我們也說過,各個具體的RDBMS產品中支持的SQL語言情況是有所差異的,但是大多都能支持標準的大部分,因此,移植起來會相對容易。

4.1.3 使用說明

利用SQL語言,可以完成關係模型的具體化,那我們之前知道,任何模型都包括3方面的內容:

  • 數據結構
  • 完整性約束
  • 數據操縱

那麼如何將這三部分具體化呢?

這由SQL語言中的兩個子語言承擔:

  • DDL完成數據結構和完整性約束
  • DML完成數據操縱

之後,我將會分塊對這兩個子語言進行學習……


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • roundrobin:動態輪詢;支持權重的運行時調整,支持慢啟動,每個後端中最多支持4095個server;什麼意思呢?動態調整權重就是說不重啟服務的情況下調整權重;慢啟動說的是,前端的流量不會一下子全部給打進來,而是一部分一部分的打到後端伺服器上;這樣可以有效防止流量過大時一下子把後端伺服器壓垮... ...
  • 2018年3月,我與張老師就這麼在微信上聊了起來,起初我並沒有寫書的打算,我們之間只是通過討論、交流的形式聊聊關於出書的方方面面。最終,敵不過張老師超強的專業能力、細緻的解說與盛情相邀,我答應張老師寫一本Linux系統運維的圖書並由人郵出版。由此,我踏上了漫漫2年多的寫書之路。 為什麼寫這本書 寫書 ...
  • 背景 By 魯迅 By 高爾基 說明: 1. Kernel版本:4.14 2. ARM64處理器,Contex A53,雙核 3. 使用工具:Source Insight 3.5, Visio 1. 概述 我會假設你已經看過了 "《Linux RCU原理剖析(一) 初窺門徑》" 本文將進一步去探索下 ...
  • 程式和進程式控制制 ps:顯示系統瞬間的進程信息 top:動態監視系統任務工具,輸出結果是連續的 kill:根據PID控制進程 killall:殺死指定名稱進程,可以用來殺死一組進程 nice:允許在預設優先順序基礎上進行增大或減小 renice:改變一個正在運行的進程的neice值 用戶操作: user ...
  • 1. install 2. 啟動台里啟動一下圖標 3. 驗證是否安裝好 在終端輸入 、`docker version`看到列印出來信息就是OK了 ...
  • Vim文本編輯器的使用 Vim的工作模式 1.命令模式 2.輸入模式 3.編輯模式 進入Vim 1.使用Vim打開文件 2.直接進入指定位置 Vim基本命令 1.插入命令 2.游標移動命令 3.使用Vim進行編輯 保存退出命令 Vim的工作模式 命令模式 輸入模式 編輯模式 命令模式 在使用Vim編 ...
  • 這是微軟的內核工程師 Axel Rietschin在Quora的一個回答。 Windows 10 的code base 和Windows 8.x , 7 , Vista , XP , 2000 和Windows NT的code base 是相同的,當然是演化過來的,其中的每一代都進行了重大的重構,增 ...
  • MySQL的帳號操作 一 查看所有用戶 在mysql的user表中存儲了MySQL的用戶信息 主要欄位: Host表示允許訪問的主機 User表示用戶名 authentication_string表示加密後的密碼 二 創建用戶和授權 三 修改許可權 四 修改密碼 五 刪除賬戶 六 遠程登錄(危險慎用) ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...