王朝百科
分享
 
 
 

资料定义语言

王朝百科·作者佚名  2010-08-29  
宽屏版  字体: |||超大  

定义数据定义语言(Data Definition Language, DDL) 是SQL语言集中,负责数据结构定义与数据库对象定义的语言,由CREATE、ALTER与DROP三个语法所组成,最早是由 Codasyl (Conference on Data Systems Languages) 数据模型开始,现在被纳入 SQL 指令中作为其中一个子集。

语法结构目前大多数的DBMS都支持对数据库对象的DDL操作,部份数据库 (如 PostgreSQL) 可把DDL放在交易指令中,也就是它可以被撤回 (Rollback)。较新版本的DBMS会加入DDL专用的触发程序,让数据库管理员可以追踪来自DDL的修改。CREATECREATE 是负责数据库对象的建立,举凡数据库、数据表、数据库索引、预存程序、用户函数、触发程序或是用户自定型别等对象,都可以使用 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:建立触发程序。

等等,都是使用来建立不同数据库对象的指令。ALTERALTER 是负责数据库对象修改的指令,相较于 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 字段。DROPDROP 则是删除数据库对象的指令,并且只需要指定要删除的数据库对象名称即可,在 DDL 语法中算是最简单的。

例如:

DROP TABLE myTable; -- 删除 myTable 数据表。

DROP VIEW myView; -- 删除 myView 检视表。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用java替换看不见的字符比如零宽空格​十六进制U+200B
 干货   2023-09-10
网页字号不能单数吗,网页字体大小为什么一般都是偶数
 干货   2023-09-06
java.lang.ArrayIndexOutOfBoundsException: 4096
 干货   2023-09-06
Noto Sans CJK SC字体下载地址
 干货   2023-08-30
window.navigator和navigator的区别是什么?
 干货   2023-08-23
js获取referer、useragent、浏览器语言
 干货   2023-08-23
oscache遇到404时会不会缓存?
 干货   2023-08-23
linux下用rm -rf *删除大量文件太慢怎么解决?
 干货   2023-08-08
刀郎新歌破世界纪录!
 娱乐   2023-08-01
js实现放大缩小页面
 干货   2023-07-31
生成式人工智能服务管理暂行办法
 百态   2023-07-31
英语学习:过去完成时The Past Perfect Tense举例说明
 干货   2023-07-31
Mysql常用sql命令语句整理
 干货   2023-07-30
科学家复活了46000年前的虫子
 探索   2023-07-29
英语学习:过去进行时The Past Continuous Tense举例说明
 干货   2023-07-28
meta name="applicable-device"告知页面适合哪种终端设备:PC端、移动端还是自适应
 干货   2023-07-28
只用css如何实现打字机特效?
 百态   2023-07-15
css怎么实现上下滚动
 干货   2023-06-28
canvas怎么画一个三角形?
 干货   2023-06-28
canvas怎么画一个椭圆形?
 干货   2023-06-28
canvas怎么画一个圆形?
 干货   2023-06-28
canvas怎么画一个正方形?
 干货   2023-06-28
中国河南省郑州市金水区蜘蛛爬虫ip大全
 干货   2023-06-22
javascript简易动态时间代码
 干货   2023-06-20
感谢员工的付出和激励的话怎么说?
 干货   2023-06-18
 
>>返回首页<<
 
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有