資料定義語言

维基百科,自由的百科全书
跳转至: 导航搜索

資料定義語言 (Data Definition Language, DDL) 是SQL語言集中,負責資料結構定義與資料庫物件定義的語言,由CREATEALTERDROP三個語法所組成,最早是由 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為交易記錄檔的宣告。 若需要更進階的設定,則還有 FORWITH 以及 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 檢視表。

參考資料[编辑]

  1. DDL
  2. MySQL SQL Syntax
  3. Oracle® Database SQL Language Reference
  4. Transact-SQL Reference
  5. PostgreSQL SQL Commands


数据库管理系统(DBMS) (查看 · 讨论 · 编辑)

概念
数据库 · 数据模型 · 数据库存储结构英语Database storage structures · 关系 (数据库) · 关系模型 · 分布式数据库 · ACID ( 原子性英语Atomicity (database systems) · 一致性 · 隔離性 · 持久性英语Durability (database systems) ) · Null值
关系数据库 · 关系模型 · 数据库规范化 · 數據庫完整性 · 實體完整性 · 參照完整性英语Referential integrity · 关系数据库管理系统 
主键 · 外键 · 代理键 · 超键 · 候选键 

数据库组件
触发器 · 视图 · 数据库表 · 指标 (数据库) · 事务日志英语Transaction log · 数据库事务 · 并发控制 · 乐观锁 · 悲观锁 · 数据库索引 
存储程序 · 資料庫分割

SQL
分类: 数据查询语言 (DQL) - 資料定義語言 (DDL) - 資料操縱語言 (DML) - 資料控制語言 (DCL)
指令:SELECT · INSERT · UPDATE · MERGE · DELETE · JOIN · UNION · CREATE · DROP · Begin work · COMMIT · ROLLBACK · TRUNCATE · ALTER
安全: SQL資料隱碼攻擊 · 參數化查詢

数据库管理系统的实现

实现类型
关系数据库 · 檔案型資料庫 · Deductive · 維度化資料庫 · 階層式 · 圖形資料庫 · 对象数据库 · 物件關聯式資料庫 · Temporal · XML資料庫

数据库产品
对象型 (对比) · 关系型 (对比)

数据库组件
数据查询语言 · 查詢最佳化器 · 查詢計畫 · 嵌入式SQL · ODBC · JDBC · OLE DB