數據定義語言

數據定義語言

數據定義語言(Data Definition Language,DDL)是SQL語言集中負責數據結構定義與資料庫對象定義的語言,由CREATE、ALTER與DROP三個語法所組成,最早是由Codasyl(Conference on Data Systems Languages)數據模型開始,現在被納入SQL指令中作為其中一個子集。目前大多數的DBMS都支持對資料庫對象的DDL操作,部份資料庫(如 PostgreSQL)可把DDL放在交易指令中,也就是它可以被撤回(Rollback)。較新版本的DBMS會加入DDL專用的觸發程式,讓資料庫管理員可以追蹤來自DDL的修改。

基本信息

CREATE

數據定義語言數據定義語言
CREATE 是負責資料庫對象的建立,舉凡資料庫、數據表、資料庫索引、預存程式、用戶函式、觸發程式或是用戶自定型別等對象,都可以使用 CREATE 指令來建立,而為了各式資料庫對象的不同,CREATE 也有很多的參數。
例如,CREATE DATABASE (建立資料庫) 的指令為:
CREATE DATABASE Sales
ON ( NAME = Sales_dat, FILENAME = 'saledat.mdf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 )
LOG ON ( NAME = Sales_log, FILENAME = 'salelog.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB )
其中的ON為資料庫檔案的聲明,而LOG ON為交易記錄檔的聲明。 若需要更高級的設定,則還有 FOR 和 WITH 以及 COLLATE等等。又例如,CREATETABLE(建立數據表)的指令為:
CREATETABLE[dbo].[PurchaseOrderDetail]
(
[PurchaseOrderID][int]NOTNULLREFERENCESPurchasing.PurchaseOrderHeader(PurchaseOrderID),--具引用完整性限制欄位
[LineNumber][smallint]NOTNULL,
[ProductID][int]NULLREFERENCESProduction.Product(ProductID),--具引用完整性限制欄位
[UnitPrice][money]NULL,
[OrderQty][smallint]NULL,
[ReceivedQty][float]NULL,
[RejectedQty][float]NULL,
[DueDate][datetime]NULL,
[rowguid][uniqueidentifier]ROWGUIDCOLNOTNULLCONSTRAINT[DF_PurchaseOrderDetail_rowguid]DEFAULT(newid()),--具限制欄位,並有默認值
[ModifiedDate][datetime]NOTNULLCONSTRAINT[DF_PurchaseOrderDetail_ModifiedDate]DEFAULT(getdate()),--具限制欄位,並有默認值
[LineTotal]AS(([UnitPrice]*[OrderQty])),
[StockedQty]AS(([ReceivedQty]-[RejectedQty])),
CONSTRAINT[PK_PurchaseOrderDetail_PurchaseOrderID_LineNumber]--主鍵宣告
PRIMARYKEYCLUSTERED([PurchaseOrderID],[LineNumber])
WITH(IGNORE_DUP_KEY=OFF)
)
ON[PRIMARY]
其中,每個欄位的格式都有定義,並且若有需要建立參考完整性的連結時,可以使用REFERENCES來聲明,主鍵則是用PRIMARKKEY來聲明,計算型欄位(ComputedField)則是直接給定表達式等等,CREATETABLE指令很常用,但若設定起來會較為複雜,因此很多資料庫管理人員都會使用GUI工具來設計。
其他像是:
CREATEINDEX:建立數據表索引。
CREATEPROCEDURE:建立預存程式。
CREATEFUNCTION:建立用戶函式。
CREATEVIEW:建立查看錶。
CREATETRIGGER:建立觸發程式。
等等,都是使用來建立不同資料庫對象的指令。

ALTER

數據定義語言數據定義語言
ALTER 是負責資料庫對象修改的指令,相較於 CREATE 需要定義完整的數據對象參數,ALTER 則是可依照要修改的幅度來決定使用的參數,因此使用上並不會太困難,例如:ALTER TABLE doc_exa ADD column_b VARCHAR(20) NULL ; -- 在數據表 doc_exa 中加入一個新的欄位,名稱為 column_b,數據型別為 varchar(20),允許 NULL 值。
ALTER TABLE doc_exb DROP COLUMN column_b ; -- 在數據表 doc_exb 中移除 column_b 欄位。

DROP

DROP 則是刪除資料庫對象的指令,並且只需要指定要刪除的資料庫對象名稱即可,在 DDL 語法中算是最簡單的。
例如:
DROP TABLE myTable; -- 刪除 myTable 數據表。
DROP VIEW myView; -- 刪除 myView 檢視表。

相關詞條

相關搜尋

熱門詞條

聯絡我們