複製鏈接
請複製以下鏈接發送給好友

數據定義語言

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

目錄

數據定義語言簡介

Sql語句分為三大類:數據定義語言,負責創建、修改、刪除表、索引、視圖、函數、存儲過程和觸發器等對象;數據操縱語言,負責數據庫中數據的插入、修改、刪除等操作;數據控制語言,用來授予和撤銷用户權限。

數據定義語言舉例

數據定義語言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等等。
又例如,CREATE TABLE (建立數據表) 的指令為:
CREATE TABLE [dbo].[PurchaseOrderDetail]
(
[PurchaseOrderID] [int] NOT NULL REFERENCES Purchasing.PurchaseOrderHeader(PurchaseOrderID), -- 具引用完整性限制字段
[LineNumber] [smallint] NOT NULL,
[ProductID] [int] NULL REFERENCES Production.Product(ProductID), -- 具引用完整性限制字段
[UnitPrice] [money] NULL,
[OrderQty] [smallint] NULL,
[ReceivedQty] [float] NULL,
[RejectedQty] [float] NULL,
[DueDate] [datetime] NULL,
[rowguid] [uniqueidentifier] ROWGUIDCOL NOT NULL CONSTRAINT [DF_PurchaseOrderDetail_rowguid] DEFAULT (newid()), -- 具限制字段,並有默認值
[ModifiedDate] [datetime] NOT NULL CONSTRAINT [DF_PurchaseOrderDetail_ModifiedDate] DEFAULT (getdate()), -- 具限制字段,並有默認值
[LineTotal] AS (([UnitPrice]*[OrderQty])),
[StockedQty] AS (([ReceivedQty]-[RejectedQty])),
CONSTRAINT [PK_PurchaseOrderDetail_PurchaseOrderID_LineNumber] -- 主鍵宣告
PRIMARY KEY CLUSTERED ([PurchaseOrderID], [LineNumber])
WITH (IGNORE_DUP_KEY = OFF)
)
ON [PRIMARY]
其中,每個字段的格式都有定義,並且若有需要建立參考完整性的鏈接時,可以使用 REFERENCES 來聲明,主鍵則是用PRIMARK KEY 來聲明,計算型字段(Computed Field)則是直接給定表達式等等,CREATE TABLE 指令很常用,但若設置起來會較為複雜,因此很多數據庫管理人員都會使用GUI工具來設計。
其他像是:
CREATE INDEX:建立數據表索引。
CREATE PROCEDURE:建立預存程序。
CREATE FUNCTION:建立用户函數。
CREATE VIEW:建立查看錶。
CREATE TRIGGER:建立觸發程序
等等,都是使用來建立不同數據庫對象的指令。

數據定義語言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 檢視表。

數據定義語言SQL語言

數據定義語言邏輯結構

SQL語言支持的關係數據庫三級邏輯結構 [1] 
1) SQL語言支持的關係數據庫三級邏輯結構由外層、概念層和內存構成。
2)在概念層,對應於概念模式的概念記錄型的是基本表。基本表是這樣的一種表,它本身實際存在。一個基本表就是一個關係,它不是由其他表導出的表。基本表是使用CREATE TABLE語句建立的。
3)在外層,用户所看到的可以是基本表,也可以是視圖,也可以是基本表+視圖。視圖是一個虛擬表,它是由一個或幾個基本表導出的表,它不直接存在於物理存儲器上的表。視圖是使用CREATE SQL VIEW語句建立的。
4)在內層,每個基本表用一個存儲文件來表示,即用一組類型相同的存儲記錄值來表示。DBA可以對物理存儲文件進行操作。

數據定義語言主要特點

1) SQL語言類似於英語的自然語言,語言簡潔,易學易用,初學者經過短期培訓就可以使用SQL存取數據。
2) SQL語言是一種非過程語言,只要用户提出“幹什麼”,至於“怎麼幹”則由RDBMS來解決,向用户隱蔽數據的存取路徑。
3) SQL語言是一種面向集合的語言,操作的對象和結果都是關係。
4) SQL語言既可獨立使用,又可嵌入到宿主語言中使用,具有自含型和宿主型兩種特點。
5) SQL語言具有查詢、操作、定義和控制四種語言一體化的特點。
參考資料
  • 1.    李武 姚珺.數據庫原理及應用:哈爾濱工程大學出版社,2011:179