版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、SQL ServerSQL Server实用教程实用教程Page 12021年年12月月13日星期一日星期一q51 数据完整性的基本概念数据完整性的基本概念q52 约束约束q53 默认值默认值 q54 规则规则q55 标识列标识列IDENTITYq56 自定义数据类型自定义数据类型SQL ServerSQL Server实用教程实用教程Page 22021年年12月月13日星期一日星期一q教学要求:通过本章学习,读者应掌握以下内容:教学要求:通过本章学习,读者应掌握以下内容:v使用各种约束保证数据库的完整性使用各种约束保证数据库的完整性v使用规则、默认值来保证数据完整性使用规则、默认值来保证数
2、据完整性v对实现数据完整性的各种方法进行分析对实现数据完整性的各种方法进行分析SQL ServerSQL Server实用教程实用教程Page 32021年年12月月13日星期一日星期一q 数据完整性包括实体完整性、域完整性、参照完整性和用数据完整性包括实体完整性、域完整性、参照完整性和用户定义的完整性。户定义的完整性。 q 1实体完整性(实体完整性(Entity Integrity)q 实体完整性用于保证数据库中数据表的每一个特定实体都实体完整性用于保证数据库中数据表的每一个特定实体都是唯一的。它可以通过主键约束(是唯一的。它可以通过主键约束(PRIMARY KEY)、)、唯一键约束(唯一键
3、约束(UNIQUE)、索引或标识属性)、索引或标识属性(IDENTITY)来实现。)来实现。q 2域完整性域完整性(Domain Integrity)q 域完整性就是保证数据库中的数据取值的合理性,即保证域完整性就是保证数据库中的数据取值的合理性,即保证指定列的数据具有正确的数据类型、格式和有效的数据范指定列的数据具有正确的数据类型、格式和有效的数据范围。通过为表的列定义数据类型以及检查约束围。通过为表的列定义数据类型以及检查约束(CHECK)、默认定义()、默认定义(DEFAULT)、非空()、非空(NOT NULL)和规则实现限制数据范围,保证只有在有效范围)和规则实现限制数据范围,保证只
4、有在有效范围内的值才能存储到列中。内的值才能存储到列中。SQL ServerSQL Server实用教程实用教程Page 42021年年12月月13日星期一日星期一q 3参照完整性参照完整性(Referential Integrity)q 参照完整性定义了一个关系数据库中,不同的表中列之间参照完整性定义了一个关系数据库中,不同的表中列之间的关系(父键与外键)。要求一个表中(子表)的一列或的关系(父键与外键)。要求一个表中(子表)的一列或列组合的值必须与另一个表(父表)中的相关一列或列组列组合的值必须与另一个表(父表)中的相关一列或列组合的值相匹配。被引用的列或列组合称为父键,父键必须合的值相匹
5、配。被引用的列或列组合称为父键,父键必须是主键或唯一键,通常父键为主键,主键表是主表。是主键或唯一键,通常父键为主键,主键表是主表。q 引用父键的一列或列组合称为外键,外键表是子表。如果引用父键的一列或列组合称为外键,外键表是子表。如果父键和外键属于同一个表,则称为自参照完整性。子表的父键和外键属于同一个表,则称为自参照完整性。子表的外键必须与主表的主键相匹配,只要依赖某一主键的外键外键必须与主表的主键相匹配,只要依赖某一主键的外键存在,主表中包含该主键的行就不能被删除。存在,主表中包含该主键的行就不能被删除。q 当增加、修改或删除数据库表中记录时,可以借助参照完当增加、修改或删除数据库表中记
6、录时,可以借助参照完整性来保证相关联表之间数据的一致性。整性来保证相关联表之间数据的一致性。SQL ServerSQL Server实用教程实用教程Page 52021年年12月月13日星期一日星期一q4用户定义的完整性用户定义的完整性(User-defined Integrity)q这是由用户定义的完整性。用户可以根据自己的这是由用户定义的完整性。用户可以根据自己的业务规则定义不属于任何完整性分类的完整性。业务规则定义不属于任何完整性分类的完整性。由于每个用户的数据库都有自己独特的业务规则,由于每个用户的数据库都有自己独特的业务规则,所以系统必须有一种方式来实现定制的业务规则,所以系统必须有
7、一种方式来实现定制的业务规则,即定制的数据完整性约束。即定制的数据完整性约束。q用户定义的完整性可以通过自定义数据类型、规用户定义的完整性可以通过自定义数据类型、规则、存储过程和触发器来实现。则、存储过程和触发器来实现。SQL ServerSQL Server实用教程实用教程Page 62021年年12月月13日星期一日星期一q 约束是通过限制列中数据、行中数据以及表之间数据取值约束是通过限制列中数据、行中数据以及表之间数据取值从而保证数据完整性的非常有效和简便的方法。从而保证数据完整性的非常有效和简便的方法。 q 521 主键(主键(PRIMARY KEY)约束)约束q PRIMARY KE
8、Y约束在表中定义一个主键,唯一的标识约束在表中定义一个主键,唯一的标识表中的行。一个表只能有一个表中的行。一个表只能有一个PRIMARY KEY约束。约束。q 当向表中的现有列添加当向表中的现有列添加PRIMARY KEY约束时,约束时,SQL Server将检查列中现有的数据以确保现有数据遵从主键将检查列中现有的数据以确保现有数据遵从主键的规则,即无空值、无重复值。的规则,即无空值、无重复值。q 当当PRIMARY KEY约束由另一表的约束由另一表的FOREIGN KEY约束引约束引用时,不能删除被引用的用时,不能删除被引用的PRIMARY KEY约束,要删除约束,要删除它,必须先删除引用的
9、它,必须先删除引用的FOREIGN KEY约束。约束。q 每个表都应有一个主键。主键可以是一列或列组合。每个表都应有一个主键。主键可以是一列或列组合。SQL ServerSQL Server实用教程实用教程Page 72021年年12月月13日星期一日星期一q 1利用利用Management Studio定义(删除)主键定义(删除)主键q 2利用利用T-SQL语句定义(删除)主键语句定义(删除)主键q (1)在创建表时创建主键约束)在创建表时创建主键约束q 其语法格式如下。其语法格式如下。q 语法格式语法格式1:CREATE TABLE 数据表名数据表名(列名列名 数据类型数据类型 CONST
10、RAINT 约束名约束名 PRIMARY KEY CLUSTEREDNONCLUSTERD,)q 语法格式语法格式2:CREATE TABLE 数据表名数据表名( CONSTRAINT 约束名约束名 PRIMARY KEY CLUSTEREDNONCLUSTERD (列名列名1,n) ,)SQL ServerSQL Server实用教程实用教程Page 82021年年12月月13日星期一日星期一q 【例【例5.1】删除原有】删除原有kc表,重新创建表,重新创建kc表,字段定义不变,表,字段定义不变,同时将课程号设置为主键。同时将课程号设置为主键。USE xsglDROP TABLE kcGOC
11、REATE TABLE kc(课程号课程号 CHAR(4) NOT NULL CONSTRAINT pk_kch PRIMARY KEY,课程名课程名 CHAR(16) NOT NULL,学分学分 SMALLINT,学时数学时数 SMALLINT)SQL ServerSQL Server实用教程实用教程Page 92021年年12月月13日星期一日星期一q(2)向已有表中添加主键约束)向已有表中添加主键约束q其语法格式如下。其语法格式如下。ALTER TABLE 表名表名ADD CONSTRAINT 约束名约束名 PRIMARY KEY(列列名名1,n) ,)q-添加主键添加主键ALTER T
12、ABLE cjADD CONSTRAINT pk_xhkch PRIMARY KEY(学号学号,课程号课程号)GOSQL ServerSQL Server实用教程实用教程Page 102021年年12月月13日星期一日星期一q(3)删除主键约束)删除主键约束q其语法格式如下。其语法格式如下。ALTER TABLE 表名表名DROP CONSTRAINT 约束名约束名q例如要删除例如要删除cj表中的主键约束,可以利用如下语句:表中的主键约束,可以利用如下语句:qALTER TABLE cjqDROP CONSTRAINT pk_xhkchq注意:向表中添加主键约束时,注意:向表中添加主键约束时,
13、SQL Server 将检将检查现有记录的列值,以确保现有数据符合主键的规查现有记录的列值,以确保现有数据符合主键的规则,所以在添加主键之前要保证主键列没有空值和则,所以在添加主键之前要保证主键列没有空值和重复值。重复值。SQL ServerSQL Server实用教程实用教程Page 112021年年12月月13日星期一日星期一q可使用可使用UNIQUE约束确保在非主键列中不输入重约束确保在非主键列中不输入重复值。在允许空值的列上保证唯一性时,应使用复值。在允许空值的列上保证唯一性时,应使用UNIQUE约束而不是约束而不是PRIMARY KEY约束,不过约束,不过在该列中只允许有一个在该列中
14、只允许有一个NULL值。一个表可以定值。一个表可以定义 多 个义 多 个 U N I Q U E 约 束 , 但 只 能 定 义 一 个约 束 , 但 只 能 定 义 一 个PRIMARY KEY约束。约束。FOREIGN KEY约束也可约束也可引用引用UNIQUE约束。约束。SQL ServerSQL Server实用教程实用教程Page 122021年年12月月13日星期一日星期一q 1利用利用Management Studio定义(删除)唯一性约束定义(删除)唯一性约束q 2利用利用T-SQL语句定义(删除)唯一性约束语句定义(删除)唯一性约束q (1)在创建表时创建唯一性约束)在创建表
15、时创建唯一性约束q 其语法格式如下。其语法格式如下。q 语法格式语法格式1:CREATE TABLE 数据表名数据表名(列名列名 数据类型数据类型 CONSTRAINT 约束名约束名 UNIQUE CLUSTEREDNONCLUSTERD,)q 语法格式语法格式2:CREATE TABLE 数据表名数据表名( CONSTRAINT 约束名约束名 UNIQUE CLUSTEREDNONCLUSTERD (列名列名1,n) ,)q 说明:语法格式说明:语法格式1定义单列唯一约束,语法格式定义单列唯一约束,语法格式2定义多列组定义多列组合唯一约束。合唯一约束。SQL ServerSQL Server
16、实用教程实用教程Page 132021年年12月月13日星期一日星期一q【例【例5.3】创建和】创建和kc表结构相同的表结构相同的kc_new表。表。USE xsglGOCREATE TABLE kc_new(课程号课程号 CHAR(4) NOT NULL CONSTRAINT pk_kch1 PRIMARY KEY,课程名课程名 CHAR(16) NOT NULL CONSTRAINT ix_kcm1 UNIQUE,学分学分 SMALLINT,学时数学时数 SMALLINT)SQL ServerSQL Server实用教程实用教程Page 142021年年12月月13日星期一日星期一q(2)
17、向已有表中添加唯一约束)向已有表中添加唯一约束q其语法格式如下。其语法格式如下。ALTER TABLE 表名表名ADD CONSTRAINT 约束名约束名 UNIQUE (列名列名1,n) ,)q(3)删除唯一约束)删除唯一约束q其语法格式如下。其语法格式如下。ALTER TABLE 表名表名DROP CONSTRAINT 约束名约束名SQL ServerSQL Server实用教程实用教程Page 152021年年12月月13日星期一日星期一q 【例【例5.4】给】给kc表中课程名字段添加唯一约束。表中课程名字段添加唯一约束。USE xsglGOALTER TABLE kcADD CONST
18、RAINT ix_kcm UNIQUE(课程名课程名)GOq 【例【例5.5】删除】删除kc_new中的唯一约束。中的唯一约束。USE xsglGOALTER TABLE kc_newDROP CONSTRAINT ix_kcm1GOSQL ServerSQL Server实用教程实用教程Page 162021年年12月月13日星期一日星期一qCHECK约束是限制用户输入某一列的数据取值,约束是限制用户输入某一列的数据取值,即该列只能输入一定范围的数据。即该列只能输入一定范围的数据。qCHECK约束可以作为表定义的一部分在创建表时约束可以作为表定义的一部分在创建表时创建,也可以添加到现有表中。
19、表和列可以包含创建,也可以添加到现有表中。表和列可以包含多个多个CHECK约束。允许修改或删除现有的约束。允许修改或删除现有的CHECK约束。约束。q在现有表中添加在现有表中添加CHECK约束时,该约束可以仅作约束时,该约束可以仅作用于新数据,也可以同时作用于已有的数据。默用于新数据,也可以同时作用于已有的数据。默认设置为认设置为CHECK约束同时作用于已有数据和新数约束同时作用于已有数据和新数据。当希望现有数据维持不变,则使用约束仅作据。当希望现有数据维持不变,则使用约束仅作用于新数据选项。用于新数据选项。SQL ServerSQL Server实用教程实用教程Page 172021年年12
20、月月13日星期一日星期一q 1利用利用Management Studio定义(删除)检查约束定义(删除)检查约束q 2利用利用T-SQL语句定义(删除)检查约束语句定义(删除)检查约束q (1)在创建表时创建检查约束)在创建表时创建检查约束q 其语法格式如下。其语法格式如下。CREATE TABLE 数据表名数据表名(列名列名 数据类型数据类型 CONSTRAINT 约束名约束名 CHECK (逻辑表达逻辑表达式式) ,)q (2)向已有表中添加检查约束)向已有表中添加检查约束q 其语法格式如下。其语法格式如下。ALTER TABLE 表名表名WITH NOCHECKADD CONSTRAIN
21、T 约束名约束名 CHECK (逻辑表达式逻辑表达式) ,)SQL ServerSQL Server实用教程实用教程Page 182021年年12月月13日星期一日星期一q 【例【例5.6】 在在xs表中增加一个字段表中增加一个字段“电话电话(CHAR(8)”,为电话列添加检,为电话列添加检查约束,要求每个新加入或修改的电话号码为查约束,要求每个新加入或修改的电话号码为8位数字,但对表中现有的位数字,但对表中现有的记录不进行检查。记录不进行检查。USE xsglGOALTER TABLE xsADD 电话电话 char(8) nullq -向学生表中插入一条电话号码为向学生表中插入一条电话号码
22、为7位数字的记录位数字的记录INSERT xs(学号学号,姓名姓名,性别性别,出生时间出生时间,专业专业,总学分总学分,电话电话)VALUES(2009030108,耿娇耿娇,女女,91/6/6,电子商务电子商务,19, 4501310)GOq -创建不检查现有数据的检查约束创建不检查现有数据的检查约束ALTER TABLE xsWITH NOCHECKADD CONSTRAINT ck_dhCHECK (电话电话 LIKE 0-90-90-90-90-90-90-90-9)GOSQL ServerSQL Server实用教程实用教程Page 192021年年12月月13日星期一日星期一q-创
23、建不检查现有数据的检查约束创建不检查现有数据的检查约束ALTER TABLE XS WITH NOCHECK ADD CONSTRAINT ck_dh CHECK (电话电话 LIKE 0-90-90-90-90-90-90-90-9)GOSQL ServerSQL Server实用教程实用教程Page 202021年年12月月13日星期一日星期一q(3)删除检查约束)删除检查约束q其语法格式如下。其语法格式如下。ALTER TABLE 表名表名DROP CONSTRAINT 约束名约束名q【例【例5.7】删除】删除xs中的电话列的检查约束。中的电话列的检查约束。ALTER TABLE xsD
24、ROP CONSTRAINT ck_dhGOSQL ServerSQL Server实用教程实用教程Page 212021年年12月月13日星期一日星期一q注意:在默认情况下,检查约束同时作用于新数注意:在默认情况下,检查约束同时作用于新数据和表中已有的数据,可以通过关键字据和表中已有的数据,可以通过关键字WITH NOCHECK禁止禁止CHECK约束检查表中已有的数据。约束检查表中已有的数据。q与其他约束不同的是,与其他约束不同的是,CHECK约束可以通过约束可以通过NOCHECK和和CHECK关键字设置为无效或重新有关键字设置为无效或重新有效。效。q其语法格式如下。其语法格式如下。ALTE
25、R TABLE 表名表名NOCHECK CONSTRAINT 约束名约束名CHECK CONSTRAINT 约束名约束名SQL ServerSQL Server实用教程实用教程Page 222021年年12月月13日星期一日星期一q【例【例5.9】 将将xs表中电话列的检查约束失效,然后表中电话列的检查约束失效,然后插入一条具有插入一条具有6位数字的电话号码字段,之后再重新位数字的电话号码字段,之后再重新使其生效。使其生效。q-使使CHECK检查失效检查失效ALTER TABLE xsNOCHECK CONSTRAINT ck_dhq-插入测试数据插入测试数据INSERT xs(学号学号,姓名
26、姓名,性别性别,出生时间出生时间,专业专业,总学分总学分,电电话话)VALUES(2009030105,牛学文牛学文,男男,89/09/20,电电子商务子商务,21, 123456)q-使使CHECK检查生效检查生效ALTER TABLE xsCHECK CONSTRAINT ck_dhSQL ServerSQL Server实用教程实用教程Page 232021年年12月月13日星期一日星期一q默认约束是指在用户未提供某些列的数据时,数默认约束是指在用户未提供某些列的数据时,数据库系统为用户提供的默认值。从而简化应用程据库系统为用户提供的默认值。从而简化应用程序代码和提高系统性能。序代码和提
27、高系统性能。q表的每一列都可包含一个表的每一列都可包含一个DEFAULT定义。可以定义。可以修改或删除现有的修改或删除现有的DEFAULT定义,但必须首先定义,但必须首先删除已有的删除已有的DEFAULT定义,然后通过新定义重定义,然后通过新定义重新创建。新创建。 SQL ServerSQL Server实用教程实用教程Page 242021年年12月月13日星期一日星期一q(1)在创建表时创建默认值约束)在创建表时创建默认值约束q语法格式语法格式1:CREATE TABLE 数据表名数据表名(列名列名 数据类型数据类型 CONSTRAINT 约束名约束名 DEFAULT 默认值默认值 ,)q
28、语法格式语法格式2:CREATE TABLE 数据表名数据表名( CONSTRAINT 约束名约束名 DEFAULT默认值默认值 FOR 列列 ,)SQL ServerSQL Server实用教程实用教程Page 252021年年12月月13日星期一日星期一q (2)向已有表中添加默认值约束)向已有表中添加默认值约束q 其语法格式如下。其语法格式如下。ALTER TABLE 表名表名ADD CONSTRAINT 约束名约束名 默认值默认值 FOR 列列 ,)q【例【例5.10】 在在xs表的专业列添加一个默认约束,表的专业列添加一个默认约束,默认值为默认值为“电子商务电子商务”,然后添加一条新
29、记录。,然后添加一条新记录。q-添加默认值约束添加默认值约束ALTER TABLE xsADD CONSTRAINT df_zy DEFAULT 电子商务电子商务 FOR 专业专业q-插入测试记录插入测试记录 INSERT xs(学号学号,姓名姓名,出生时间出生时间,总学分总学分)VALUES(2009030107,张玉莹张玉莹,90/06/28,20)SQL ServerSQL Server实用教程实用教程Page 262021年年12月月13日星期一日星期一q(3)删除默认值约束)删除默认值约束q其语法格式如下。其语法格式如下。ALTER TABLE 表名表名DROP CONSTRAINT
30、 约束名约束名q【例【例5.11】删除】删除xs表性别列的默认约束。表性别列的默认约束。q-查看查看xs表性别列的默认约束名,如图表性别列的默认约束名,如图5.7所示。所示。Sp_help xsGOq-删除删除xs表性别列的默认约束表性别列的默认约束ALTER TABLE xsDROP CONSTRAINT df_zyGOSQL ServerSQL Server实用教程实用教程Page 272021年年12月月13日星期一日星期一q外键约束是为了强制实现表之间的参照完整性,外键约束是为了强制实现表之间的参照完整性,外键外键FOREIGN KEY可以和主表的主键或唯一键可以和主表的主键或唯一键对
31、应,外键约束不允许为空值,但是,如果组合对应,外键约束不允许为空值,但是,如果组合外键的某列含有空值,则将跳过该外键约束的检外键的某列含有空值,则将跳过该外键约束的检验。验。q1利用利用Management Studio定义(删除)外定义(删除)外键约束键约束SQL ServerSQL Server实用教程实用教程Page 282021年年12月月13日星期一日星期一q2利用利用T-SQL语句定义(删除)外键唯一性约语句定义(删除)外键唯一性约束束q(1)在创建表时创建外键约束)在创建表时创建外键约束语法格式语法格式1: CREATE TABLE 数据表名数据表名(列名列名 数据类型数据类型
32、CONSTRAINT 约束名约束名 FOREIGN KEY REFERENCES 参照主键表参照主键表(参照列参照列) ON DELETE CASCADEON UPDATE CASCADE ,)SQL ServerSQL Server实用教程实用教程Page 292021年年12月月13日星期一日星期一q 语法格式语法格式2:CREATE TABLE 数据表名数据表名( CONSTRAINT 约束名约束名 FOREIGN KEY (列列 ,n ) REFERENCES 参照主键表参照主键表(参照列参照列,n) ON DELETE CASCADEON UPDATE CASCADE ,)q 说明:
33、语法格式说明:语法格式1定义单列外键约束,语法格式定义单列外键约束,语法格式2定义多列定义多列组合外键约束。组合外键约束。q 其中:其中:ON DELETE CASCADE表示级联删除,表示级联删除, ON UPDATE CASCADE表示级联更新,他们也称为级联参照表示级联更新,他们也称为级联参照完整性约束。级联参照完整性约束是为了保证外键数据的关完整性约束。级联参照完整性约束是为了保证外键数据的关联性。当删除外键引用的主键记录时,为了防止孤立外键的联性。当删除外键引用的主键记录时,为了防止孤立外键的产生,同时删除引用它的外键记录。产生,同时删除引用它的外键记录。 SQL ServerSQL
34、 Server实用教程实用教程Page 302021年年12月月13日星期一日星期一q(2)向已有表中添加外键约束)向已有表中添加外键约束ALTER TABLE 表名表名ADD CONSTRAINT 约束名约束名 FOREIGN KEY (列列 , n ) REFERENCES 参照主键表参照主键表(参参照列照列, n) ON DELETE CASCADEON UPDATE CASCADE ,)SQL ServerSQL Server实用教程实用教程Page 312021年年12月月13日星期一日星期一q 【例【例5.12】把】把cj表中的学号创建为外键,其主键为表中的学号创建为外键,其主键为
35、xs表中的表中的学号;课程号创建为外键,其主键为学号;课程号创建为外键,其主键为kc表中的课程号。表中的课程号。ALTER TABLE cjADD CONSTRAINT fk_cj_xs FOREIGN KEY(学号学号) REFERENCES xs(学号学号)ALTER TABLE cjADD CONSTRAINT fk_cj_kc FOREIGN KEY(课程号课程号) REFERENCES kc(课程号课程号)SQL ServerSQL Server实用教程实用教程Page 322021年年12月月13日星期一日星期一q(3)删除外键约束)删除外键约束ALTER TABLE 表名表名DR
36、OP CONSTRAINT 约束名约束名q【例【例5.13】删除外键约束。】删除外键约束。ALTER TABLE cjDROP CONSTRAINT fk_cj_xsGOALTER TABLE cjDROP CONSTRAINT fk_cj_kcGOSQL ServerSQL Server实用教程实用教程Page 332021年年12月月13日星期一日星期一q默认是一种数据库对象,可以被绑定到一个或多默认是一种数据库对象,可以被绑定到一个或多个列上,还可以绑定到用户自定义类型上。当某个列上,还可以绑定到用户自定义类型上。当某个默认创建后,可以反复使用。当向表中插入数个默认创建后,可以反复使用。
37、当向表中插入数据时,如果绑定有默认的列或者数据类型没有明据时,如果绑定有默认的列或者数据类型没有明确提供值,那么就将以默认指定的数据插入。定确提供值,那么就将以默认指定的数据插入。定义的默认值必须与所绑定列的数据类型一致,不义的默认值必须与所绑定列的数据类型一致,不能违背列的相关规则。能违背列的相关规则。SQL ServerSQL Server实用教程实用教程Page 342021年年12月月13日星期一日星期一q利用利用T-SQL语句创建默认的语法格式如下。语句创建默认的语法格式如下。qCREATE DEFAULT 默认值名称默认值名称 AS 常量表达式常量表达式q【例【例5.15】创建学时
38、数为】创建学时数为60的默认值。的默认值。USE xsglGOCREATE DEFAULT 学时数学时数 AS 60GOSQL ServerSQL Server实用教程实用教程Page 352021年年12月月13日星期一日星期一q一个建好的默认值,只有绑定到表的列上或用户一个建好的默认值,只有绑定到表的列上或用户自定义的数据类型上后才起作用,如果不再需要自定义的数据类型上后才起作用,如果不再需要该默认值,则要将该默认值从相应的列或自定义该默认值,则要将该默认值从相应的列或自定义数据类型上解绑。利用命令的方式来绑定默认和数据类型上解绑。利用命令的方式来绑定默认和解除绑定默认。解除绑定默认。q其
39、语法格式如下。其语法格式如下。qEXECUTE sp_bindefault 默认值名称默认值名称 , 表表名名.字段名字段名用户自定义数据类型用户自定义数据类型qEXECUTE sp_unbindefault 表名表名.字段名字段名用户自定义数据类型用户自定义数据类型SQL ServerSQL Server实用教程实用教程Page 362021年年12月月13日星期一日星期一q 【例【例5.16】将默认值学时数绑定到】将默认值学时数绑定到kc表的学时数上。表的学时数上。USE xsglGOEXEC sp_bindefault 学时数学时数,kc.学时数学时数GOq 【例【例5.17】解除例】解
40、除例5.16中的绑定。中的绑定。USE xsglGOEXEC sp_unbindefault kc.学时数学时数GOSQL ServerSQL Server实用教程实用教程Page 372021年年12月月13日星期一日星期一q可以用可以用DROP DEFAULT语句删除默认值对象。语句删除默认值对象。q其语法格式如下。其语法格式如下。qDROP DEFAULT 默认值名称默认值名称 ,q注意:在删除一个默认值之前,应首先将它从所注意:在删除一个默认值之前,应首先将它从所绑定的列或自定义数据类型上解绑,否则系统会绑定的列或自定义数据类型上解绑,否则系统会报错。报错。SQL ServerSQL
41、Server实用教程实用教程Page 382021年年12月月13日星期一日星期一q规则是保证域完整性的主要手段,它类似于规则是保证域完整性的主要手段,它类似于CHECK约束。与约束。与CHECK约束相比,其执行功能约束相比,其执行功能相同。相同。CHECK约束是使用约束是使用ALTER或或CREATE TABLE的的CHECK关键字创建的,是对列中的值关键字创建的,是对列中的值进行限制的首选标准方法(可以对一列或多列定进行限制的首选标准方法(可以对一列或多列定义多个约束)。规则是一种数据库对象,可以绑义多个约束)。规则是一种数据库对象,可以绑定到一列或多个列上,还可以绑定到用户自定义定到一列
42、或多个列上,还可以绑定到用户自定义数据类型上,规则定义之后可以反复使用。数据类型上,规则定义之后可以反复使用。q列或用户自定义数据类型只能有一个绑定的规则。列或用户自定义数据类型只能有一个绑定的规则。但是,列可以同时具有规则和多个但是,列可以同时具有规则和多个CHECK约束。约束。SQL ServerSQL Server实用教程实用教程Page 392021年年12月月13日星期一日星期一q利用利用T-SQL语句创建规则的语法格式如下。语句创建规则的语法格式如下。qCREATE RULE 规则名称规则名称 AS 条件表达式条件表达式q【例【例5.19】创建名为】创建名为“总学分总学分”的规则,
43、要求其的规则,要求其取值范围在取值范围在050之间。之间。USE xsglGOCREATE RULE 总学分总学分 AS score=0 and score=50GO SQL ServerSQL Server实用教程实用教程Page 402021年年12月月13日星期一日星期一q绑定和解绑规则可以使用图形界面方法,也可以绑定和解绑规则可以使用图形界面方法,也可以利用利用T-SQL语句。其语法格式如下。语句。其语法格式如下。qsp_bindrule 规则名称规则名称, 表名表名.字段名字段名|用户自用户自定义数据类型定义数据类型qsp_unbindrule 表名表名.字段名字段名|用户自定义数据
44、用户自定义数据类型类型q【例【例5.20】将总学分规则绑定到】将总学分规则绑定到xs表的总学分列表的总学分列上。上。qEXECUTE sp_bindrule 总学分总学分,xs.总学分总学分SQL ServerSQL Server实用教程实用教程Page 412021年年12月月13日星期一日星期一q 由于规则是数据库对象,因此象默认一样可以利用由于规则是数据库对象,因此象默认一样可以利用Management Studio的的“对象资源管理器对象资源管理器”展开节点到规展开节点到规则,单击右键,在快捷菜单中选择则,单击右键,在快捷菜单中选择“删除删除”,这里我们主要,这里我们主要介绍利用介绍利
45、用T-SQL语句删除规则。其语法格式如下。语句删除规则。其语法格式如下。q DROP RULE规则名称规则名称 ,q 【例【例5.22】删除规则】删除规则“成绩成绩”和和“总学分总学分”。EXECUTE sp_unbindrule cj.成绩成绩EXECUTE sp_unbindrule xs.总学分总学分GODROP RULE 成绩成绩,总学分总学分GOSQL ServerSQL Server实用教程实用教程Page 422021年年12月月13日星期一日星期一q 表中的主键和唯一键都可以起到表中记录的标识作用,有时表中的主键和唯一键都可以起到表中记录的标识作用,有时为了方便可以让计算机为表
46、中的记录按照要求自动地生成标为了方便可以让计算机为表中的记录按照要求自动地生成标识字段的值,识字段的值,q IDENTITY列即自动编号列。若在表中创建一个列即自动编号列。若在表中创建一个IDENTITY(标识符)列,则当用户向表中插入新的数据行时,系统自(标识符)列,则当用户向表中插入新的数据行时,系统自动为该行的动为该行的IDENTITY列赋值,并保证其值在表中的唯一性。列赋值,并保证其值在表中的唯一性。每个表中只能有一个每个表中只能有一个IDENTITY列,其列值不能由用户更新,列,其列值不能由用户更新,不允许空值,也不允许绑定默认值或建立不允许空值,也不允许绑定默认值或建立DEFAUL
47、T约束。约束。IDENTITY列常与列常与PRIMARY KEY约束一起使用,从而保证约束一起使用,从而保证表中各行具有唯一标识。表中各行具有唯一标识。q 标识列的有效数据类型可以是任何整数数据类型分类的数据标识列的有效数据类型可以是任何整数数据类型分类的数据类型(类型(bit数据类型除外),也可以是数据类型除外),也可以是decimal数据类型,但数据类型,但不允许出现小数。不允许出现小数。SQL ServerSQL Server实用教程实用教程Page 432021年年12月月13日星期一日星期一q 1利用利用Management Studio定义定义DENTITY列列q 2利用利用T-S
48、QL语句创语句创IDENTITY列列q 其语法格式如下。其语法格式如下。CREATE TABLE 数据表名数据表名(列名列名 数据类型数据类型 IDENTITY (种子种子,递增量递增量) ,)q 【例【例5.23】在】在cj表中添加类型为整型的表中添加类型为整型的“编号编号”列,利列,利用用IDENTITY使其成为初值为使其成为初值为1,依次递增,依次递增1的序列。的序列。USE xsglGOALTER TABLE cjADD 编号编号 int IDENTITY(1,1) NOT NULLGOSQL ServerSQL Server实用教程实用教程Page 442021年年12月月13日星期一日星
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025江西吉安市城市建设投资开发有限公司绿色通道招聘增补入闱考察人员笔试历年参考题库附带答案详解
- 2025江西南昌汉代海昏侯国遗址管理局招聘国有企业正职笔试相关笔试历年参考题库附带答案详解
- 2025江苏苏州科技城发展集团有限公司招聘笔试笔试历年参考题库附带答案详解
- 2026年演出经纪人之演出经纪实务考试题库含完整答案(夺冠系列)
- 2025年国际商务考研试题及答案
- 2023年乌海市直遴选笔试真题汇编含答案解析(夺冠)
- 棚架易租赁合同范本
- 模具厂投资合同范本
- 没经过农户签协议合同
- 瀚霖传媒七天协议合同
- 恒温恒湿仓储管理操作流程规范
- 买期房草签合同范本
- 【生物】山东省济南市2024-2025学年高一上学期1月期末试题(解析版)
- 农民工工资专用账户管理补充协议
- 山东中考信息技术考试题库及答案
- 不良事件考试题(附答案)
- 【《基于JAVA的驾校管理系统设计与实现》9300字(论文)】
- 设备保养维护培训课件
- 安全注射标准2025
- 滚动轴承的装配培训课件
- 2025年国有金融企业考试题库
评论
0/150
提交评论