無廢話SQL語法--SQL資料定義語言簡介

  在我們學完SELECT語法、INSERT語法、UPDATE語法、DELETE語法、函數…之後,其實它們有一個正式的名稱叫「資料操作語言(Data Manipulation Language, DML)」,簡言之,重點在「操作」兩個字,也就是說不管是SELECT、INSERT、UPDATE、DELETE就是注重資料表或資料欄位裡的資料操作。如果你有用心操作過之前的每一個例子,那你應該很清楚它們為什麼被歸類在「操作」這一項目中。

  但我們在產生這些資料庫(Data Base)、資料表(Table)、資料欄位(Field)之前,它們又是怎麼產生的呢?想想我們剛開始介紹時,我請大家安裝北風資料庫時,只是打開一個*.sql的檔案,然後按一下「F5」就完成了整個資料庫、資料表、資料欄位及欄位內的資料,都在瞬間完成,這是怎麼辨到的?這時候必須依賴SQL語法中另一種語言的幫忙,我們稱它為「資料定義語言(Data Definition Language, DLL)」,一樣,重點在「定義」兩個字,它要定義這些資料在資料庫中代表的義意。資料定義語言用來建立、改變或刪除一個資料庫物件。它只會影響資料庫物件的「結構」,不會加入、更新或刪除其中的資料。

  [CREATE | ALTER | DROP] DATABASE
  [CREATE | ALTER | DROP] TABLE
  [CREATE | ALTER | DROP] VIEW
  [CREATE | ALTER | DROP] PROCEDURE
  [CREATE | ALTER | DROP] TRIGGER
  [CREATE | ALTER | DROP] FUNCTION
  [CREATE | ALTER | DROP] INDEX

  資料定義語言的功能分為三大類,一、新增(CREATE);二、修改(ALTER);三、刪除(DROP),後面是你要作用的物件,例如你要新增一個名稱資料庫:CREATE DATABASE。

  而「操作語言」與「定義語言」的使用時機與人員各有不同,我做了以下的歸納:
  1. User <--> Interface <--> DML <--> Data Base
      使用者透過程式開發人員所撰寫的應用程式介面(Interface),然後透過DML語言來與資料庫做查詢、新增、更新、刪除資料等動作。

      例如,我們在一網站註冊會員資料,你是透過註冊網頁(Interface)來填寫資料,然後按一下「送出」,而送出就是將你的資料與DML做結合,然後送到資料庫中去執行,然後產生成功或失敗的結果,然後再反應回來一個訊息給你。

  2. Manager <--> Interface <--> DML, DDL <--> Data Base
      資料庫管理者當然也可以使用DML來進行資料相關的操作,但其實更重要的可以使用DDL來對資料庫進行結構新增、修改、刪除等動作,以進行資料庫管理及最佳化的工作。

      接上例:管理者除了可以管理註冊會員資料外,事前還要先規劃好這些資料的內容,例如:要事先定義會員註冊資料表的欄位要有那些?各個欄位的資料型別為那些?各個欄位的長度是多少?那些是必填,那些是允許空白可不填寫?那些是主鍵?那些是外來鍵?有沒有限制條件?要不要做資料庫正規化?…(很多看不懂,沒關係後面會慢慢介紹)

      也就是說,DDL的對象是「整個資料庫」規劃及異動,而DML是針對「資料庫中某個資料表」來作用。我之前有提過MySQL的管理軟體phpMyAdmin,如果你沒玩過,我建議花一點點時間玩一下,你會發現它可以把所有資料庫的管理工作完完全全的「網頁化」了,而這個phpMyAdmin就是那個管理者的Interface,我們使用的SSMSE也是。
  所以你會發現,一個好的資料庫系統管理者(Data Base Administrator, DBA)不只要學習DML,而DDL更是少不了的功夫,接下來我們一步一步介紹。

註:如果你在Windows系統下要架設PHP與MySQL環境,我建議可以使用WampServer這一套軟體,安裝、設定、使用都相當方便。

註:資料庫正規化不是DDL的一部份,但資料庫正規化後的結果就是DDL所要執行的內容,這後面會解釋。

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「+1」,我會很高興的。

无觅相关文章插件,迅速提升网站流量