但我們在產生這些資料庫(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。
而「操作語言」與「定義語言」的使用時機與人員各有不同,我做了以下的歸納:
- User <--> Interface <--> DML <--> Data Base
使用者透過程式開發人員所撰寫的應用程式介面(Interface),然後透過DML語言來與資料庫做查詢、新增、更新、刪除資料等動作。
例如,我們在一網站註冊會員資料,你是透過註冊網頁(Interface)來填寫資料,然後按一下「送出」,而送出就是將你的資料與DML做結合,然後送到資料庫中去執行,然後產生成功或失敗的結果,然後再反應回來一個訊息給你。
- Manager <--> Interface <--> DML, DDL <--> Data Base
資料庫管理者當然也可以使用DML來進行資料相關的操作,但其實更重要的可以使用DDL來對資料庫進行結構新增、修改、刪除等動作,以進行資料庫管理及最佳化的工作。
接上例:管理者除了可以管理註冊會員資料外,事前還要先規劃好這些資料的內容,例如:要事先定義會員註冊資料表的欄位要有那些?各個欄位的資料型別為那些?各個欄位的長度是多少?那些是必填,那些是允許空白可不填寫?那些是主鍵?那些是外來鍵?有沒有限制條件?要不要做資料庫正規化?…(很多看不懂,沒關係後面會慢慢介紹)
也就是說,DDL的對象是「整個資料庫」規劃及異動,而DML是針對「資料庫中某個資料表」來作用。我之前有提過MySQL的管理軟體phpMyAdmin,如果你沒玩過,我建議花一點點時間玩一下,你會發現它可以把所有資料庫的管理工作完完全全的「網頁化」了,而這個phpMyAdmin就是那個管理者的Interface,我們使用的SSMSE也是。
註:如果你在Windows系統下要架設PHP與MySQL環境,我建議可以使用WampServer這一套軟體,安裝、設定、使用都相當方便。
註:資料庫正規化不是DDL的一部份,但資料庫正規化後的結果就是DDL所要執行的內容,這後面會解釋。
沒有留言:
張貼留言
感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。