数据定义完整性约束的实现.ppt
《数据定义完整性约束的实现.ppt》由会员分享,可在线阅读,更多相关《数据定义完整性约束的实现.ppt(55页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第5章 数据定义与完整性约束的实现nSQL的表定的表定义和完整性定和完整性定义功能功能nSQL数据操作与完整性数据操作与完整性约束的作用束的作用先建立数据库回忆第2章建立数据库的命令CREATE DATABASE 仓储订货ON(NAME=order_dat,FILENAME=c:mssqldataorderdat.mdf,SIZE=10,MAXSIZE=50,FILEGROWTH=5)LOG ON(NAME=order_log,FILENAME=d:mssqllogorderlog.ldf,SIZE=5MB,MAXSIZE=25MB,FILEGROWTH=5MB)5.1 SQL的表定义和完整性
2、定义功能定义架构定义表及其完整性约束修改表结构的命令3什么是架构(Schema)?定义架构CREATE SCHEMA 仓储CREATE SCHEMA 订货CREATE SCHEMA 基础5定义表及其完整性约束CREATE TABLE命令的基本格式列的定义计算列的定义表级约束6CREATE TABLE命令的基本格式一个表由若干列构成,在SQL Server 2005/2008中可以定义实列(简称列,column_definition)定义虚列(即计算列,computed_column_definition)理解:CREATE TABLE schema_name.table_name(|,.n )
3、列的定义()CREATETABLEschema_name.table_name(|,.n)column_name NULL|NOT NULL CONSTRAINT constraint_name PRIMARY KEY|UNIQUE|FOREIGN KEY REFERENCES schema_name.referenced_table_name (ref_column)ON DELETE NO ACTION|CASCADE|SET NULL|SET DEFAULT ON UPDATE NO ACTION|CASCADE|SET NULL|SET DEFAULT|CHECK (logical_e
4、xpression)DEFAULT constant_expression 列名列名数据数据类型型是否允是否允许空空值主关主关键字字约束束唯一性唯一性约束束参照完整性参照完整性约束束域完整性域完整性约束束定定义默默认值nPRIMARY KEY和和UNIQUE约束的区束的区别?n如何如何实现候候选关关键字字约束?束?9测试部门号部门号部门名部门名B1XB2YB3Z职工号职工号 职工名职工名 部门号部门号Z1AB1Z2CB2ONDELETENOACTION|CASCADE|SETNULL|SETDEFAULTONUPDATENOACTION|CASCADE|SETNULL|SETDEFAULT上面
5、这些短语说明,在被参照表的被参照记录上发生删除(DELETE)和更新(UPDATE)操作时的处理方式。BA进行级联处理进行级联处理禁止删除或更禁止删除或更新被参照记录新被参照记录将参照记录的对应将参照记录的对应字段设置为空值字段设置为空值将参照记录的对将参照记录的对应字段设置为默应字段设置为默认值认值计算列的定义column_nameAScomputed_column_expressionPERSISTEDNOTNULLCONSTRAINTconstraint_namePRIMARYKEY|UNIQUE|FOREIGNKEYREFERENCESreferenced_table_name(ref
6、_column)ONDELETENOACTION|CASCADEONUPDATENOACTION|CHECK(logical_expression)CREATETABLEschema_name.table_name(|,.n)为什么什么ON DELETE和和ON UPDATE少了一些内容?少了一些内容?由于是虚列,所以不能作为插入操作和更新操作的目标。由于是虚列,所以不能作为插入操作和更新操作的目标。由于是虚列,所以不能作为插入操作和更新操作的目标。由于是虚列,所以不能作为插入操作和更新操作的目标。表级约束如果某个完整性如果某个完整性约束与束与多个列多个列相关,相关,则这样的完整性的完整性约束
7、不能定束不能定义在在单个列上,个列上,这时候就需要候就需要表表级完整性完整性约束束。在定在定义表表时,需要先定,需要先定义被参照表,然后被参照表,然后定定义参照表。参照表。仓储数据库例5-1:定义仓库表CREATE TABLE 仓储仓储.仓库仓库(仓库仓库号号 CHAR(6)PRIMARY KEY,城市城市 CHAR(10),面面积积 INT CHECK(面面积积 0)仓库表属于表属于仓储架构架构,包含,包含仓库号、城市号、城市和面和面积等等3个字段。其中个字段。其中仓库号是主关号是主关键字,字,仓库的面的面积值是大于是大于0的整数。的整数。例5-2:定义职工表CREATETABLE基础.职工
8、(仓库号CHAR(6)CONSTRAINTref_whFOREIGNKEYREFERENCES仓储.仓库(仓库号),职工号CHAR(8)PRIMARYKEY,姓名CHAR(10),工资numeric(8,2)CHECK(工资=1000AND工资=0),PRIMARY KEY(仓库号,器件号)-属于表级完整性约束16 库存表属于存表属于仓储架构,包含架构,包含仓库号、器件号和数量等号、器件号和数量等3个字个字段。其中段。其中仓库号参照号参照仓库关系的关系的仓库号,器件号参照器件关系的号,器件号参照器件关系的器件号,主关器件号,主关键字由字由仓库号和器件号构成,号和器件号构成,库存数量存数量应该大
9、于等大于等于于0。例5-5:定义供应商表CREATE TABLE 订货.供应商(供应商号 CHAR(5)PRIMARY KEY,供应商名 CHAR(20),地址 CHAR(20)17 供供应商表属于商表属于订货架构,它包含供架构,它包含供应商号、供商号、供应商商名和地址等名和地址等3个字段。其中供个字段。其中供应商号是主关商号是主关键字。字。例5-6:定义订购单表。CREATE TABLE 订货.订购单(订购单号 CHAR(5)PRIMARY KEY,经手人 CHAR(8)NOT NULL REFERENCES 基础.职工(职工号),供货方 CHAR(5)NULL REFERENCES 订货.
10、供应商(供应商号),订购日期 DATETIME DEFAULT getdate(),金额 MONEY NULL)18 订购单表属于表属于订货架构,它包含架构,它包含订购单号、号、经手人、供手人、供货方、方、订购日期和金日期和金额等等5个字段。其中个字段。其中订购单号是主关号是主关键字;字;经手人是手人是负责该订购单的的职工号,它参照工号,它参照职工关系的工关系的职工号字段,工号字段,该字段不允字段不允许为空空值(强制制联系);供系);供货方是接受方是接受该订购单的供的供应商号,它参照供商号,它参照供应商关系商关系的供的供应商号字段,商号字段,该字段可以字段可以为空空值(非(非强制制联系);系)
11、;订购日期的默日期的默认值是系是系统的当前日期。的当前日期。例5-7:定义订购明细表。CREATE TABLE 订货.订购明细(订购单号 CHAR(5)FOREIGN KEY REFERENCES 订货.订购单ON DELETE CASCADE ON UPDATE CASCADE,序号 SMALLINT CHECK(序号=1),器件号 CHAR(6)FOREIGN KEY REFERENCES 基础.器件,单价 SMALLMONEY,数量 INT CONSTRAINT num CHECK(数量=0),PRIMARY KEY(订购单号,序号)19 订购明明细表属于表属于订货架构,它包含架构,它包
12、含订购单号、序号、器件号、号、序号、器件号、单价价和数量等和数量等5个字段。其中主关个字段。其中主关键字由字由订购单号和序号共同构成;号和序号共同构成;订购单号字段参照号字段参照订购单关系的关系的订购单号字段;器件号参照器件表的器件号字号字段;器件号参照器件表的器件号字段;序号段;序号为大于等于大于等于1的整数;数量的整数;数量为大于等于大于等于0的整数。的整数。修改表结构 ALTERTABLEschema_name.table_nameALTERCOLUMNcolumn_nameNULL|NOTNULL|ADD|DROPCONSTRAINTconstraint_name|COLUMNcolu
13、mn_name ALTER COLUMNALTER COLUMN修改已有列的定修改已有列的定义,但是只能修改,但是只能修改为兼容数据兼容数据类型或重新定型或重新定义是否允是否允许空空值;ADDADD新列、新列、计算列或表算列或表级约束;束;DROPDROP删除除约束或束或删除列。除列。例5-8:删除职工表上定义的约束ref_wh。ALTER TABLE 基础.职工DROP CONSTRAINT ref_wh21 如果在定如果在定义表和表和约束的束的时候没有用候没有用CONSTRAINT短短语指定指定约束名称?束名称?例5-9:添加完整性约束。ALTER TABLE 基础.职工ADD CONST
14、RAINT ref_whFOREIGN KEY(仓库号)REFERENCES 仓储.仓库(仓库号)ON DELETE SET NULL ON UPDATE CASCADE22 为职工表的工表的仓库号字段添加号字段添加约束,束,说明明该字段是外部关字段是外部关键字,同字,同时规定当被参照定当被参照记录被被删除除时,将参照,将参照记录的的仓库号字号字段段值置置为空空值(即空(即空值删除),当被参照除),当被参照记录的的仓库号修改号修改时级联修改参照修改参照记录的的仓库号字段号字段值(即(即级联更新)。更新)。例5-10:增加和删除字段。为订购明明细表增加一个完成日期字段:表增加一个完成日期字段:A
15、LTER TABLE 订货.订购明细ADD 完成日期 datetime 23删除除刚为订购明明细表增加的完成日期字段:表增加的完成日期字段:ALTER TABLE 订货.订购明细 DROP COLUMN 完成日期 为订购单表增加一个完成日期字段,默表增加一个完成日期字段,默认值是空是空值NULL:ALTER TABLE 订货.订购单 ADD 完成日期 datetime DEFAULT NULL例5-11:增加计算字段。ALTER TABLE 订货.订购明细 ADD 金额 AS 单价*数量24 为订购明明细表增加一个表增加一个计算字段,字段名算字段,字段名为金金额,计算表达式算表达式为单价价*数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 定义 完整性 约束 实现
限制150内