1、在在SQL Server 2005中,数据表是一种很重要的中,数据表是一种很重要的数据库对象,是组成数据库的基本元素。假若你数据库对象,是组成数据库的基本元素。假若你已经创建了数据库,那么,怎么样在数据库中创已经创建了数据库,那么,怎么样在数据库中创建数据表?又怎么样向数据表中输入表数据呢?建数据表?又怎么样向数据表中输入表数据呢?本章学习任务本章学习任务q 数据表的设计和创建数据表的设计和创建 数据表设计与创建数据表设计与创建 修改表结构修改表结构 插入、更新和删除表数据插入、更新和删除表数据q 定义约束定义约束 数据的完整性数据的完整性 约束的类型约束的类型 约束的创建、查看、删除约束的创
2、建、查看、删除q 默认值和规则默认值和规则 默认值的使用与规则的使用默认值的使用与规则的使用 数据表与电子表格类似,数据在表中是按照行数据表与电子表格类似,数据在表中是按照行和列的格式来组织排列的。每行代表一唯一的记和列的格式来组织排列的。每行代表一唯一的记录,每列代表记录中的一个域。如学生基本信息录,每列代表记录中的一个域。如学生基本信息的数据表,表中的每一行代表一个学生,每一列的数据表,表中的每一行代表一个学生,每一列分别表示学生的详细资料,如学号、姓名等。分别表示学生的详细资料,如学号、姓名等。数据表由若干个列组成,每一个列的列名在表数据表由若干个列组成,每一个列的列名在表中应该是唯一的
3、;其列值为中应该是唯一的;其列值为SQL Server可选的数可选的数据类型;大小则规定列值的最大长度;小数位用据类型;大小则规定列值的最大长度;小数位用于定义数值型的小数位数;是否为空说明列值是于定义数值型的小数位数;是否为空说明列值是否允许为空值;默认值用于定义不经输入所确定否允许为空值;默认值用于定义不经输入所确定的列值。的列值。设计表设计表 l数据库中通常包含多个表,每个表是一个存储数据的实体,具有唯一的名称。l表是对数据进行存储和操作的一种逻辑结构,每个表代表一个对象。l例如:在学生管理数据库中,有学生基本信息表,教师基本信息表,学生成绩表,课程信息表,专业代码表,教研室信息表,教室
4、信息表等。学生基本信息表学生基本信息表STUD_IDNAMEBIRTHDAYGENDERADDRESSTELCODEZIPCODEMARK0401010811张源12-05-1986男北京市海淀区010-645723451000805600401020201赵明08-06-1986男上海市浦东区021-648972322017005600401030101王刚01-02-1986男天津市南开区022-835723363000005600401050201陈红10-25-1986女武汉市汉口区027-745653504300005600401040112孙强06-07-1986男重庆市沙坪坝02
5、3-823423484000005600401020103李伟09-01-1986男北京市大兴县010-689029471026005600401010634钱昆12-06-1986男广州市海珠区020-456724535100005600401030213郑芳08-09-1986女江苏省南京市025-845739412100005600401010102袁飞03-11-1986男湖南省长沙县0731-45723454100005600401040123孔荣05-31-1986男云南省昆明市0871-26475356500006000401050127张军11-03-1987男成都市和平区02
6、8-852495676100415700401010704王一明03-03-1986男甘肃省兰州市0621-2221837590000573学生基本信息表结构学生基本信息表结构列名列名数据类型数据类型大小大小小数位小数位是否为空是否为空默认值默认值列名含义列名含义1STUD_IDchar10N0401010101学号学号2NAMEnvarchar4N姓名姓名3BIRTHDAYdatetime出生日期出生日期4GENDERnchar1性别性别5ADDRESSnvarchar20家庭地址家庭地址6TELCODEchar12电话电话7ZIPCODEchar6邮编邮编8MARKdecimal30560
7、入学成绩入学成绩使用对象资源管理器创建数据表使用对象资源管理器创建数据表语法格式:语法格式:CREATE TABLE database_name.owner .|owner.table_name(|column_name AS computed_column_expression|:=CONSTRAINT constraint_name|PRIMARY KEY|UNIQUE ,.n ON filegroup|DEFAULT TEXTIMAGE_ON filegroup|DEFAULT :=column_name data_type COLLATE 主要参数:主要参数:参数说明database_
8、name要在其中创建表的数据库名称。database_name必须是现有数据库的名称。如果不指定数据库,database_name默认为当前数据库。table_name新建表的名称。表名必须符合标识符规则。column_name表中的列名。列名必须符合标识符规则,并且在表内唯一。computed_column_expression定义计算列值的表达式。也就是说,设计表时,表中的某些列的数值可由同一表中的其它列通过定义的公式计算得到。例如,平均分=总分/n。ON filegroup|DEFAULT指定存储表的文件组。如果指定filegroup,则表将存储在指定的文件组中。数据库中必须存在该文件组
9、。如果指定DEFAULT,或者根本未指定ON参数,则表存储在默认文件组中。TEXTIMAGE_ON表示text、ntext和image列存储在指定文件组中的关键字。如果表中没有text、ntext或image列,则不能使用TEXTIMAGE ON。如果没有指定TEXTIMAGE_ON,则text、ntext和image列将与表存储在同一文件组中。data_type指定列的数据类型。可以是系统数据类型或用户定义数据类型。q 数据表创建以后,在使用过程中可能需要对原数据表创建以后,在使用过程中可能需要对原先定义的表的结构进行修改。修改表的结构也可先定义的表的结构进行修改。修改表的结构也可以通过对象
10、资源管理器和以通过对象资源管理器和T-SQL语句两种方法进语句两种方法进行。对表结构的修改包括:更改表名、增加列、行。对表结构的修改包括:更改表名、增加列、删除列、修改已有列的属性等。删除列、修改已有列的属性等。使用对象资源管理器修改表使用对象资源管理器修改表l修改表名l增加列l删除列l修改已有列的属性ALTER TABLE table_name ALTER COLUMN column_name new_data_type (precision ,scale )COLLATE NULL|NOT NULL|ADD ,.n|DROP CONSTRAINT constraint_name|COLUM
11、N column_name ,.n 参数参数说明说明table_name希望修改结构的表名称希望修改结构的表名称ALTER/ADD/DROP修改、增加、删除现存表中的一个列或约束修改、增加、删除现存表中的一个列或约束new_data_type要修改列的新数据类型,要修改列的新数据类型,precision指定精度,指定精度,scale指定小数位数指定小数位数COLLATE collation_name为更改列指定新的排序规则为更改列指定新的排序规则COLUMN column_name希望修改结构中的列名希望修改结构中的列名CONSTRAINT constraint_name希望修改结构中的列约束
12、名。希望修改结构中的列约束名。q 用用ALTER TABLE的的ADD子句向表中添加列子句向表中添加列ALTER TABLE table_nameADD column_namenew_data_type(precision,scale)NULL|NOT NULLq 用用ALTER TABLE的的DROP COLUMN删除列删除列ALTER TABLE table_nameDROP COLUMN column_nameq使用使用DROP语句删除数据表语句删除数据表 DROP TABLE table_name 使用使用DROP删除数据表删除数据表lDROP TABLE 表名q 使用对象资源管理器查
13、看表结构使用对象资源管理器查看表结构在在“对象资源管理器对象资源管理器”中,右击需要查看结构的中,右击需要查看结构的表,在弹出的快捷菜单中选择表,在弹出的快捷菜单中选择“修改修改”命令,打命令,打开数据表窗口,即可查看数据表结构信息。开数据表窗口,即可查看数据表结构信息。q 使用系统存储过程使用系统存储过程sp_help查看表结构查看表结构EXECUTE sp_help table_nameq 使用对象资源管理器查看表中的数据使用对象资源管理器查看表中的数据在在“对象资源管理器对象资源管理器”中,右击需要查看数据的中,右击需要查看数据的表,弹出快捷菜单,单击表,弹出快捷菜单,单击“打开表打开表
14、”命令,用户命令,用户即可根据表格线和使用滚动条来查看到表中的数即可根据表格线和使用滚动条来查看到表中的数据。据。q 使用使用SELECT语句查看表中的数据语句查看表中的数据向数据表中插入数据,就是将一条或多条记录向数据表中插入数据,就是将一条或多条记录添加到数据表中。添加到数据表中。T-SQL中使用中使用INSERT命令完命令完成数据插入。成数据插入。INSERT INTO table_name(column1,column2)values(value1,value2)参数参数说明说明table_name指定插入数据的表名指定插入数据的表名column1,column2,将要插入数据的列名将
15、要插入数据的列名value1,value2,插入的列值插入的列值UPDATE语句可以更新表中现存记录中的数据语句可以更新表中现存记录中的数据UPDATE table_nameSET column1=modified_value1,column2=modified_values,WHERE column1=value1,column2=value2参数参数说明说明table_name指定要更新数据的表名指定要更新数据的表名SET column1=modified_value1,column2=modified_values,指定要更新的列及该列改变后的值指定要更新的列及该列改变后的值WHERE
16、column1=value1,column2=value2指定被更新的记录所应满足的条件指定被更新的记录所应满足的条件使用使用DELETE语句可以从表中删除一行或多行记语句可以从表中删除一行或多行记录。录。DELETE FROM table_nameWHERE column1=value1,column2=value2其中:其中:WHERE子句用来指定删除行的条件。子句用来指定删除行的条件。本章学习任务本章学习任务q 数据表的设计和创建数据表的设计和创建 数据表设计与创建数据表设计与创建 修改表结构修改表结构 插入、更新和删除表数据插入、更新和删除表数据q 定义约束定义约束 数据的完整性数据的
17、完整性 约束的类型约束的类型 约束的创建、查看、删除约束的创建、查看、删除q 默认值和规则默认值和规则 默认值的使用与规则的使用默认值的使用与规则的使用q 什么是数据完整性呢?什么是数据完整性呢?存储在数据库中数据的一致性和正确性。存储在数据库中数据的一致性和正确性。为了保证数据完整性,为了保证数据完整性,SQL Server提供了定义、提供了定义、检查和控制数据完整性的机制。检查和控制数据完整性的机制。q 表列中除了具有数据类型和大小属性之外,还表列中除了具有数据类型和大小属性之外,还有其他属性。其他属性是保证数据库中数据完整有其他属性。其他属性是保证数据库中数据完整性和表的引用完整性的重要
18、部分。性和表的引用完整性的重要部分。q 根据数据完整性措施所作用的数据库对象和范根据数据完整性措施所作用的数据库对象和范围不同,数据完整性分为:围不同,数据完整性分为:实体完整性、参照完实体完整性、参照完整性、域完整性和用户定义完整性整性、域完整性和用户定义完整性四种四种。实体完整性实体完整性l实体完整性也称为行完整性,指数据表中的所有行都是唯一确定的。l实体完整性规定表中的主键值必须唯一,所有的主属性不能为空参照完整性参照完整性l参照完整性保证参照表和被参照表中的数据一致性。l通过定义外键和主键之间的引用,保证数据库中不会含有无效外键域完整性域完整性l域完整性也称为列完整性,用以指定列数据具
19、有正确的数据类型、各式和有效的取值范围,保证数据的正确性。用户定义完整性用户定义完整性l用户定义完整性允许用户定义不属于其它任何完整性分类为的特定规则q CHECK约束约束 限制输入到一列或多列的值的范围限制输入到一列或多列的值的范围 q DEFAULT约束约束 如果没有为列指定数据,系统将默认值赋给列如果没有为列指定数据,系统将默认值赋给列q PRIMARY KEY约束约束 如果某列或多列的值能惟一标识表中的每一行,如果某列或多列的值能惟一标识表中的每一行,这样的列称为表的主键,通过它可以强制表的实这样的列称为表的主键,通过它可以强制表的实体完整性。体完整性。q FOREIGN KEY约束约
20、束 外键外键(Foreign Key)是用于建立和加强两个表是用于建立和加强两个表(主主表与从表表与从表)的一列或多列数据之间的链接,当数据的一列或多列数据之间的链接,当数据添加、修改或删除时,通过参照完整性保证它们添加、修改或删除时,通过参照完整性保证它们之间数据的一致性。之间数据的一致性。定义表之间的参照完整性是先定义主表的主键,定义表之间的参照完整性是先定义主表的主键,再对从表定义外键约束再对从表定义外键约束 q UNIQUE约束约束 确保表中的两个数据行在非主键列中没有相同确保表中的两个数据行在非主键列中没有相同的列值的列值 约束的创建、查看、删除约束的创建、查看、删除lPRIMARY
21、 KEY约束约束lFOREIGN KEY约束约束lUNIQUE约束约束lCHECK约束约束lDEFAULT约束约束lPRIMARY KEY约束标识列或列集,这些列或列集的值唯一标识表中的行。一个表只能有一个主键,而且主键不能接收空值,不能重复。lPRIMARY KEY约束可以在下面情况下使用:作为表定义的一部分在创建表时创建。添加到尚没有PRIMARY KEY约束的表中(一个表只能有一个PRIMARY KEY约束)。如果已有PRIMARY KEY约束,则可对其进行修改或删除。PRIMARY KEYl使用对象资源管理器设置、删除和修改主键。l在为表指定主键时,SQL Server自动创建一个前缀
22、为“PK_“的主键。PRIMARY KEY使用SQL语句设置,删除主键。l在设计表时指定主键在设计表时指定主键l语法:语法:Create table(列名(列名 数据类型数据类型 CONSTRAINT 约束名约束名 PRIMARY KEY)|CONSTRAINT 约束名约束名 PRIMARY KEY CLUSTERED|NONCLUSTERED(列名)(列名)l说明:说明:CLUSTERED|NONCLUSTERED:是否建立:是否建立聚簇索引聚簇索引例:create table sc2(sno char(10),cno char(10),grade int,primary key(sno,c
23、no)为表添加主键为表添加主键语法alter table add constraint primary key CLUSTERED|NONCLUSTERED(列名)例:alter table sc2add primary key(sno,cno)或:alter table sc2add constraint PK1 primary key(sno,cno)删除主键删除主键语法:alter table drop constraint 例alter table sc2drop constraint PK1 约束的创建、查看、删除约束的创建、查看、删除lPRIMARY KEY约束约束lFOREIGN
24、 KEY约束约束lUNIQUE约束约束lCHECK约束约束lDEFAULT约束约束FOREIGN KEY约束可以在下面情况下使用:作为表定义的一部分在创建表时创建。如果FOREIGN KEY约束与另一个表(或同一表)已有的PRIMARY KEY约束或UNIQUE约束相关联,则可向现有表添加FOREIGN KEY约束。一个表可以有多个FOREIGN KEY约束。对已有的FOREIGN KEY约束进行修改或删除。例如,要使一个表的FOREIGN KEY约束引用其他列。定义了FOREIGN KEY约束列的列宽不能更改。FOREIGN KEYl外键是用于建立两个表之间的联系。l主键所在的表称为主键表,
25、外键所在的表的表称为外键表,使用约束为 FOREIGN KEY。l外键约束可以参照其它表中的列,还可以参照自己,称为自参照。FOREIGN KEY使用FOREIGN KEY约束,还应注意以下几个问题:一个表中最多可以有253个可以参照的表,因此每个表最多可以有253个FOREIGN KEY约束。FOREIGN KEY约束中,只能参照同一个数据库中的表,而不能参照其他数据库中的表。FOREIGN KEY子句中的列数目和每个列指定的数据类型必须和REFERENCE子句中的列相同。FOREIGN KEY约束不能自动创建索引。在临时表中,不能使用FOREIGN KEY约束。使用管理器创建,修改和删除外
26、健关联:使用管理器创建,修改和删除外健关联:l建立外键时,外键所约束的列的数据类型及长度必须与主键所在的列的数据类型及长度一致或可以由SQL Server自动转换。l创建外键时,系统会自动为外键命名“FK_“l创建中检查现存数据l对复制强制关系l对INSERT和UPDATE强制关系l级联更新相关字段l级联删除相关字段l1)创建表时定义外键关联l语法Create table(列名 数据类型 CONSTRAINT 约束名 FOREIGN KEY)REFERRECES 主键表(主键列)|CONSTRAINT 约束名 FOREIGN KEY 列名 REFERRECES 主键表(主键列)ON DELET
27、E CASCADE|NO ACTIONON UPDATECASCADE|NO ACTIONNOT FOR REPLICATION l说明:lON DELETE CASCADE|NO ACTION:表示删除外键相对应的主键所在的行时,级联删除(CASCADE)外键所在的行的数据或不作操作(NO ACTION)。lON UPDATECASCADE|NO ACTION:表示修改外键相对应的主键所在的行时,级联修改(CASCADE)外键所在的行的数据或不作操作(NO ACTION)。lNO ACTION是默认设置例:create table sc2(sno char(10),cno char(10),
28、grade int,primary key(sno,cno),foreign key(sno)references student(sno),foreign key(cno)references course(cno)为已有表添加关联语法:alter table add constraint FOREIGN KEY 列名 REFERRECES 主键表(主键列)ON DELETE CASCADE|NO ACTIONON UPDATECASCADE|NO ACTIONNOT FOR REPLICATION 例:alter table sc2add constraint hh foreign key
29、(sno)references student(sno)删除关联语法:alter table drop constraint 例alter table sc2drop constraint hhl利用系统存储过程察看外键语法:Sp_fkeys 主键表名l例:查看引用表student的主键的外键信息sp_fkeys sl使用关系图管理外键FOREIGN KEY约束的创建、查看、删除约束的创建、查看、删除lPRIMARY KEY约束约束lFOREIGN KEY约束约束lUNIQUE约束约束lCHECK约束约束lDEFAULT约束约束UNIQUE约束l可使用 UNIQUE 约束确保在非主键列中不输入
30、重复值。尽管 UNIQUE 约束和 PRIMARY KEY约束都强制唯一性,但在强制下面的唯一性时应使用 UNIQUE 约束而不是 PRIMARY KEY 约束:l非主键的一列或列组合:一个表可以定义非主键的一列或列组合:一个表可以定义多多个个 UNIQUE 约束,而只能定义一个约束,而只能定义一个 PRIMARY KEY 约束。约束。l允许空值的列:允许空值的列:允许空值允许空值的列上可以定义的列上可以定义 UNIQUE 约束,而不能定义约束,而不能定义 PRIMARY KEY 约束。约束。lFOREIGN KEY 约束也可引用 UNIQUE 约束。使用管理器设置UNIQUE约束在添加UNI
31、QUE约束时,SQL Server会检查现有的数据,确保除NULL外所有值唯一,否则不能创建此约束l1)在创建表时设置UNIQUE约束l语法:Create table(列名 数据类型 CONSTRAINT 约束名 UNIQUE)|CONSTRAINT 约束名 UNIQUECLUSTERED|NONCLUSTERED(列名)使用使用SQL管理管理UNIQUE约束约束例:create table sc3(sno char(10),cno char(10),grade int,unique(sno,cno)使用使用SQL管理管理UNIQUE约束约束为已有的表添加UNIQUE约束语法:alter ta
32、ble add constraint UNIQUE CLUSTERED|NONCLUSTERED(列名)例:alter table studentadd constraint IX1 unique(sname)删除UNIQUE约束语法:alter table drop constraint 例:alter table studentdrop constraint IX1使用SQL管理UNIQUE约束约束的创建、查看、删除约束的创建、查看、删除lPRIMARY KEY约束约束lFOREIGN KEY约束约束lUNIQUE约束约束lCHECK约束约束lDEFAULT约束约束lCHECK约束通过限制
33、用户输入的值来加强域完整性。它指定应用于列中输入的所有值的布尔(取值为TRUE或FALSE)搜索条件,拒绝所有不取值为TRUE的值。可以为每列指定多个CHECK约束。例如,下面的SQL语句创建一个成绩(score)表,其中使用CHECK约束来限定成绩只能为0100分:CREATE TABLE score (sutdent_number int,score int NOT NULL CHECK(score=0 AND score=15000 AND salary=100000l对单独一列可使用多个 CHECK 约束。按约束创建的顺序对其取值。通过在表一级上创建 CHECK 约束,可以将该约束应用
34、到多列上。当一列受到多个核查约束时,所有的约束按照创建的顺序依次进行数据有效性的核查。使用对象资源管理器创建、修改和删除CHECK约束l默认的情况下,核查约束将同时应用于新的数据和已经存在的数据l在创建表时,定义CHECK约束Create table(列名 数据类型 CONSTRAINT 约束名 CHECKNOT FOR REPLICATION(约束表达式)|CONSTRAINT 约束名 CHECK NOT FOR REPLICATION(约束表达式)使用T-SQL管理CHECK约束例:create table sc2(sno char(10),cno char(10),grade int,c
35、heck(grade=0 and grade=100)使用T-SQL管理CHECK约束l在已存在的表上,添加约束alter table add constraint CHECK (约束表达式)l例:alter table sc2add constraint c1 check (grade=0 and grade=100)l删除check约束alter table drop constraint 使用使用T-SQL管理管理CHECK约束约束l约束可以是列约束或表约束:列约束被指定为列定义的一部分,并且仅适用于那个列(前面的score表中的约束就是列约束)。表约束的声明与列的定义无关,可以适用于表
36、中一个以上的列。约束的创建、查看、删除约束的创建、查看、删除lPRIMARY KEY约束约束lFOREIGN KEY约束约束lUNIQUE约束约束lCHECK约束约束lDEFAULT约束约束默认值l在使用SQL Server Management Studio创建表时,可以在输入字段名称后,设定该字段的默认值,如图所示。默认值:DEFAULTl当将某行装载到为行定义了 DEFAULT 的表中时,若没有指定列值,则是隐性要求 Microsoft SQL Server 将默认值装载到该列中。l 默认值必须与 DEFAULT 定义适用的列的数据类型相一致。例如,int 列的默认值必须是整数,而不是字
37、符串。l如下定义的列不能创建 DEFAULT 定义:ltimestamp 数据类型。lIDENTITY 或 ROWGUIDCOL 属性。l已有 DEFAULT 定义或 DEFAULT 对象。利用利用SQL语句指定默认值语句指定默认值l在创建表时指定默认值:create table sc2(sno char(10),cno char(10),grade int default 60)为已有表添加默认值为已有表添加默认值alter table sc2Add constraint dd default 60 for score约束的创建、查看、删除(小结)约束的创建、查看、删除(小结)lPRIMAR
38、Y KEY约束约束lFOREIGN KEY约束约束lUNIQUE约束约束lCHECK约束约束lDEFAULT约束约束补充:补充:IDENTITY(标识列)(标识列)l标识符列可用 IDENTITY 属性建立,使应用程序开发人员得以对表中所插入的第一行指定标识数字(Identity Seed 属性),并确定要添加到种子上的增量(Identity Increment 属性)以决定后面的标识数字。在向具有标识符列的表中插入值时,Microsoft SQL Server通过递增种子值的方法自动生成下一个标识值。l每个表中只能创建一个标识符列和一个全局唯一标识符列。l在用 IDENTITY 属性定义标识
39、符列时应注意以下几点:l一个表只能有一列定义为 IDENTITY 属性,而且该列必须以 decimal、int、numeric、smallint、bigint 或 tinyint 数据类型定义。l可指定种子和增量值。二者的默认值均为 1。l标识符列不允许空值,也不能包含 DEFAULT 定义或对象。1、使用管理器设置,修改,删除标识符、使用管理器设置,修改,删除标识符l注意:l当表中的数据行的数目超过了标识符列的上界或下界时,就不能再向表中插入新的数据。l服务器不会自动去寻找因为删除或其他原因跳过而没有使用的标识符的值。l一般情况下不允许认为的向标识列插入和修改值。2、使用、使用SQL语句设置
40、标识符列语句设置标识符列l1)在创建表时定义标识列l语法:create table(列名 数据类型 identity,)l例create table school(ID1 tinyint identity,sname varchar(30)not null,address varchar(30)null)l向表中插入数据:insert into school values(邢台学院,邢台)l再插入数据insert into school values(3,邯郸学院,邯郸)l报错:l仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表 school 中为标识列指定显式
41、值。l2)当表格的IDENTITY_INSERT属性被激活后,表的拥有者、数据库拥有者或SA可以直接向表格中插入IDENTITY列的数据l例Set IDENTITY_INERT school ONinsert into school(ID1,sname,address)注意必须给出列表values(3,邯郸学院,邯郸)Set IDENTITY_INERT school OFFl可以执行本章学习任务本章学习任务q 数据表的设计和创建数据表的设计和创建 数据表设计与创建数据表设计与创建 修改表结构修改表结构 插入、更新和删除表数据插入、更新和删除表数据q 定义约束定义约束 数据的完整性数据的完整性
42、 约束的类型约束的类型 约束的创建、查看、删除约束的创建、查看、删除q 默认值和规则默认值和规则 默认值的使用与规则的使用默认值的使用与规则的使用q 默认值可以先定义好,需要时将它绑定到一列默认值可以先定义好,需要时将它绑定到一列或多列上,在表中插入数据行时,系统自动为没或多列上,在表中插入数据行时,系统自动为没有指定数据的列提供事先定义的默认值。有指定数据的列提供事先定义的默认值。q与与DEFAULT约束不同的是,默认值是一种数据约束不同的是,默认值是一种数据库对象,在数据库中只需定义一次后,就可以被库对象,在数据库中只需定义一次后,就可以被一次或多次应用于任意表中的一列或多列,还可一次或多
43、次应用于任意表中的一列或多列,还可以用于用户自定义的数据类型以用于用户自定义的数据类型。q 创建默认值和将其绑定到表上的某列创建默认值和将其绑定到表上的某列CREATE DEFAULT default_nameAS constraint_expression其中其中:default_name:表示:表示所所建立的默认值名称建立的默认值名称。Constraint_expression:指定的默认值:指定的默认值。EXEC sp_bindefault default_name table_name.column_name,|user_datetype其中其中:default_name是是CREAT
44、E DEFAULT创建默认值的名称。创建默认值的名称。table_name.column_name,|user_datetype为表名和列为表名和列名或者绑定默认值的别名数据类型名或者绑定默认值的别名数据类型。l1)创建默认值:l例create default ss as 20l2)将默认值绑定到指定列例:lSp_bindefault ss,sc.gradel3)解除绑定lSp_unbindefault l例:Sp_unbindefault sc.gradel4)删除默认值ldrop default 默认值名l例drop default ssl重命名默认值:直接在企业管理器中修改l删除默认值:
45、删除默认值之前,必须确定默认对象没有绑定到任何对象上。q 规则这种数据库对象的作用就是当向数据表中规则这种数据库对象的作用就是当向数据表中某列插入数据时,指定该列接受数据值的范围。某列插入数据时,指定该列接受数据值的范围。q 规则的作用与规则的作用与CHECK约束一样,只不过规则约束一样,只不过规则不固定于那个列,而是创建好以后可以随便地绑不固定于那个列,而是创建好以后可以随便地绑定于表中某个列上。定于表中某个列上。q 创建和绑定规则创建和绑定规则CREATE RULE rule_nameAS condition_expression其中:其中:rule_name为规则名,为规则名,condi
46、tion_expression定义规定义规则的条件则的条件EXEC sp_bindrule rule_name,table_name.column_name,|user_datetype 使用管理器创建规则使用管理器创建规则l在规则的表达式中,不能出现列名,只能包含一个变量,该变量可以出现多次,必须以“”开头。该变量将引用更新记录或者插入记录时输入的值。l类似默认值的操作,需要对规则进行绑定。通过通过SQL语句对规则进行操作语句对规则进行操作l1)创建规则:lCREATE RULE规则名AS(规则表达式)l例create rule r1as x in(男,女)l2)将默认值绑定到指定列lSp_
47、bindrule ,l例:sp_bindrule r1,s.sexl3)解除绑定lSp_unbindrule l例:Sp_unbindrule s.sex l4)删除规则ldrop rule 规则名l例drop rule r1l5)若要显示某条规则的文本,请以该规则的名称作为参数来执行存储过程 sp_helptext。l例sp_helptext r1l规则使用说明:l对已有规则绑定的列,再进行新规则绑定时,原规则将被新规则代替l如果要进行规则绑定的列上有CHECK约束,则规则和约束都起作用l规则可以绑定在用户自定义数据类型,但是不允许应用于系统数据类型l规则不使用与该列中已经存在的数据,但当要
48、修改该列的数据时,规则会生效.l如果某列上绑定了规则,则该列不允许删除 实验目的实验目的 了解数据类型和数据表的结构特点。了解数据类型和数据表的结构特点。学会使用对象资源管理器和学会使用对象资源管理器和T-SQL语句创建语句创建数据表,插入、修改和删除表数据。数据表,插入、修改和删除表数据。学会定义约束、使用默认值和规则。学会定义约束、使用默认值和规则。实验准备实验准备 参照数据表样本,为其设计列名称、列类参照数据表样本,为其设计列名称、列类型、列宽度、是否允许为空;型、列宽度、是否允许为空;考虑需要实施数据完整性;考虑需要实施数据完整性;考虑需要使用默认值和规则。考虑需要使用默认值和规则。实
49、验内容和步骤实验内容和步骤 具体实验内容和步骤参见教材的介绍。具体实验内容和步骤参见教材的介绍。q 数据表是一种重要的数据库对象,它存储数据数据表是一种重要的数据库对象,它存储数据库中的主要操作数据。创建数据表时一定要认真库中的主要操作数据。创建数据表时一定要认真加以分析,需要选择适当的数据类型以保证有效加以分析,需要选择适当的数据类型以保证有效数据存储;在表中适当增加限制数据存储;在表中适当增加限制(约束、默认值和约束、默认值和规则规则)以维护数据的完整性。以维护数据的完整性。q 对表的操作和表数据的操作,包括创建、修改、对表的操作和表数据的操作,包括创建、修改、删除表、向表中增加、修改、删
50、除数据等。其操删除表、向表中增加、修改、删除数据等。其操作可以在对象资源管理器中进行,也可以由作可以在对象资源管理器中进行,也可以由T-SQL语句实现。使用语句实现。使用T-SQL语句对表数据进行插语句对表数据进行插入、修改及删除,比在对象资源管理器中操作表入、修改及删除,比在对象资源管理器中操作表数据更为灵活,功能更强大。数据更为灵活,功能更强大。作业:1.数据完整性的分类2.简述规则和Check约束的异同。3.SQL Server的约束有哪些?4.比较primary key与unique的异同?5.试述默认和规则的概念和作用?答:默认值是预先定义好,需要时将它绑定到一列或多列上,在表中插入