DBA必讀的數據庫查詢語言使用內幕
本文將提供一個查詢語言類型的概述。
這篇博客的靈感來源於一些客戶問我的問題,當在一個特定的領域工作時,你經常會碰到一些對你們這行來說非常有意義的專用詞匯,它通常包括了高效的短語和縮寫。
數據庫也一樣,數據庫語言對於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查詢)要麼生效,要麼完全回滾(這也稱為原子性)。
希望本文能幫助你了解一些數據庫的內幕。
原文發布時間為:2017-03-29
本文來自雲棲社區合作夥伴DBAplus
最後更新:2017-05-16 11:32:04