第4章-数据表与表数据课件.ppt

上传人:飞****2 文档编号:69542769 上传时间:2023-01-06 格式:PPT 页数:94 大小:1.38MB
返回 下载 相关 举报
第4章-数据表与表数据课件.ppt_第1页
第1页 / 共94页
第4章-数据表与表数据课件.ppt_第2页
第2页 / 共94页
点击查看更多>>
资源描述

《第4章-数据表与表数据课件.ppt》由会员分享,可在线阅读,更多相关《第4章-数据表与表数据课件.ppt(94页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第4章章 数据表与表数据数据表与表数据在在SQL Server 2005中,数据表是一种很重要的中,数据表是一种很重要的数据库对象,是组成数据库的基本元素。假若你数据库对象,是组成数据库的基本元素。假若你已经创建了数据库,那么,怎么样在数据库中创已经创建了数据库,那么,怎么样在数据库中创建数据表?又怎么样向数据表中输入表数据呢?建数据表?又怎么样向数据表中输入表数据呢?第第4章章 数据表与表数据数据表与表数据 1/6/20231/6/20232 2本章学习任务本章学习任务q 数据表的设计和创建数据表的设计和创建 数据表设计与创建数据表设计与创建 修改表结构修改表结构 插入、更新和删除表数据插

2、入、更新和删除表数据q 定义约束定义约束 数据的完整性数据的完整性 约束的类型约束的类型 约束的创建、查看、删除约束的创建、查看、删除q 默认值和规则默认值和规则 默认值的使用与规则的使用默认值的使用与规则的使用第第4章章 数据表与表数据数据表与表数据1/6/20231/6/20233 3 数据表与电子表格类似,数据在表中是按照行数据表与电子表格类似,数据在表中是按照行和列的格式来组织排列的。每行代表一唯一的记和列的格式来组织排列的。每行代表一唯一的记录,每列代表记录中的一个域。如学生基本信息录,每列代表记录中的一个域。如学生基本信息的数据表,表中的每一行代表一个学生,每一列的数据表,表中的每

3、一行代表一个学生,每一列分别表示学生的详细资料,如学号、姓名等。分别表示学生的详细资料,如学号、姓名等。数据表由若干个列组成,每一个列的列名在表数据表由若干个列组成,每一个列的列名在表中应该是唯一的;其列值为中应该是唯一的;其列值为SQL Server可选的数可选的数据类型;大小则规定列值的最大长度;小数位用据类型;大小则规定列值的最大长度;小数位用于定义数值型的小数位数;是否为空说明列值是于定义数值型的小数位数;是否为空说明列值是否允许为空值;默认值用于定义不经输入所确定否允许为空值;默认值用于定义不经输入所确定的列值。的列值。数据表的设计和创建数据表的设计和创建1/6/20231/6/20

4、234 4设计表设计表 l l数据库中通常包含多个表,每个表是一个存储数据的实体,具有唯一的名称。l l表是对数据进行存储和操作的一种逻辑结构,每个表代表一个对象。l l例如:在学生管理数据库中,有学生基本信息表,教师基本信息表,学生成绩表,课程信息表,专业代码表,教研室信息表,教室信息表等。1/6/20231/6/20235 5学生基本信息表学生基本信息表数据表的设计和创建数据表的设计和创建STUD_IDNAMEBIRTHDAYGENDERADDRESSTELCODEZIPCODEMARK0401010811张源12-05-1986男北京市海淀区010-6457234510008056004

5、01020201赵明08-06-1986男上海市浦东区021-648972322017005600401030101王刚01-02-1986男天津市南开区022-835723363000005600401050201陈红10-25-1986女武汉市汉口区027-745653504300005600401040112孙强06-07-1986男重庆市沙坪坝023-823423484000005600401020103李伟09-01-1986男北京市大兴县010-689029471026005600401010634钱昆12-06-1986男广州市海珠区020-4567245351000056004

6、01030213郑芳08-09-1986女江苏省南京市025-845739412100005600401010102袁飞03-11-1986男湖南省长沙县0731-45723454100005600401040123孔荣05-31-1986男云南省昆明市0871-26475356500006000401050127张军11-03-1987男成都市和平区028-852495676100415700401010704王一明03-03-1986男甘肃省兰州市0621-22218375900005731/6/20231/6/20236 6学生基本信息表结构学生基本信息表结构数据表的设计和创建数据表的设

7、计和创建列名列名数据数据类类型型大小大小小数位小数位是否是否为为空空默默认值认值列名含列名含义义1STUD_IDchar10N0401010101学号学号2NAMEnvarchar4N姓名姓名3BIRTHDAYdatetime出生日期出生日期4GENDERnchar1性性别别5ADDRESSnvarchar20家庭地址家庭地址6TELCODEchar12电话电话7ZIPCODEchar6邮编邮编8MARKdecimal30560入学成入学成绩绩1/6/20231/6/20237 7使用对象资源管理器创建数据表使用对象资源管理器创建数据表1/6/20231/6/20238 8语法格式:语法格式:

8、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 使用使用T-SQL语句创建数据表语句创建数据表1/6/20231/6/20239 9主要参数:主要参数:使用使用T-SQL语句创建数据表语

9、句创建数据表参数说明database_name要在其中创建表的数据库名称。database_name必须是现有数据库的名称。如果不指定数据库,database_name默认为当前数据库。table_name新建表的名称。表名必须符合标识符规则。column_name表中的列名。列名必须符合标识符规则,并且在表内唯一。computed_column_expression定义计算列值的表达式。也就是说,设计表时,表中的某些列的数值可由同一表中的其它列通过定义的公式计算得到。例如,平均分=总分/n。ON filegroup|DEFAULT指定存储表的文件组。如果指定filegroup,则表将存储在指

10、定的文件组中。数据库中必须存在该文件组。如果指定DEFAULT,或者根本未指定ON参数,则表存储在默认文件组中。TEXTIMAGE_ON表示text、ntext和image列存储在指定文件组中的关键字。如果表中没有text、ntext或image列,则不能使用TEXTIMAGE ON。如果没有指定TEXTIMAGE_ON,则text、ntext和image列将与表存储在同一文件组中。data_type指定列的数据类型。可以是系统数据类型或用户定义数据类型。1/6/20231/6/20231010使用使用T-SQL语句创建数据表语句创建数据表1/6/20231/6/20231111q 数据表创建

11、以后,在使用过程中可能需要对原数据表创建以后,在使用过程中可能需要对原先定义的表的结构进行修改。修改表的结构也可先定义的表的结构进行修改。修改表的结构也可以通过对象资源管理器和以通过对象资源管理器和T-SQL语句两种方法进行。语句两种方法进行。对表结构的修改包括:更改表名、增加列、删除对表结构的修改包括:更改表名、增加列、删除列、修改已有列的属性等。列、修改已有列的属性等。修改数据表结构修改数据表结构1/6/20231/6/20231212使用对象资源管理器修改表使用对象资源管理器修改表l l修改表名l l增加列l l删除列l l修改已有列的属性1/6/20231/6/20231313ALTE

12、R TABLE table_name ALTER COLUMN column_name new_data_type (precision ,scale )COLLATE NULL|NOT NULL|ADD ,.n|DROP CONSTRAINT constraint_name|COLUMN column_name ,.n 使用使用T-SQL语句语句修改表结构修改表结构1/6/20231/6/20231414使用使用T-SQL语句语句修改表结构修改表结构参数参数说明说明table_name希望修改结构的表名称希望修改结构的表名称ALTER/ADD/DROP修改、增加、删除现存表中的一个列或约束修

13、改、增加、删除现存表中的一个列或约束new_data_type要修改列的新数据类型,要修改列的新数据类型,precision指定精度,指定精度,scale指定小数位数指定小数位数COLLATE collation_name为更改列指定新的排序规则为更改列指定新的排序规则COLUMN column_name希望修改结构中的列名希望修改结构中的列名CONSTRAINT constraint_name希望修改结构中的列约束名。希望修改结构中的列约束名。1/6/20231/6/20231515q 用用ALTER TABLE的的ADD子句向表中添加列子句向表中添加列ALTER TABLE table_n

14、ameADD 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 使用使用T-SQL语句语句修改表结构修改表结构1/6/20231/6/20231616使用使用T-SQL语句语句修改表结构修改表结构1/6/20231/6/20231717使用使用DROP删除数据表删除数据表l lDROPTAB

15、LE表名1/6/20231/6/20231818q 使用对象资源管理器查看表结构使用对象资源管理器查看表结构在在“对象资源管理器对象资源管理器”中,右击需要查看结构的中,右击需要查看结构的表,在弹出的快捷菜单中选择表,在弹出的快捷菜单中选择“修改修改”命令,打命令,打开数据表窗口,即可查看数据表结构信息。开数据表窗口,即可查看数据表结构信息。q 使用系统存储过程使用系统存储过程sp_help查看表结构查看表结构EXECUTE sp_help table_nameq 使用对象资源管理器查看表中的数据使用对象资源管理器查看表中的数据在在“对象资源管理器对象资源管理器”中,右击需要查看数据的中,右击

16、需要查看数据的表,弹出快捷菜单,单击表,弹出快捷菜单,单击“打开表打开表”命令,用户命令,用户即可根据表格线和使用滚动条来查看到表中的数即可根据表格线和使用滚动条来查看到表中的数据。据。q 使用使用SELECT语句查看表中的数据语句查看表中的数据插入、更新和删除表数据插入、更新和删除表数据1/6/20231/6/20231919向数据表中插入数据,就是将一条或多条记录向数据表中插入数据,就是将一条或多条记录添加到数据表中。添加到数据表中。T-SQL中使用中使用INSERT命令完命令完成数据插入。成数据插入。INSERT INTO table_name(column1,column2)value

17、s(value1,value2)使用使用INSERT语句插入数据语句插入数据参数参数说明说明table_name指定插入数据的表名指定插入数据的表名column1,column2,将要插入数据的列名将要插入数据的列名value1,value2,插入的列值插入的列值1/6/20231/6/20232020使用使用INSERT语句插入数据语句插入数据1/6/20231/6/20232121UPDATE语句可以更新表中现存记录中的数据语句可以更新表中现存记录中的数据UPDATE table_nameSET column1=modified_value1,column2=modified_values

18、,WHERE column1=value1,column2=value2使用使用UPDATE语句更新数据语句更新数据参数参数说明说明table_name指定要更新数据的表名指定要更新数据的表名SET column1=modified_value1,column2=modified_values,指定要更新的列及该列改变后的值指定要更新的列及该列改变后的值WHERE column1=value1,column2=value2指定被更新的记录所应满足的条件指定被更新的记录所应满足的条件1/6/20231/6/20232222使用使用UPDATE语句更新数据语句更新数据1/6/20231/6/202

19、32323使用使用DELETE语句可以从表中删除一行或多行记语句可以从表中删除一行或多行记录。录。DELETE FROM table_nameWHERE column1=value1,column2=value2其中:其中:WHERE子句用来指定删除行的条件。子句用来指定删除行的条件。使用使用DELETE语句删除数据语句删除数据1/6/20231/6/20232424本章学习任务本章学习任务q 数据表的设计和创建数据表的设计和创建 数据表设计与创建数据表设计与创建 修改表结构修改表结构 插入、更新和删除表数据插入、更新和删除表数据q 定义约束定义约束 数据的完整性数据的完整性 约束的类型约束的

20、类型 约束的创建、查看、删除约束的创建、查看、删除q 默认值和规则默认值和规则 默认值的使用与规则的使用默认值的使用与规则的使用第第4章章 数据表与表数据数据表与表数据1/6/20231/6/20232525q 什么是数据完整性呢?什么是数据完整性呢?存储在数据库中数据的一致性和正确性。存储在数据库中数据的一致性和正确性。为了保证数据完整性,为了保证数据完整性,SQL Server提供了定义、提供了定义、检查和控制数据完整性的机制。检查和控制数据完整性的机制。q 表列中除了具有数据类型和大小属性之外,还表列中除了具有数据类型和大小属性之外,还有其他属性。其他属性是保证数据库中数据完整有其他属性

21、。其他属性是保证数据库中数据完整性和表的引用完整性的重要部分。性和表的引用完整性的重要部分。q 根据数据完整性措施所作用的数据库对象和范根据数据完整性措施所作用的数据库对象和范围不同,数据完整性分为:围不同,数据完整性分为:实体完整性、参照完实体完整性、参照完整性、域完整性和用户定义完整性整性、域完整性和用户定义完整性四种四种。数据库的完整性数据库的完整性1/6/20231/6/20232626实体完整性实体完整性l l实体完整性也称为行完整性,指数据表中的所有行都是唯一确定的。l l实体完整性规定表中的主键值必须唯一,所有的主属性不能为空1/6/20231/6/20232727参照完整性参照

22、完整性l l参照完整性保证参照表和被参照表中的数据一致性。l l通过定义外键和主键之间的引用,保证数据库中不会含有无效外键1/6/20231/6/20232828域完整性域完整性l l域完整性也称为列完整性,用以指定列数据具有正确的数据类型、各式和有效的取值范围,保证数据的正确性。1/6/20231/6/20232929用户定义完整性用户定义完整性l l用户定义完整性允许用户定义不属于其它任何完整性分类为的特定规则1/6/20231/6/20233030q CHECK约束约束 限制输入到一列或多列的值的范围限制输入到一列或多列的值的范围 q DEFAULT约束约束 如果没有为列指定数据,系统将

23、默认值赋给列如果没有为列指定数据,系统将默认值赋给列q PRIMARY KEY约束约束 如果某列或多列的值能惟一标识表中的每一行,如果某列或多列的值能惟一标识表中的每一行,这样的列称为表的主键,通过它可以强制表的实这样的列称为表的主键,通过它可以强制表的实体完整性。体完整性。SQL Server 2005中约束的类型中约束的类型1/6/20231/6/20233131q FOREIGN KEY约束约束 外键外键(Foreign Key)是用于建立和加强两个表是用于建立和加强两个表(主主表与从表表与从表)的一列或多列数据之间的链接,当数据的一列或多列数据之间的链接,当数据添加、修改或删除时,通过

24、参照完整性保证它们添加、修改或删除时,通过参照完整性保证它们之间数据的一致性。之间数据的一致性。定义表之间的参照完整性是先定义主表的主键,定义表之间的参照完整性是先定义主表的主键,再对从表定义外键约束再对从表定义外键约束 q UNIQUE约束约束 确保表中的两个数据行在非主键列中没有相同确保表中的两个数据行在非主键列中没有相同的列值的列值 SQL Server 2005中约束的类型中约束的类型1/6/20231/6/20233232约束的创建、查看、删除约束的创建、查看、删除lPRIMARY KEY约束约束lFOREIGN KEY约束约束lUNIQUE约束约束lCHECK约束约束lDEFAUL

25、T约束约束1/6/20231/6/20233333l lPRIMARYKEYPRIMARYKEY约束标识列或列集,这些列或列集的值唯约束标识列或列集,这些列或列集的值唯一标识表中的行。一个表只能有一个主键,而且主键不能一标识表中的行。一个表只能有一个主键,而且主键不能接收空值,不能重复。接收空值,不能重复。l lPRIMARYKEYPRIMARYKEY约束可以在下面情况下使用:约束可以在下面情况下使用:作为表定义的一部分在创建表时创建。作为表定义的一部分在创建表时创建。添加到尚没有添加到尚没有PRIMARYKEYPRIMARYKEY约束的表中(一个表只能有一个约束的表中(一个表只能有一个PRI

26、MARYKEYPRIMARYKEY约束)。约束)。如果已有如果已有PRIMARYKEYPRIMARYKEY约束,则可对其进行修改或删除。约束,则可对其进行修改或删除。PRIMARY KEY1/6/20231/6/20233434l l使用对象资源管理器设置、删除和修改主键。l l在为表指定主键时,SQLServer自动创建一个前缀为“PK_“的主键。PRIMARY KEY1/6/20231/6/20233535使用SQL语句设置,删除主键。l l在设计表时指定主键在设计表时指定主键在设计表时指定主键在设计表时指定主键l l语法:语法:语法:语法:Create table Create tabl

27、e (列名(列名(列名(列名 数据类型数据类型数据类型数据类型 CONSTRAINT CONSTRAINT 约束名约束名约束名约束名 PRIMARY KEY PRIMARY KEY)|CONSTRAINT CONSTRAINT 约束名约束名约束名约束名 PRIMARY PRIMARY KEY KEY CLUSTERED|NONCLUSTEREDCLUSTERED|NONCLUSTERED(列名)(列名)(列名)(列名)l l说明:说明:说明:说明:CLUSTERED|NONCLUSTEREDCLUSTERED|NONCLUSTERED:是否建立:是否建立:是否建立:是否建立聚簇索引聚簇索引聚簇

28、索引聚簇索引1/6/20231/6/20233636例:createtablesc2(snochar(10),cnochar(10),gradeint,primarykey(sno,cno)1/6/20231/6/20233737为表添加主键为表添加主键语法altertablealtertable addconstraintaddconstraintprimarykeyCLUSTERED|NONCLUSTEREDprimarykeyCLUSTERED|NONCLUSTERED(列名)(列名)1/6/20231/6/20233838例:altertablesc2addprimarykey(sno

29、,cno)或:altertablesc2addconstraintPK1primarykey(sno,cno)1/6/20231/6/20233939删除主键删除主键语法:altertabledropconstraint例altertablesc2dropconstraintPK11/6/20231/6/20234040约束的创建、查看、删除约束的创建、查看、删除lPRIMARY KEY约束约束lFOREIGN KEY约束约束lUNIQUE约束约束lCHECK约束约束lDEFAULT约束约束1/6/20231/6/20234141FOREIGNKEYFOREIGNKEY约束可以在下面情况下使用

30、:约束可以在下面情况下使用:作为表定义的一部分在创建表时创建。作为表定义的一部分在创建表时创建。如果如果FOREIGNKEYFOREIGNKEY约束与另一个表(或同一表)已有的约束与另一个表(或同一表)已有的PRIMARYKEYPRIMARYKEY约束或约束或UNIQUEUNIQUE约束相关联,则可向现有约束相关联,则可向现有表添加表添加FOREIGNKEYFOREIGNKEY约束。一个表可以有多个约束。一个表可以有多个FOREIGNKEYFOREIGNKEY约束。约束。对已有的对已有的FOREIGNKEYFOREIGNKEY约束进行修改或删除。例如,要约束进行修改或删除。例如,要使一个表的使

31、一个表的FOREIGNKEYFOREIGNKEY约束引用其他列。定义了约束引用其他列。定义了FOREIGNKEYFOREIGNKEY约束列的列宽不能更改。约束列的列宽不能更改。FOREIGN KEY1/6/20231/6/20234242l l外键是用于建立两个表之间的联系。l l主键所在的表称为主键表,外键所在的表的表称为外键表,使用约束为FOREIGNKEY。l l外键约束可以参照其它表中的列,还可以参照自己,称为自参照。FOREIGN KEY1/6/20231/6/20234343使用使用FOREIGNKEYFOREIGNKEY约束,还应注意以下几个问题:约束,还应注意以下几个问题:一个

32、表中最多可以有一个表中最多可以有253253个可以参照的表,因此每个表最多可个可以参照的表,因此每个表最多可以有以有253253个个FOREIGNKEYFOREIGNKEY约束。约束。FOREIGNKEYFOREIGNKEY约束中,只能参照同一个数据库中的表,而约束中,只能参照同一个数据库中的表,而不能参照其他数据库中的表。不能参照其他数据库中的表。FOREIGNKEYFOREIGNKEY子句中的列数目和每个列指定的数据类型必子句中的列数目和每个列指定的数据类型必须和须和REFERENCEREFERENCE子句中的列相同。子句中的列相同。FOREIGNKEYFOREIGNKEY约束不能自动创建

33、索引。约束不能自动创建索引。在临时表中,不能使用在临时表中,不能使用FOREIGNKEYFOREIGNKEY约束。约束。FOREIGNKEY1/6/20231/6/20234444使用管理器创建,修改和删除外健关联:使用管理器创建,修改和删除外健关联:使用管理器创建,修改和删除外健关联:使用管理器创建,修改和删除外健关联:1/6/20231/6/20234545l l建立外键时,外键所约束的列的数据类型及长度必须与主建立外键时,外键所约束的列的数据类型及长度必须与主键所在的列的数据类型及长度一致或可以由键所在的列的数据类型及长度一致或可以由SQLServerSQLServer自自动转换。动转换

34、。l l创建外键时,系统会自动为外键命名创建外键时,系统会自动为外键命名“FK_FK_“l l创建中检查现存数据创建中检查现存数据l l对复制强制关系对复制强制关系l l对对INSERTINSERT和和UPDATEUPDATE强制关系强制关系l l级联更新相关字段级联更新相关字段l l级联删除相关字段级联删除相关字段FOREIGNKEY1/6/20231/6/20234646l l1 1)创建表时定义外键关联)创建表时定义外键关联l l语法语法CreatetableCreatetable(列名(列名 数据类型数据类型 CONSTRAINTCONSTRAINT约束名约束名FOREIGNFOREI

35、GNKEYKEY)REFERRECESREFERRECES主键表主键表(主键列主键列)|CONSTRAINT|CONSTRAINT约束名约束名FOREIGNKEYFOREIGNKEY列名列名REFERRECESREFERRECES主键表主键表(主键列主键列)ONDELETECASCADE|NOACTIONONDELETECASCADE|NOACTIONONUPDATECASCADE|NOACTIONONUPDATECASCADE|NOACTIONNOTFORREPLICATIONNOTFORREPLICATION使用T-SQL管理FOREIGNKEY1/6/20231/6/20234747l

36、l说明:说明:l lONDELETECASCADE|NOACTIONONDELETECASCADE|NOACTION:表示删除表示删除外键相对应的主键所在的行时,级联删除外键相对应的主键所在的行时,级联删除(CASCADECASCADE)外键所在的行的数据或不作操作(外键所在的行的数据或不作操作(NONOACTIONACTION)。)。l lONUPDATECASCADE|NOACTIONONUPDATECASCADE|NOACTION:表示修改外表示修改外键相对应的主键所在的行时,级联修改键相对应的主键所在的行时,级联修改(CASCADECASCADE)外键所在的行的数据或不作操作(外键所在

37、的行的数据或不作操作(NONOACTIONACTION)。)。l lNOACTIONNOACTION是默认设置是默认设置使用T-SQL管理FOREIGNKEY1/6/20231/6/20234848例:例:createtablesc2createtablesc2(snosnochar(10),char(10),cnocnochar(10),char(10),gradegradeintint,primarykey(primarykey(sno,cnosno,cno),),foreignkey(foreignkey(snosno)references)referencesstudent(snost

38、udent(sno),foreignkey(foreignkey(cnocno)references)referencescourse(cnocourse(cno)使用T-SQL管理FOREIGNKEY1/6/20231/6/20234949为已有表添加关联为已有表添加关联语法:语法:altertablealtertable addconstraintaddconstraintFOREIGNKEYFOREIGNKEY列名列名REFERRECESREFERRECES主键表主键表(主键主键列列)ONDELETECASCADE|NOACTIONONDELETECASCADE|NOACTIONONUP

39、DATECASCADE|NOACTIONONUPDATECASCADE|NOACTIONNOTFORREPLICATIONNOTFORREPLICATION使用T-SQL管理FOREIGNKEY1/6/20231/6/20235050例:altertablesc2addconstrainthhforeignkey(sno)referencesstudent(sno)使用T-SQL管理FOREIGNKEY1/6/20231/6/20235151删除关联语法:altertabledropconstraint例altertablesc2dropconstrainthh使用T-SQL管理FOREIGN

40、KEY1/6/20231/6/20235252l l利用系统存储过程察看外键语法:Sp_fkeys主键表名l l例:查看引用表student的主键的外键信息sp_fkeyssl l使用关系图管理外键FOREIGNKEY1/6/20231/6/20235353约束的创建、查看、删除约束的创建、查看、删除lPRIMARY KEY约束约束lFOREIGN KEY约束约束lUNIQUE约束约束lCHECK约束约束lDEFAULT约束约束1/6/20231/6/20235454UNIQUE约束l l可使用可使用 UNIQUEUNIQUE约束确保在非主键列中不输入约束确保在非主键列中不输入重复值。尽管重复

41、值。尽管 UNIQUEUNIQUE约束和约束和 PRIMARYKEYPRIMARYKEY约束都强制唯一性,但在强制下面的唯一性时约束都强制唯一性,但在强制下面的唯一性时应使用应使用 UNIQUEUNIQUE约束而不是约束而不是 PRIMARYKEYPRIMARYKEY约约束:束:l l非主键的一列或列组合:一个表可以定义非主键的一列或列组合:一个表可以定义非主键的一列或列组合:一个表可以定义非主键的一列或列组合:一个表可以定义多多多多个个个个 UNIQUEUNIQUE 约束,而只能定义一个约束,而只能定义一个约束,而只能定义一个约束,而只能定义一个 PRIMARY KEY PRIMARY KE

42、Y 约束。约束。约束。约束。l l允许空值的列:允许空值的列:允许空值的列:允许空值的列:允许空值允许空值允许空值允许空值的列上可以定义的列上可以定义的列上可以定义的列上可以定义 UNIQUE UNIQUE 约束,而不能定义约束,而不能定义约束,而不能定义约束,而不能定义 PRIMARY KEY PRIMARY KEY 约束。约束。约束。约束。l lFOREIGNKEYFOREIGNKEY约束也可引用约束也可引用 UNIQUEUNIQUE约束。约束。1/6/20231/6/20235555使用管理器设置UNIQUE约束在添加UNIQUE约束时,SQLServer会检查现有的数据,确保除NULL

43、外所有值唯一,否则不能创建此约束1/6/20231/6/20235656l l1 1)在创建表时设置)在创建表时设置UNIQUEUNIQUE约束约束l l语法:语法:CreatetableCreatetable(列名(列名 数据类型数据类型 CONSTRAINTCONSTRAINT约束名约束名UNIQUEUNIQUE)|CONSTRAINT|CONSTRAINT约束名约束名UNIQUECLUSTERED|NONCLUSTEREDUNIQUECLUSTERED|NONCLUSTERED(列名)列名)使用使用SQL管理管理UNIQUE约束约束1/6/20231/6/20235757例:例:crea

44、tetablesc3createtablesc3(snosnochar(10),char(10),cnocnochar(10),char(10),gradegradeintint,unique(sno,cnounique(sno,cno)使用使用SQL管理管理UNIQUE约束约束1/6/20231/6/20235858为已有的表添加UNIQUE约束语法:altertableaddconstraintUNIQUECLUSTERED|NONCLUSTERED(列名)例:altertablestudentaddconstraintIX1unique(sname)1/6/20231/6/2023595

45、9删除UNIQUE约束语法:altertabledropconstraint例:altertablestudentdropconstraintIX1使用SQL管理UNIQUE约束1/6/20231/6/20236060约束的创建、查看、删除约束的创建、查看、删除lPRIMARY KEY约束约束lFOREIGN KEY约束约束lUNIQUE约束约束lCHECK约束约束lDEFAULT约束约束1/6/20231/6/20236161l lCHECKCHECK约束通过限制用户输入的值来加强域完整性。它指定约束通过限制用户输入的值来加强域完整性。它指定应用于列中输入的所有值的布尔(取值为应用于列中输入

46、的所有值的布尔(取值为TRUETRUE或或FALSEFALSE)搜)搜索条件,拒绝所有不取值为索条件,拒绝所有不取值为TRUETRUE的值。可以为每列指定多个的值。可以为每列指定多个CHECKCHECK约束。约束。例如,下面的例如,下面的SQLSQL语句创建一个成绩(语句创建一个成绩(scorescore)表,其中使用)表,其中使用CHECKCHECK约束来限定成绩只能为约束来限定成绩只能为0 0100100分:分:CREATETABLEscoreCREATETABLEscore(sutdent_numbersutdent_number intint,scorescoreintintNOTNU

47、LLNOTNULLCHECK(scoreCHECK(score=0ANDscore=0ANDscore=15000ANDsalary=15000ANDsalary=100000l l对单独一列可使用多个对单独一列可使用多个 CHECKCHECK约束。按约束创建的顺序约束。按约束创建的顺序对其取值。通过在表一级上创建对其取值。通过在表一级上创建 CHECKCHECK约束,可以将该约束,可以将该约束应用到多列上。当一列受到多个核查约束时,所有的约束应用到多列上。当一列受到多个核查约束时,所有的约束按照创建的顺序依次进行数据有效性的核查。约束按照创建的顺序依次进行数据有效性的核查。CHECK约束1/

48、6/20231/6/20236363使用对象资源管理器创建、修改和删除使用对象资源管理器创建、修改和删除CHECKCHECK约束约束l默认的情况下,核查约束将同时应用于新的数据和已经存在的数据1/6/20231/6/20236464l l在创建表时,定义CHECK约束Createtable(列名数据类型CONSTRAINT约束名CHECKNOTFORREPLICATION(约束表达式)|CONSTRAINT约束名CHECKNOTFORREPLICATION(约束表达式)使用T-SQL管理CHECK约束1/6/20231/6/20236565例:createtablesc2(snochar(10

49、),cnochar(10),gradeint,check(grade=0andgrade=100)使用T-SQL管理CHECK约束1/6/20231/6/20236666l l在已存在的表上,添加约束altertableaddconstraintCHECK(约束表达式)l l例:altertablesc2addconstraintc1check(grade=0andgrade=100)使用使用T-SQL管理管理CHECK约束约束1/6/20231/6/20236767l l删除check约束altertabledropconstraint使用使用T-SQL管理管理CHECK约束约束1/6/20

50、231/6/20236868l l约束可以是列约束或表约束:约束可以是列约束或表约束:列约束被指定为列定义的一部分,并且仅适用于列约束被指定为列定义的一部分,并且仅适用于那个列(前面的那个列(前面的scorescore表中的约束就是列约束)。表中的约束就是列约束)。表约束的声明与列的定义无关,可以适用于表中一表约束的声明与列的定义无关,可以适用于表中一个以上的列。个以上的列。CHECK约束1/6/20231/6/20236969约束的创建、查看、删除约束的创建、查看、删除lPRIMARY KEY约束约束lFOREIGN KEY约束约束lUNIQUE约束约束lCHECK约束约束lDEFAULT约

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁