第3章管理数据表

上传人:无*** 文档编号:179408174 上传时间:2023-01-01 格式:PPT 页数:79 大小:994.02KB
收藏 版权申诉 举报 下载
第3章管理数据表_第1页
第1页 / 共79页
第3章管理数据表_第2页
第2页 / 共79页
第3章管理数据表_第3页
第3页 / 共79页
资源描述:

《第3章管理数据表》由会员分享,可在线阅读,更多相关《第3章管理数据表(79页珍藏版)》请在装配图网上搜索。

1、13.1 SQL Server表的概念和数据类型表的概念和数据类型3.2 创建和管理数据表创建和管理数据表3.3 完整性的概念和约束类型 3.4 约束的创建和查看 3.5 删除约束、使用规则和使用默认值21.1.表的概念表的概念 在在SQL ServerSQL Server数据库中,数据库中,表定义为列的集合,与表定义为列的集合,与ExcelExcel电电子表格相似,数据在表中是按行和列的格式组织排列的。每子表格相似,数据在表中是按行和列的格式组织排列的。每行代表唯一的一条记录,而每列代表记录中的一个域。行代表唯一的一条记录,而每列代表记录中的一个域。学号姓名性别出生日期系部入学时间00010

2、1张三男1980计算机2000000201李伟男1981经 济 管理2000010101王丽女1982数学2001关系名(表名)属性(列或字段)关系模式 属性名记录或元组主键(码)32.表的设计表的设计 在在SQL Server创建表有如下限制:创建表有如下限制:每个数据库里最多有每个数据库里最多有20亿个表亿个表。每个表上最多可以创建每个表上最多可以创建一个聚集索引一个聚集索引和和249个非聚集索个非聚集索引引。每个表最多可以配置每个表最多可以配置1024个字段个字段。每条记录最多可以占每条记录最多可以占8060B,但不包括,但不包括text字段和字段和image字段。字段。43.1 SQL

3、 Server表的概念表的概念3.2 SQL Server中的数据类型中的数据类型3.3 创建数据表创建数据表3.4 管理数据表管理数据表 51.二进制数据二进制数据 2.字符型数据类型字符型数据类型 3.Unicode字符数据字符数据 4.日期时间型数据日期时间型数据 5.整数型数据整数型数据 6.精确数值型数据精确数值型数据 7.近似数值类型近似数值类型 8.货币数据货币数据 9.位类型数据位类型数据 61.二进制数据二进制数据功能:常用于存储图像等数据,包括长二进制数据功能:常用于存储图像等数据,包括长二进制数据binary、变长二进制数据、变长二进制数据varbinary和和image

4、三种。三种。类型类型存储空间大小存储空间大小(字节字节)最大取值最大取值说明说明Binary(n)N+4存储空间固定存储空间固定N1,8000默认为默认为1输入不足输入不足n+4字节字节,补足后补足后存储存储;超过则截断后存储超过则截断后存储.Varbinary(n)变长存储数据变长存储数据 N1,8000默认为默认为1输入不足输入不足n+4字节字节,按实际按实际长度存储长度存储;超过则截断后超过则截断后存储存储.image231-172.字符型数据类型字符型数据类型功能功能:用于存储汉字、英文字母、数字、标点和各种符号,用于存储汉字、英文字母、数字、标点和各种符号,必必须由英文单引号括起来须

5、由英文单引号括起来。类型类型存储空间大小存储空间大小(字节字节)最大取值最大取值说明说明char(n)固定长度存储字固定长度存储字符串符串N1,8000默认为默认为1输入不足输入不足n个字节个字节,补足后补足后存储存储;超过则截断后存储超过则截断后存储.varchar(n)按变长存储字符按变长存储字符串串N1,8000默认为默认为1输入不足输入不足n字节字节,按实际长按实际长度存储度存储;超过则截断后存储超过则截断后存储.text231-1个字节个字节83.Unicode字符数据字符数据 功能:存放功能:存放Unicode字符数据字符数据.支持的字符范围更大,存储所需支持的字符范围更大,存储所

6、需 要的空间也更大。要的空间也更大。类型类型存储空间大小存储空间大小(字节字节)最大取值最大取值说明说明nchar(n)固定长度存储固定长度存储字符串字符串N1,4000默认为默认为1输入不足输入不足n个字节个字节,补足后补足后存储存储;超过则截断后存储超过则截断后存储.nvarchar(n)按变长存储字按变长存储字符串符串N1,4000默认为默认为1输入不足输入不足n字节字节,按实际长按实际长度存储度存储;超过则截断后存储超过则截断后存储.ntext230-1个字节个字节94.日期时间型数据日期时间型数据功能:用于存储日期和时间数据。功能:用于存储日期和时间数据。类型类型存储范围存储范围da

7、tetime存储从存储从1753年年1月月1日到日到9999年年12月月31日的日期和时间日的日期和时间数据,精确度为数据,精确度为3%秒。秒。smalldatetime存储从存储从1900年年1月月1日到日到2079年年6月月6日的日期和时间数日的日期和时间数据,精确度为分据,精确度为分.105.整数型数据整数型数据功能:用于存储整型数据。功能:用于存储整型数据。类型类型存储大小(字节)存储大小(字节)数据范围数据范围bigint8-263 263-1int4-231 231-1smallint2-215 215-1tinyint10255116.精确数值型数据精确数值型数据 功能:用于存储

8、带有小数点且小数点后位数确定的实数。功能:用于存储带有小数点且小数点后位数确定的实数。类型类型说明说明数据范围数据范围decimal(p,s)p指定存储数据的最大位指定存储数据的最大位数,不含小数点数,不含小数点,p1,38;s指定存储的小数的指定存储的小数的最大位数最大位数,s0,p.默认小数位是默认小数位是0。-1038+1 1038-1numeric(p,s)127.近似数值类型近似数值类型功能:用于存储浮点数。功能:用于存储浮点数。类型类型说明说明数据范围数据范围float(n)n为精度,为精度,n1,53存放存放-1.79E+3081.79E+308数值数值范围内的浮点数范围内的浮点

9、数real存储大小为存储大小为4个字个字节节从从-3.40E+38 到到 3.40E+38 之之间的浮点数字数据间的浮点数字数据138.货币数据货币数据类型类型存储大小存储大小数据范围数据范围money8 个字节个字节货币数据值介于货币数据值介于-263与与 263-1之之间,精确到货币单位的千分之间,精确到货币单位的千分之十十smallmoney4个字节个字节货币数值介于货币数值介于-214,748.3648 +214.748,3647 之间,精确到货之间,精确到货币单位的千分之十币单位的千分之十149.位类型数据位类型数据功能:位类型数据用于存储整数,只能取功能:位类型数据用于存储整数,只

10、能取 1、0 或或NULL,常用于逻辑数据的存取。常用于逻辑数据的存取。说明:说明:在位类型的字段中输入在位类型的字段中输入0 0和和1 1之外的任何值,系统都会之外的任何值,系统都会 作为作为1 1来处理。来处理。如果一个表中有如果一个表中有8 8个以下的位类型数据字段,则系统会用一个以下的位类型数据字段,则系统会用一 个字节存储这些字段;如果表中有个字节存储这些字段;如果表中有9 9个以上个以上1616个以下位类型数据个以下位类型数据 字段,则系统会用两个字节来存储这些字段。字段,则系统会用两个字节来存储这些字段。153.1 SQL Server表的概念表的概念3.2 SQL Server

11、中的数据类型中的数据类型3.3 创建数据表创建数据表3.4 管理数据表管理数据表 161.使用使用SSMS创建表创建表 创建表的步骤创建表的步骤:1)定义表结构定义表结构:给表的每一列取字段名,并确定每一列的数:给表的每一列取字段名,并确定每一列的数据类型、数据长度、列数据是否可以为空等。据类型、数据长度、列数据是否可以为空等。2)设置约束设置约束:设置约束是为了限制该列输入值的取值范围,:设置约束是为了限制该列输入值的取值范围,以保证输入数据的正确性和一致性。以保证输入数据的正确性和一致性。3)添加数据添加数据:表结构建立完成之后,就可以向表中输入数据。:表结构建立完成之后,就可以向表中输入

12、数据。171.使用使用SSMS创建表创建表 例例1:请在请在student数据库中建立数据库中建立“学生基本信息学生基本信息”表的结构。表的结构。注注:主键的字段值不能为空主键的字段值不能为空,且字段值在表中必须唯一且字段值在表中必须唯一字段名字段名字段数据类型字段数据类型长度长度是否为空是否为空约束约束学号学号char8否否主键主键姓名姓名char10否否 性别性别char2是是 默 认 值默 认 值 男男出生年月出生年月datetime8是是 籍贯籍贯varchar20是是 家庭住址家庭住址varchar60是是电话电话char15是是 所属班级所属班级char8是是 182.使用使用T-

13、SQL语句创建表语句创建表 1)语法:语法:CREATE TABLE database_name.owner.|owner.table_name (column_definition|PRIMARY KEY|UNIQUE,N ):=column_name data_type DEFAULT constraint_expression|IDENTITY(seed,increment),n19语法注释:语法注释:database_name:指定创建的表所在的数据库,在:指定创建的表所在的数据库,在当前数据库创建表时该项可以省略。当前数据库创建表时该项可以省略。owner:指定表的拥有者,如果表的拥

14、有者为当前:指定表的拥有者,如果表的拥有者为当前用户,该项可以省略。用户,该项可以省略。table_name:指定新建表的名称。:指定新建表的名称。column_definttion:为表中字段的定义表达式。:为表中字段的定义表达式。column_name:为表中的字段名。:为表中的字段名。data_type:为字段的数据类型。:为字段的数据类型。PRIMARY KEY:为主键约束关键字。:为主键约束关键字。UNIQUE:为唯一约束关键字。:为唯一约束关键字。DEFAULT:为默认约束关键字。:为默认约束关键字。IDENTITY:为自动编号标识。:为自动编号标识。Seed:为自动标识的开始值,

15、默认为:为自动标识的开始值,默认为1。Increment:为自动编号的步长或增量,默认为:为自动编号的步长或增量,默认为1。20 例例2:创建带有参照约束的学生表创建带有参照约束的学生表stud_info,学生表的表结构定义如,学生表的表结构定义如 下表所示。下表所示。“学号学号”字段为学生表的主键。字段为学生表的主键。字段名字段名字段数据类型字段数据类型长度长度是否为空是否为空约束约束学号学号char8否否主键主键姓名姓名char10否否 性别性别char2是是 默 认 值默 认 值 男男出生年月出生年月datetime8是是 籍贯籍贯varchar20是是 家庭住址家庭住址varchar6

16、0是是电话电话char15是是 所属班级所属班级char8是是 21创建创建“学生学生”表的代码如下:表的代码如下:USE StudentGO CREATE TABLE stud_info(学号学号 char(8)PRIMARY KEY,姓名姓名 char(10)NOT NULL,性别性别 char(2)DEFAULT 男男,出生年月出生年月 datetime,籍贯籍贯 varchar(20),家庭住址家庭住址 varchar(60),电话电话 char(15),所属班级所属班级 char(8))GO22例例3:在学生管理数据库中用:在学生管理数据库中用T-SQL语句创建一个学生成绩表语句创建

17、一个学生成绩表 stud_score,表结构如下,其中包含标识列和计算列。,表结构如下,其中包含标识列和计算列。23实现的实现的T-SQL语句语句:CREATE TABLE CREATE TABLE stud_scorestud_score(ScoreidScoreid intint IDENTITY(1,1)PRIMARY KEY,IDENTITY(1,1)PRIMARY KEY,Stud_noStud_no char(8)NOT NULL,char(8)NOT NULL,Math Math intint DEFAULT 0,DEFAULT 0,Chinese Chinese intint

18、DEFAULT 0,DEFAULT 0,Computer Computer intint DEFAULT 0,DEFAULT 0,total_scoretotal_score AS Math+Chinese+computer AS Math+Chinese+computer)GOGO24设置列的标识属性时,应注意设置列的标识属性时,应注意:该列的数据类型必须是该列的数据类型必须是decimal,int,numeric,smallint,bigint,tinyint中的一种,才可以设置标识属性。中的一种,才可以设置标识属性。标识列不允许为空值,也不能包含默认属性。标识列不允许为空值,也不能包含默

19、认属性。每个表中只允许有一个标识列,并且不可以修改。每个表中只允许有一个标识列,并且不可以修改。设置计算列时,应注意设置计算列时,应注意:在计算列中不能添加如在计算列中不能添加如primary key、unique、foreign key、default等约束条件。等约束条件。不能对计算列进行赋值。不能对计算列进行赋值。253.1 SQL Server表的概念表的概念3.2 SQL Server中的数据类型中的数据类型3.3 创建数据表创建数据表3.4 管理数据表管理数据表 263.4.1 修改表结构修改表结构 3.4.2 删除数据表删除数据表 3.4.3 查看数据表查看数据表271 使用使用

20、SSMS修改表结构修改表结构例例4:修改:修改“student”库中库中“学生基本信息表学生基本信息表”表结构。表结构。282 使用使用T-SQL语言修改表语言修改表 1)语法:)语法:ALTER TABLE table_name ALTER COLUMN column_name new_data_type (precision ,scale )NULL|NOT NULL|ADD ,.n|DROP CONSTRAINT constraint_name|COLUMN column ,.n DEFAULT constant_expression WITH VALUES|IDENTITY (seed

21、,increment)29 2)语法注释:)语法注释:ALTER COLUMN:修改表列属性的子句:修改表列属性的子句 ADD:增加列或约束的子句:增加列或约束的子句 DROP COLUMN:删除表列的子句:删除表列的子句 table_name:需要修改表的表格名称:需要修改表的表格名称 column_name:希望增加的字段名:希望增加的字段名 data_type:需要增加的字段的数据类型名:需要增加的字段的数据类型名 collation_name:排序规则名:排序规则名 30例例5:使用:使用T-SQL代码修改学生基本信息表代码修改学生基本信息表stud_info结构结构,增加字增加字段段

22、“QQ号码号码”,数据类型为,数据类型为varchar,长度为,长度为15,可为空;增加入,可为空;增加入学时间字段,时间学时间字段,时间/日期类型,默认时间为日期类型,默认时间为2006-9-1。USE studentGOALTER TABLE stud_infoADD QQ号码号码 varchar(15)GOALTER TABLE stud_infoADD 入学时间入学时间 datetime DEFAULT 2006-9-1GO31例例6:使用:使用T-SQL代码修改学生基本信息表代码修改学生基本信息表stud_info结结构,修改字段构,修改字段“家庭住址家庭住址”的长度为的长度为100

23、。实现的实现的T-SQL语句语句USE studentGOALTER TABLE stud_infoALTER COLUMN 家庭住址家庭住址 varchar(100)GO32例例7:使用:使用T-SQL语句删除学生基本信息表语句删除学生基本信息表stud_info的的QQ号码字段。号码字段。实现的实现的T-SQL语句语句USE studentGOALTER TABLE stud_infoDROP COLUMN QQ号码号码GO 333.4.1 修改表结构修改表结构 3.4.2 删除数据表删除数据表 3.4.3 查看数据表查看数据表341 使用使用SSMS删除数据表删除数据表2 使用使用T-S

24、QL语句删除数据表语句删除数据表语法格式为:语法格式为:DROP TABLE table_name例例8:使用:使用T-SQL语句删除学生基本信息表。语句删除学生基本信息表。实现的实现的T-SQL语句语句 USE student GO DROP TABLE 学生基本信息表学生基本信息表 GO353.4.1 修改表结构修改表结构 3.4.2 删除数据表删除数据表 3.4.3 查看数据表查看数据表361 使用使用SSMS对象资源管理器查看表属性信息对象资源管理器查看表属性信息。在对象资源管理器中,右键单击在对象资源管理器中,右键单击“student”数据库的数据库的学生基本信息表学生基本信息表st

25、ud_info,从弹出的快捷菜单中选择,从弹出的快捷菜单中选择“属属性性”命令。命令。372 使用使用T-SQL语句查看数据表语句查看数据表 Exec sp_help table_name 例例9:查看学生基本信息表查看学生基本信息表stud_info 属性信息。属性信息。Exec Sp_help stud_info38 完整性的概念完整性的概念 数据完整性指存储在数据库中的数据完整性指存储在数据库中的数据正确数据正确无误无误并且并且相关数据相关数据具有一致性具有一致性。数据完整性可分为以下四种:数据完整性可分为以下四种:1、实体完整性、实体完整性:要求在表中:要求在表中不能不能存在两条存在两

26、条完全完全相同相同的记录。的记录。实现实体完整性的方法有:实现实体完整性的方法有:主键约束、唯一主键约束、唯一约束、指定约束、指定IDENTITY属性。属性。392、域完整性、域完整性:要求向表中指定列输入的数据必须具有正确的数据:要求向表中指定列输入的数据必须具有正确的数据类型、格式及有效的数据范围。类型、格式及有效的数据范围。实现域完整性的方法有:实现域完整性的方法有:检查约束、外键约束、非空约束、规检查约束、外键约束、非空约束、规则及在建表时设置的数据类型。则及在建表时设置的数据类型。3、参照完整性、参照完整性:指作用于有关联的表通过主键和外键或主键和惟:指作用于有关联的表通过主键和外键

27、或主键和惟一键间的关系,使表中的键值在相关表中保持一致。一键间的关系,使表中的键值在相关表中保持一致。实现参照完整性的方法有实现参照完整性的方法有:外键约束:外键约束.4、用户定义的完整性、用户定义的完整性:指应用领域需要遵守的约束条件。实现用:指应用领域需要遵守的约束条件。实现用户定义完整性的方法包括规则、触发器和存储过程等户定义完整性的方法包括规则、触发器和存储过程等401.NOT NULL(非空)约束(非空)约束 2.PRIMARY KEY(主键)约束(主键)约束3.UNIQUE(惟一)约束(惟一)约束4.CHECK(检查)约束(检查)约束 5.FOREIGN KEY(外健)约束(外健)

28、约束 6.DEFAULT(默认)约束(默认)约束 41 使用使用 CREATE TABLE 或者或者 ALTER TABLE CREATE TABLE 是在创建表时创建约束是在创建表时创建约束 ALTER TABLE 是在一个已有的表上添加约束是在一个已有的表上添加约束 可添加可添加单列单列或或多列多列约束约束若约束应用于单列,称为若约束应用于单列,称为列级约束列级约束若约束引用了多列,称为若约束引用了多列,称为表级约束表级约束,一般此类,一般此类约束都是在表创建完成后再进行添加约束约束都是在表创建完成后再进行添加约束.42CREATE TABLE table_name (column_nam

29、e data_type .n DEFAULT constant_expression 431.创建主键可以在建表时使用创建主键可以在建表时使用CREATE TABLE 命令完成。命令完成。示范案例示范案例1 在在student库中,建立一个民族表(民族代码,民族名称),库中,建立一个民族表(民族代码,民族名称),将民族代码指定为主键。将民族代码指定为主键。其程序清单如下:其程序清单如下:CREATE TABLE native (native_id char(2)CONSTRAINT pk_mzdm PRIMARY KEY,Native_name varchar(30)NOT NULL)GO44

30、2.为已存在的表创建主键约束,其语法格式如下:为已存在的表创建主键约束,其语法格式如下:ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEY CLUSTERED|NONCLUSTERED (column,n)45示范案例示范案例2 使用使用T-SQL语句在学生信息管理数据库语句在学生信息管理数据库“班级班级”表表class中,指定字段中,指定字段“班级代号班级代号”class_id为表的主为表的主键。键。程序清单如下:程序清单如下:ALTER TABLE class ADD CONSTRAINT pk_bjbh PR

31、IMARY KEY(class_id)46 每张表每张表只能有一个只能有一个 PRIMARY KEY 约束约束 输入的输入的值值必须是必须是惟一惟一的的 不允许空值不允许空值 将在指定列上创建惟一索引将在指定列上创建惟一索引47为存在的表创建惟一约束,其语法格式如下:为存在的表创建惟一约束,其语法格式如下:ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE CLUSTERED|NONCLUSTERED (column,n)48示范案例示范案例3 使用使用T-SQL语句在学生信息管理数据库语句在学生信息管理数据库student

32、中,为民族表中,为民族表native中的中的“民族名称民族名称”native_name字段创建一个惟一约束。字段创建一个惟一约束。程序清单如下:程序清单如下:ALTER TABLE native ADD CONSTRAINT uk_mzmz UNIQUE(native_name)GO 49允许一个空值允许一个空值在一个表上在一个表上允许多个允许多个 UNIQUE 约束约束可可在一个或者多个列在一个或者多个列上定义上定义是通过一个惟一索引强制约束的是通过一个惟一索引强制约束的50 使用使用SQL语句为已存在的表创建检查约束,其语法语句为已存在的表创建检查约束,其语法格式如下:格式如下:ALTER

33、 TABLE table_name ADD CONSTRAINT constraint_name CHECK (logical_expression)51示范案例示范案例4 使用使用T-SQL语句在学生信息管理数据库语句在学生信息管理数据库student中,为学生成中,为学生成绩表绩表score中的成绩中的成绩“Sscore”字段创建一个检查约束,以保证字段创建一个检查约束,以保证输入的数据大于等于输入的数据大于等于0而小于等于而小于等于100。程序清单如下:程序清单如下:ALTER TABLE score ADD CONSTRAINT ck_chengji CHECK(Sscore=0 an

34、d Sscore=100)52在每次执行在每次执行 INSERT 或者或者 UPDATE 语句的时候语句的时候校验校验数据值。数据值。可以引用同表中的其他列可以引用同表中的其他列,但但不能引用其他表中的列。不能引用其他表中的列。不能包含子查询。不能包含子查询。列级列级 CHECK CHECK 约束可省略名字,让系统自动生成。约束可省略名字,让系统自动生成。表达式可以用表达式可以用 AND AND 以及以及 OR OR 连接以表示复杂逻辑。连接以表示复杂逻辑。CHECK CHECK 约束中可使用系统函数。约束中可使用系统函数。53 使用使用SQL语句为已存在的表创建默认约束,其语法格语句为已存在

35、的表创建默认约束,其语法格式如下:式如下:ALTER TABLE table_name ADD CONSTRAINT constraint_name DEFAULT constant_expression FOR column_name 54示范案例示范案例5 使用使用T-SQL语句在学生信息管理数据库语句在学生信息管理数据库student中,为教中,为教师表师表teachers中的学历中的学历tdegree字段创建一个默认约束,字段创建一个默认约束,其默认值为其默认值为本科本科。程序清单如下:程序清单如下:ALTER TABLE teachers ADD CONSTRAINT df_xuel

36、i DEFAULT 本科本科 FOR tdegree 55DEFAULT约束创建时将检查表中的现存数据。约束创建时将检查表中的现存数据。DEFAULT约束约束只对只对INSERT语句有效。语句有效。每列只能定义一个每列只能定义一个DEFAULT约束。约束。不能和不能和“标识标识”属性共同使用。属性共同使用。为具有为具有PRIMARY KEY或或UNIQUE约束的列指定默约束的列指定默认值是没有意义的。认值是没有意义的。常量值外面可以加或者不加括号,常量值外面可以加或者不加括号,字符或者日期字符或者日期常常量量必须加上单引号或双引号。必须加上单引号或双引号。56使用使用SQL语句创建外键约束的语

37、法格式为:语句创建外键约束的语法格式为:ALTER TABLE table_name ADD CONSTRAINT constraint_name FOREIGN KEY(column_name,)REFERENCES ref_table (ref_column_name,)57 示范案例示范案例66 使用使用T-SQL语句在学生信息管理数据库语句在学生信息管理数据库student中,中,为学生基本信息表为学生基本信息表stud_info中的中的“所属班级所属班级”字段字段创建一个外键约束,引用班级表创建一个外键约束,引用班级表class的班级代码的班级代码class_id字段字段,从而保证输

38、入有效的班级代码从而保证输入有效的班级代码。程序清单如下:程序清单如下:ALTER TABLE stud_info ADD CONSTRAINT fk_bjdm FOREIGN KEY(所属班级所属班级)REFERENCES class(class_id)58提供了单列或多列的引用完整性。提供了单列或多列的引用完整性。FOREIGN KEY子句子句中指定的列的个数和数据类型必须和中指定的列的个数和数据类型必须和REFERENCES子句子句中指定的列的中指定的列的个数和数据类型匹配。个数和数据类型匹配。修改数据的时候,用户必须在被修改数据的时候,用户必须在被FOREIGN KEY约束引约束引用的

39、表上具有用的表上具有SELECT或或REFERENCES权限。权限。若若引用的是同表中的列引用的是同表中的列,那么可只用,那么可只用REFERENCES子句子句而而省略省略FOREIGN KEY子句。子句。59SQL Server 里的约束只是里的约束只是“最后防线最后防线”当给一个表添加约束的时候,当给一个表添加约束的时候,SQL Server 将检查现将检查现有数据是否违反约束。有数据是否违反约束。建议创建约束的时候指定名称,否则系统将为约束自建议创建约束的时候指定名称,否则系统将为约束自动产生一个复杂的名称。动产生一个复杂的名称。名称必须惟一,且符合名称必须惟一,且符合 SQL Serv

40、er 标识符的规则。标识符的规则。601.1.使用系统存储过程查看约束信息使用系统存储过程查看约束信息 2.2.使用使用SSMS查看约束信息查看约束信息 611.1.使用系统存储过程查看约束信息使用系统存储过程查看约束信息 1)系统存储过程)系统存储过程sp_help用来查看约束的名称、创用来查看约束的名称、创建者、类型和创建时间,其语法格式为:建者、类型和创建时间,其语法格式为:EXEC sp_help 约束名称约束名称 2)如果约束存在文本信息,可以使用)如果约束存在文本信息,可以使用sp_helptext来查看,其语法格式为:来查看,其语法格式为:EXEC sp_helptext 约束名

41、称约束名称 例:例:使用系统存储过程查看学生表上的约束使用系统存储过程查看学生表上的约束 ck_csrq的文本信息。其程序清单如下:的文本信息。其程序清单如下:EXEC sp_helptext ck_csrq 622.使用使用SSMS查看约束信息的步骤为:查看约束信息的步骤为:1 1)在)在SSMS中,选择要查看约束的表(如学生中,选择要查看约束的表(如学生表),打开表设计器。表),打开表设计器。2 2)在表设计器中可以查看主键约束、空值约束)在表设计器中可以查看主键约束、空值约束和默认值约束。和默认值约束。3 3)在表设计器中,右击鼠标,从弹出的快捷菜)在表设计器中,右击鼠标,从弹出的快捷菜

42、单中选择单中选择“属性属性”命令。弹出命令。弹出“属性属性”对话框对话框 4 4)在)在“属性属性”对话框中通过切换选项卡,可以对话框中通过切换选项卡,可以查看主键约束、外键约束与查看主键约束、外键约束与CHECK约束信息。约束信息。63 1.使用使用SSMS删除表约束删除表约束 2.使用使用DROP命令删除表约束命令删除表约束 64 1.使用使用SSMS删除表约束删除表约束 在表设计器的窗口中,可以删除主键,去掉默在表设计器的窗口中,可以删除主键,去掉默认值。在表设计器的认值。在表设计器的“属性属性”窗口中,可以通窗口中,可以通过切换选项卡,选择约束名称,单击过切换选项卡,选择约束名称,单击

43、“删除删除”按钮,分别删除主键约束、外键约束和按钮,分别删除主键约束、外键约束和CHECK约束。约束。65662.使用使用DROP命令删除表约束命令删除表约束 在在T-SQL语言中,也可以方便的删除一个或多语言中,也可以方便的删除一个或多个约束,其语法格式为:个约束,其语法格式为:ALTER TABLE table_name DROP CONSTRAINT constraint_name,n67 示范案例示范案例7 使用使用T-SQL语句删除语句删除Northwind数据库中数据库中CK_Quantity约束。约束。程序清单如下:程序清单如下:ALTER TABLE order details

44、 DROP CONSTRAINT ck_quantity68完整性类型完整性类型约束类型约束类型描述描述域域DEFAULT如果在如果在INSERT语句中未显式提供值,则指定为语句中未显式提供值,则指定为列提供的值列提供的值CHECK指定列中可接受的数据值指定列中可接受的数据值REFERENCES基于其他表中的列的值,指定可接受的用于更新基于其他表中的列的值,指定可接受的用于更新的数据值的数据值实体实体PRIMARY KEY惟一标识每一列,确保用户没有输入重复的值。惟一标识每一列,确保用户没有输入重复的值。同时创建一个索引以增强性能。不允许空值同时创建一个索引以增强性能。不允许空值UNIQUE确

45、保在非主键列中不输入重复值,并创建一个索确保在非主键列中不输入重复值,并创建一个索引以增强性能。允许空值引以增强性能。允许空值引用引用FOREIGN KEY定义一列或多列的值与同表或其他表中主键的值定义一列或多列的值与同表或其他表中主键的值匹配匹配CHECK基于同表中其他列的值,指定列中可接受的数据基于同表中其他列的值,指定列中可接受的数据值值69规则与规则与CHECK约束的比较约束的比较1 1、check约束比规则更简明,它可以在建表时由约束比规则更简明,它可以在建表时由create table语句将其作为表的一部分进行指定。语句将其作为表的一部分进行指定。2 2、规则需要单独创建规则需要单

46、独创建,然后绑定到列上。,然后绑定到列上。3 3、在、在一个列上只能应用一个规则一个列上只能应用一个规则,但是却,但是却可可以应以应用用到到多个多个check约束约束。4 4、规则的优点是:一个、规则的优点是:一个规则只需要定义一次规则只需要定义一次就已就已可以多次应用可以多次应用,可以应用到多个表或多个列,还可以,可以应用到多个表或多个列,还可以应用到用户定义的数据类型上。应用到用户定义的数据类型上。701.创建规则的命令是创建规则的命令是CREATE RULE,语法格式为:,语法格式为:CREATE RULE rule_name AS condition_expression 2.绑定规则

47、其语法格式为绑定规则其语法格式为 :EXECUTE sp_bindrule 规则名称规则名称,表名表名.字段字段名名|自定义数据类型名自定义数据类型名71 示范案例示范案例8 在在Northwind数据库中创建规则数据库中创建规则,名称为名称为region_rule,条件表达式是要求变量在条件表达式是要求变量在(wa,ia,il,ks,mo)范范围之内。围之内。程序清单如下:程序清单如下:CREATE RULE region_rule AS region IN(wa,ia,il,ks,mo)72 示范案例示范案例9 将规则将规则“region_rule”绑定到员工绑定到员工“employees

48、”表表中的区域中的区域“region”字段字段。程序清单如下:程序清单如下:EXEC sp_bindrule region_rule,employees.region733.解绑规则其语法格式为:解绑规则其语法格式为:EXECUTE sp_unbindrule 表名表名.字段名字段名|自自定义数据类型名定义数据类型名4.删除规则其语法格式为:删除规则其语法格式为:DROP RULE 规则名称规则名称,n74 示范案例示范案例10 将规则将规则“region_rule”从从“employees”表中表中“region”列解除绑定列解除绑定。程序清单如下:程序清单如下:EXEC sp_unbind

49、rule employees.region75 示范案例示范案例11 将规则将规则“region_rule”删除删除。程序清单如下:程序清单如下:DROP rule region_rule761.1.创建默认的语法格式如下:创建默认的语法格式如下:CREATE DEFAULT default_name AS default_description 2.2.绑定默认值其语法格式为:绑定默认值其语法格式为:EXECUTE sp_bindefault 默认名称默认名称,表名表名.字段名字段名|自定义数据类型名自定义数据类型名77 示范案例示范案例12 在在“Northwind”数据库中创建默认,名称

50、为数据库中创建默认,名称为phone_default,将其绑定到将其绑定到“customers”表的表的“phone”字段,使其默认值为字段,使其默认值为“(000)000-0000”。程序清单如下:程序清单如下:CREATE DEFAULT phone_default AS(000)000-0000 GO EXEC sp_bindefault phone_default,customers.phone783.解绑默认值其语法解绑默认值其语法格式为:格式为:EXECUTE sp_unbindefault 表名表名.字段名字段名|自定义自定义数据类型名数据类型名 4.删除默认值删除默认值其语法格式如下:其语法格式如下:DROP DEFAULT default_name,n 79 示范案例示范案例13 在在“Northwind”数据库中将默认数据库中将默认“phone_default”从从“customers”表中表中“phone”列解除绑定,并将其列解除绑定,并将其删除删除。程序清单如下:程序清单如下:EXEC SP_UNBINDEFAULT customers.phone GO DROP DEFAULT phone_default GO

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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