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 是负责 数据库对象修改的指令,相较于 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 则是删除 数据库对象的指令,并且只需要指定要删除的数据库对象名称即可,在 DDL 语法中算是最简单的。
例如:
DROP TABLE myTable; -- 删除 myTable 数据表。
DROP VIEW myView; -- 删除 myView 检视表。