1. 程式人生 > >DBA必讀的資料庫查詢語言使用內幕

DBA必讀的資料庫查詢語言使用內幕

譯者:劉浩健
原標題:Query Language Type Overview
連結:https://www.percona.com/blog/2016/12/29/query-language-type-overview/

本文將提供一個查詢語言型別的概述。

這篇部落格的靈感來源於一些客戶問我的問題,當在一個特定的領域工作時,你經常會碰到一些對你們這行來說非常有意義的專用詞彙,它通常包括了高效的短語和縮寫。

資料庫也一樣,資料庫語言對於DBA而言可能很有意義,但對於沒有接觸過它的人來說聽起來倒有點像“巫術”。以下這篇文章涵蓋了SQL裡面查詢語言的基本型別,我希望它能夠闡明SQL的含義,使你能夠更好地理解和使用SQL。

DDL(資料定義語言)

資料庫模式是一系列視覺化的資訊。它由表、檢視和任何包含資料的結構組成,同時定義瞭如何儲存和視覺化資訊。

資料庫模式就像一個架構,它定義瞭如何去組織資料。任何對這個架構進行的建立、更新或者更改操作就是DDL。

還記得電子表格嗎?一張表的定義描述了以下類似資訊:

當你想要建立一張類似的表時,你必須要使用DDL,例如:

Create、Alter、Drop等這些型別的結構修改查詢就是DDL。定義表的結構非常重要,因為它定義了儲存在資料庫中資訊的訪問和視覺化方式。

但我為什麼要在意這麼多?

DDL定義了你開發程式的結構,同時也定義了資料庫伺服器搜尋表資訊的方式,以及它是如何關聯到其他表(例如,使用外來鍵)。

不像MongoDB這種NoSQL解決方案,你必須在新增資訊前設計好你的MySQL模式。MySQL設計模式可能更加嚴格,但如果你想正確的儲存和查詢資訊,這將是非常有意義的。

在大多數場景下,由於RDBMS系統的嚴格性,改變資料結構(或者表模式)需要系統重建實際表。這對於資料庫效能或者表的可用性(鎖定)來說可能存在問題。通常這是一個“熱”過程(從MySQL5.6開始),操作時不需要停機。

除此之外,pt-osc工具等其他開源解決方案也可用於不停機改變資料結構。例如:

DML(資料操作語言)

資料操作聽起來有點像處理內部的結構資訊,資料操作通常有插入和刪除資訊(新增行,刪除行)例如:

恩,但我為什麼要使用它呢?

除非你往資料庫中插入和提取資訊,否則擁有一個數據庫環境對你來說毫無意義。記住,資料庫是無處不在的,當你在最喜歡的部落格網站上點選一個連結時,這很可能意味著你正在從一個數據庫中獲取資訊(資料被插入或者修改了一次)。所以,與資料庫互動時,你需要編寫DML語句。

DCL (資料控制語言)

資料控制語言是任何用於管理訪問資料庫內容的操作,例如GRANT:

很好,但為什麼會在SQL裡會有另一種語言的子集?

作為資料庫環境的使用者,有時候你需要通過別人去執行DCL查詢才能得到訪問許可權。

在MySQL中,資料控制語言是用來定義訪問如表、檢視、變數等資料結構的授權規則。

TCL (事務控制語言)

事務控制語言在資料庫中用來控制事務的處理。那事務處理究竟是什麼意思呢?

事務處理通常和DML查詢綁在一起,例如:

這使你能夠執行或者回滾一個完整的動作。但只有像InnoDB這種提供事務支援的的儲存引擎才能使用TCL。

為什麼又多了一個術語?

你是否曾經想過把幾種資訊結合起來並把它當做一條事務來執行?在某些情況下,事務能夠確保你首先執行插入,然後執行的更新是有意義的。

如果不使用事務,插入可能會失敗,關聯的更新也可能變成無效的條目。

事務能夠確保一個完整的事務(一組DML查詢)要麼生效,要麼完全回滾(這也稱為原子性)。

希望本文能幫助你瞭解一些資料庫的內幕。