CREATE
![數據定義語言](/img/0/063/nBnauM3XyIDNwQjNwgDN4UzN1QTM5IzM2MzMzQTNwAzMxAzL4QzLxgzLt92YucmbvRWdo5Cd0FmLzE2LvoDc0RHa.jpg)
例如,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
![數據定義語言](/img/7/c08/nBnauM3XxATN2QzN0gDN4UzN1QTM5IzM2MzMzQTNwAzMxAzL4QzL3MzLt92YucmbvRWdo5Cd0FmL0E2LvoDc0RHa.jpg)
ALTER TABLE doc_exb DROP COLUMN column_b ; -- 在數據表 doc_exb 中移除 column_b 欄位。
DROP
DROP 則是刪除資料庫對象的指令,並且只需要指定要刪除的資料庫對象名稱即可,在 DDL 語法中算是最簡單的。例如:
DROP TABLE myTable; -- 刪除 myTable 數據表。
DROP VIEW myView; -- 刪除 myView 檢視表。