好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

管理数据表PPT课件.ppt

79页
  • 卖家[上传人]:人***
  • 文档编号:593385166
  • 上传时间:2024-09-24
  • 文档格式:PPT
  • 文档大小:451.50KB
  • / 79 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1第第3章章 管理数据表及数据完整性管理数据表及数据完整性 3.1 SQL Server表的概念和数据类型表的概念和数据类型3.2 创建和管理数据表创建和管理数据表3.3 完整性的概念和约束类型 3.4 约束的创建和查看 3.5 删除约束、使用规则和使用默认值 23.1 SQL Server3.1 SQL Server表的概念表的概念表的概念表的概念1.1.表的概念表的概念 在在SQL ServerSQL Server数据库中,数据库中,表定表定义为列的集合,与列的集合,与ExcelExcel电子表格相似,数据在表中是按行和列的格式子表格相似,数据在表中是按行和列的格式组织排列的每排列的每行代表唯一的一条行代表唯一的一条记录,而每列代表,而每列代表记录中的一个域中的一个域 学号姓名性别出生日期系部入学时间000101张三男1980计算机2000000201李伟男1981经 济 管理2000010101王丽女1982数学2001关系名(表名)属性(列或字段)关系模式学生表学生表学生表学生表 属性名记录或元组主键(码) 33.1 SQL Server3.1 SQL Server表的概念表的概念表的概念表的概念2.表的设计表的设计 在在SQL Server创建表有如下限制:创建表有如下限制:Ø每个数据库里最多有每个数据库里最多有20亿个表亿个表。

      Ø每每个个表表上上最最多多可可以以创创建建一一个个聚聚集集索索引引和和249个个非非聚聚集集索索引引Ø每个表最多可以配置每个表最多可以配置1024个字段个字段Ø每每条条记记录录最最多多可可以以占占8060B,,但但不不包包括括text字字段段和和image字段  4第第3章章 管理数据表管理数据表 3.1 SQL Server表的概念表的概念3.2 SQL Server中的数据类型中的数据类型3.3 创建数据表创建数据表3.4 管理数据表管理数据表  53.2 SQL Server 20053.2 SQL Server 2005数据类型数据类型数据类型数据类型‘1.二进制数据二进制数据 ‘2.字符型数据类型字符型数据类型 ‘字符数据字符数据 ‘4.日期时间型数据日期时间型数据 ‘5.整数型数据整数型数据 ‘6.精确数值型数据精确数值型数据 ‘7.近似数值类型近似数值类型 ‘8.货币数据货币数据 ‘9.位类型数据位类型数据  63.2 SQL Server 20053.2 SQL Server 2005数据类型数据类型数据类型数据类型1.二进制数据二进制数据功能:常用于存储图像等数据,包括长二进制数据功能:常用于存储图像等数据,包括长二进制数据binary、、变长二进制数据变长二进制数据varbinary和和image三种。

      三种类型类型存储空间大小存储空间大小(字节字节)最大取值最大取值说明说明Binary(n)N+4存储空间固定存储空间固定N∈ ∈[1,8000]默认为默认为1输入不足输入不足n+4字节字节,补足后补足后存储存储;超过则截断后存储超过则截断后存储.Varbinary(n)变长存储数据变长存储数据N∈ ∈[1,8000]默认为默认为1输入不足输入不足n+4字节字节,按实际按实际长度存储长度存储;超过则截断后超过则截断后存储存储.image231-1 73.2 SQL Server 20053.2 SQL Server 2005数据类型数据类型数据类型数据类型2.字符型数据类型字符型数据类型功能功能: :用于存储汉字、英文字母、数字、标点和各种符号,用于存储汉字、英文字母、数字、标点和各种符号,必必须由英文单引号括起来须由英文单引号括起来类型类型存储空间大小存储空间大小(字节字节)最大取值最大取值说明说明char(n)固定长度存储字固定长度存储字符串符串N∈ ∈[1,8000]默认为默认为1输入不足输入不足n个字节个字节,补足后补足后存储存储;超过则截断后存储超过则截断后存储.varchar(n)按变长存储字符按变长存储字符串串N∈ ∈[1,8000]默认为默认为1输入不足输入不足n字节字节,按实际长按实际长度存储度存储;超过则截断后存储超过则截断后存储.text231-1个字个字节 83.2 SQL Server 20053.2 SQL Server 2005数据类型数据类型数据类型数据类型字符数据字符数据 功能:存放功能:存放Unicode字符数据字符数据. .支持的字符范围更大,存储所需支持的字符范围更大,存储所需 要的空间也更大。

      要的空间也更大类型类型存储空间大小存储空间大小(字节字节)最大取值最大取值说明说明nchar(n)固定长度存储固定长度存储字符串字符串N∈ ∈[1,4000]默认为默认为1输入不足输入不足n个字节个字节,补足后补足后存储存储;超过则截断后存储超过则截断后存储.nvarchar(n)按变长存储字按变长存储字符串符串N∈ ∈[1,4000]默认为默认为1输入不足输入不足n字节字节,按实际长按实际长度存储度存储;超过则截断后存储超过则截断后存储.ntext230-1个字个字节 93.2 SQL Server 20053.2 SQL Server 2005数据类型数据类型数据类型数据类型4.日期时间型数据日期时间型数据功能:用于存储日期和时间数据功能:用于存储日期和时间数据类型类型存储范围存储范围datetime存储从存储从1753年年1月月1日到日到9999年年12月月31日的日期和时间日的日期和时间数据,精确度为数据,精确度为3%秒smalldatetime存储从存储从1900年年1月月1日到日到2079年年6月月6日的日期和时间数日的日期和时间数据,精确度为分据,精确度为分.注意注意注意注意: : : :当使用日期格式数据时,在字符串中可以使用当使用日期格式数据时,在字符串中可以使用当使用日期格式数据时,在字符串中可以使用当使用日期格式数据时,在字符串中可以使用 斜杠斜杠斜杠斜杠’ ’/ / / /’ ’ , , , ,连字符连字符连字符连字符’ ’- - - -’ ’或句号或句号或句号或句号. . . .作为分隔符。

      作为分隔符作为分隔符作为分隔符在在在在SQLSERVER2008SQLSERVER2008SQLSERVER2008SQLSERVER2008中增加了中增加了中增加了中增加了datedatedatedate、、、、timetimetimetime、、、、datetime2datetime2datetime2datetime2、、、、datetimeoffsetdatetimeoffsetdatetimeoffsetdatetimeoffset类型类型类型类型 103.2 SQL Server 20053.2 SQL Server 2005数据类型数据类型数据类型数据类型5. .整数型数据整数型数据功能:用于存储整型数据功能:用于存储整型数据类型类型存储大小(字节)存储大小(字节)数据范围数据范围bigint8-263 ~ 263-1int4-231 ~ 231-1smallint2-215 ~ 215-1tinyint10~255 113.2 SQL Server 20053.2 SQL Server 2005数据类型数据类型数据类型数据类型6.精确数值型数据精确数值型数据 功能:用于存储带有小数点且小数点后位数确定的实数。

      功能:用于存储带有小数点且小数点后位数确定的实数类型类型说明说明数据范围数据范围decimal(p,[s])p指定存储数据的最大位指定存储数据的最大位数,不含小数点数,不含小数点,,p∈ ∈[1,,38];;s指定存储的小数的指定存储的小数的最大位数最大位数,, s∈ ∈[0,,p].默认小数位是默认小数位是01038+1 ~ 1038-1numeric(p,[s]) 123.2 SQL Server 20053.2 SQL Server 2005数据类型数据类型数据类型数据类型7.近似数值类型近似数值类型功能:用于存储浮点数功能:用于存储浮点数 类型类型说明说明数据范围数据范围float(n)n为精度,为精度,n∈∈[1,,53]存放存放-1.79E+308~1.79E+308数值数值范围内的浮点数范围内的浮点数real存储大小为存储大小为4个字个字节节从从 -3.40E + 38 到到 3.40E + 38 之之间的浮点数字数据间的浮点数字数据 133.2 SQL Server 20053.2 SQL Server 2005数据类型数据类型数据类型数据类型8.货币数据货币数据类型类型存储大小存储大小数据范围数据范围money8 个字节个字节货币数据值介于货币数据值介于 -263与与 263 - 1之之间,精确到货币单位的千分之间,精确到货币单位的千分之十十smallmoney4个字节个字节货币数值介于货币数值介于-214,748.3648 ~ +214.748,3647 之间,精确到货之间,精确到货币单位的千分之十币单位的千分之十 143.2 SQL Server 20053.2 SQL Server 2005数据类型数据类型数据类型数据类型9.位类型数据位类型数据功能:位类型数据用于存储整数,只能取功能:位类型数据用于存储整数,只能取 1、、0 或或NULL,, 常用于逻辑数据的存取。

      常用于逻辑数据的存取说明:说明: 在位类型的字段中输入在位类型的字段中输入0 0和和1 1之外的任何值,系统都会之外的任何值,系统都会 作为作为1 1来处理 如果一个表中有如果一个表中有8 8个以下的位类型数据字段,则系统会用一个以下的位类型数据字段,则系统会用一 个字节存储这些字段;如果表中有个字节存储这些字段;如果表中有9 9个以上个以上1616个以下位类型数据个以下位类型数据 字段,则系统会用两个字节来存储这些字段字段,则系统会用两个字节来存储这些字段 15第第3章章 管理数据表管理数据表 3.1 SQL Server表的概念表的概念3.2 SQL Server中的数据类型中的数据类型3.3 创建数据表创建数据表3.4 管理数据表管理数据表  163.3 创建数据表创建数据表1.使用使用SSMS创建表创建表      创建表的步骤创建表的步骤:  1))定定义义表表结结构构::给给表表的的每每一一列列取取字字段段名名,,并并确确定定每每一一列列的的数数据类型、数据长度、列数据是否可以为空等据类型、数据长度、列数据是否可以为空等。

       2))设设置置约约束束::设设置置约约束束是是为为了了限限制制该该列列输输入入值值的的取取值值范范围围,,以保证输入数据的正确性和一致性以保证输入数据的正确性和一致性 3))添加数据添加数据:表结构建立完成之后,就可以向表中输入数据表结构建立完成之后,就可以向表中输入数据 173.3 创建数据表创建数据表1.使用使用SSMS创建表创建表 例例1:请在请在student数据库中建立数据库中建立“学生基本信息学生基本信息”表的结构表的结构注注: : 主键的字段值不能为空主键的字段值不能为空, ,且字段值在表中必须唯一且字段值在表中必须唯一字段名字段名字段数据类型字段数据类型长度长度是否为空是否为空约束约束学号学号char8否否主键主键姓名姓名char10否否 性别性别char2是是 默默 认认 值值‘男男’出生年月出生年月datetime8是是 籍贯籍贯varchar20是是 家庭住址家庭住址varchar60是是char15是是 所属班级所属班级char8是是  183.3 创建数据表创建数据表2.使用使用T-SQL语句创建表语句创建表  1))语法:语法:CREATE TABLE [database_name.[owner].|owner.]table_name   ( {column_definition>}     | [ { PRIMARY KEY | UNIQUE }[,…N] ]   )  < column_definttion>::={ column_name data_type}                    [ [ DEFAULT constraint_expression]                     | [IDENTITY [(seed,increment) ]]                    ]                    [][,…n] 193.3 创建数据表创建数据表语法注释:语法注释:●database_name:指定创建的表所在的数据库,在当:指定创建的表所在的数据库,在当前数据库创建表时该项可以省略。

      前数据库创建表时该项可以省略● owner:指定表的拥有者,如果表的拥有者为当前用:指定表的拥有者,如果表的拥有者为当前用户,该项可以省略户,该项可以省略● table_name:指定新建表的名称指定新建表的名称● column_definttion:为表中字段的定义表达式为表中字段的定义表达式● column_name:为表中的字段名为表中的字段名● data_type:为字段的数据类型为字段的数据类型● PRIMARY KEY:为主键约束关键字为主键约束关键字● UNIQUE:为唯一约束关键字为唯一约束关键字● DEFAULT:为默认约束关键字为默认约束关键字● IDENTITY:为自动编号标识为自动编号标识● Seed:为自动标识的开始值,默认为:为自动标识的开始值,默认为1● Increment:为自动编号的步长或增量,默认为:为自动编号的步长或增量,默认为1 203.3 创建数据表创建数据表 例例2:创建带有参照约束的学生表创建带有参照约束的学生表stud_info,学生表的表结构定义如,学生表的表结构定义如         下表所示下表所示学号学号”字段为学生表的主键字段为学生表的主键。

      字段名字段名字段数据类型字段数据类型长度长度是否为空是否为空约束约束学号学号char8否否主键主键姓名姓名char10否否 性别性别char2是是 默默 认认 值值‘男男’出生年月出生年月datetime8是是 籍贯籍贯varchar20是是 家庭住址家庭住址varchar60是是char15是是 所属班级所属班级char8是是  213.3 创建数据表创建数据表创建创建“学生学生”表的代码如下:表的代码如下: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)))GO 223.3 创建数据表创建数据表例例3:在学生管理数据库中用:在学生管理数据库中用T-SQL语句创建一个学生成绩表语句创建一个学生成绩表         stud_score ,表结构如下,其中包含标识列和计算列。

      表结构如下,其中包含标识列和计算列 233.3 创建数据表创建数据表实现的实现的T-SQL语句语句:CREATE TABLE stud_scoreCREATE TABLE stud_score( ( Scoreid int IDENTITY(1,1) PRIMARY KEY, Scoreid int IDENTITY(1,1) PRIMARY KEY, Stud_no char(8) NOT NULL, Stud_no char(8) NOT NULL, Math int DEFAULT 0, Math int DEFAULT 0, Chinese int DEFAULT 0, Chinese int DEFAULT 0, Computer int DEFAULT 0, Computer int DEFAULT 0, total_score AS Math+ Chinese+ computer total_score AS Math+ Chinese+ computer) )GOGO 243.3 创建数据表创建数据表设置列的标识属性时,应注意设置列的标识属性时,应注意:–该列的数据类型必须是该列的数据类型必须是decimal, int, numeric, smallint, bigint, tinyint中的一种,才可以设置标识属性。

      中的一种,才可以设置标识属性–标识列不允许为空值,也不能包含默认属性标识列不允许为空值,也不能包含默认属性–每个表中只允许有一个标识列,并且不可以修改每个表中只允许有一个标识列,并且不可以修改设置计算列时,应注意设置计算列时,应注意:–在计算列中不能添加如在计算列中不能添加如primary key、、 unique、、 foreign key、、 default等约束条件等约束条件 –不能对计算列进行赋值不能对计算列进行赋值 25第第3章章 管理数据表管理数据表 3.1 SQL Server表的概念表的概念3.2 SQL Server中的数据类型中的数据类型3.3 创建数据表创建数据表3.4 管理数据表管理数据表  263.4 管理数据表管理数据表 3.4.1 修改表结构修改表结构 3.4.2 删除数据表删除数据表 3.4.3 查看数据表查看数据表 273.4.1 修改表结构修改表结构1 使用使用SSMS修改表结构修改表结构例例4:修改:修改“student” 库中库中“学生基本信息表学生基本信息表”表结构 283.4.1 修改表结构修改表结构2 使用使用T-SQL语言修改表语言修改表 1)语法:)语法:ALTER TABLE table_name { [ ALTER COLUMN column_name     { new_data_type [ ( precision [ , scale ] ) ] [ NULL | NOT NULL ]}    ]         | ADD        { [ < column_definition > ]        } [ ,...n ]        | DROP        { [ CONSTRAINT ] constraint_name             | COLUMN column } [ ,...n ] }[ [ DEFAULT constant_expression ] [ WITH VALUES ]    | [ IDENTITY [ ( seed , increment )] ]     29修改表结构修改表结构   2)语法注释:)语法注释:• ALTER COLUMN:修改表列属性的子句:修改表列属性的子句• ADD:增加列或约束的子句:增加列或约束的子句• DROP COLUMN:删除表列的子句:删除表列的子句• table_name:需要修改表的表格名称:需要修改表的表格名称• column_name:希望增加的字段名:希望增加的字段名 •  data_type:需要增加的字段的数据类型名:需要增加的字段的数据类型名•  collation_name:排序规则名:排序规则名 30修改表结构修改表结构例例5:使用:使用T-SQL代码修改学生基本信息表代码修改学生基本信息表stud_info结构结构,增加字增加字段段“号码号码”,数据类型为,数据类型为varchar,长度为,长度为15,可为空;增加入,可为空;增加入学时间字段,时间学时间字段,时间/日期类型,默认时间为日期类型,默认时间为‘2006-9-1’。

      USE studentGOALTER TABLE stud_infoADD  号码号码 varchar(15) GOALTER TABLE stud_infoADD 入学时间入学时间 datetime DEFAULT ‘2006-9-1’GO 31修改表结构修改表结构例例6:使用:使用T-SQL代码修改学生基本信息表代码修改学生基本信息表stud_info结结构,修改字段构,修改字段“家庭住址家庭住址”的长度为的长度为100实现的实现的T-SQL语句语句USE studentGOALTER TABLE stud_infoALTER COLUMN 家庭住址家庭住址 varchar(100)GO 32修改表结构修改表结构例例7:使用:使用T-SQL语句删除学生基本信息表语句删除学生基本信息表stud_info的的号码字段号码字段实现的实现的T-SQL语句语句USE studentGOALTER TABLE stud_infoDROP COLUMN 号码号码GO 333.4 管理数据表管理数据表 3.4.1 修改表结构修改表结构 3.4.2 删除数据表删除数据表 3.4.3 查看数据表查看数据表 343.4.2 删除数据表删除数据表1 使用使用SSMS删除数据表删除数据表2 使用使用T-SQL语句删除数据表语句删除数据表语法格式为:语法格式为:      DROP  TABLE  table_name例例8:使用:使用T-SQL语句删除学生基本信息表。

      语句删除学生基本信息表实现的实现的T-SQL语句语句  USE student  GO  DROP TABLE 学生基本信息表学生基本信息表   GO 353.4 管理数据表管理数据表 3.4.1 修改表结构修改表结构 3.4.2 删除数据表删除数据表 3.4.3 查看数据表查看数据表 36.3 查看数据表看数据表1 使用使用SSMS对象资源管理器查看表属性信息对象资源管理器查看表属性信息    在对象资源管理器中,右键单击在对象资源管理器中,右键单击“student”数据库数据库的学生基本信息表的学生基本信息表stud_info,从弹出的快捷菜单中选择,从弹出的快捷菜单中选择“属性属性”命令 37.3 查看数据表看数据表2 使用使用T-SQL语句查看数据表语句查看数据表     Exec  sp_help  table_name 例例9 :查看学生基本信息表查看学生基本信息表stud_info 属性信息属性信息      Exec  Sp_help stud_info 383.5 3.5 完整性的概念完整性的概念完整性的概念完整性的概念Ø完整性的概念完整性的概念  数据完整性指存储在数据库中的数据完整性指存储在数据库中的数据正确无数据正确无误误并且并且相关数据相关数据具有一致性具有一致性。

      数据完整性可分为以下四种:数据完整性可分为以下四种:1、实体完整性、实体完整性:要求在表中:要求在表中不能不能存在两条存在两条完全完全相同相同的记录实现实体完整性的方法有:实现实体完整性的方法有:主键约束、唯一主键约束、唯一约束、指定约束、指定IDENTITY属性 393.5 3.5 完整性的概念完整性的概念完整性的概念完整性的概念2、域完整性、域完整性:要求向表中指定列输入的数据必须具有正确的数据:要求向表中指定列输入的数据必须具有正确的数据类型、格式及有效的数据范围类型、格式及有效的数据范围实现域完整性的方法有:实现域完整性的方法有:检查约束、外键约束、非空约束、规检查约束、外键约束、非空约束、规则及在建表时设置的数据类型则及在建表时设置的数据类型3、参照完整性、参照完整性:指作用于有关联的表通过主键和外键或主键和惟:指作用于有关联的表通过主键和外键或主键和惟一键间的关系,使表中的键值在相关表中保持一致一键间的关系,使表中的键值在相关表中保持一致实现参照完整性的方法有实现参照完整性的方法有:外键约束:外键约束.4、、用用户户定定义义的的完完整整性性::指指应应用用领领域域需需要要遵遵守守的的约约束束条条件件。

      实实现现用用户定义完整性的方法包括规则、触发器和存储过程等户定义完整性的方法包括规则、触发器和存储过程等 403.6 3.6 约束的类型约束的类型约束的类型约束的类型 1. NOT NULL(非空)约束(非空)约束 2. PRIMARY KEY(主键)约束(主键)约束3. UNIQUE(惟一)约束(惟一)约束4. CHECK(检查)约束(检查)约束 5. FOREIGN KEY(外健)约束(外健)约束 6. DEFAULT(默认)约束(默认)约束  413.6 3.6 约束的创建约束的创建约束的创建约束的创建Ø使用使用 CREATE TABLE 或者或者 ALTER TABLE–CREATE TABLE 是在创建表时创建约束是在创建表时创建约束–ALTER TABLE 是在一个已有的表上添加约束是在一个已有的表上添加约束Ø可添加可添加单列单列或或多列多列约束约束–若约束应用于单列,称为若约束应用于单列,称为列级约束列级约束–若约束引用了多列,称为若约束引用了多列,称为表级约束表级约束,一般此类,一般此类约束都是在表创建完成后再进行添加约束约束都是在表创建完成后再进行添加约束. . 423.6 3.6 约束的创建约束的创建约束的创建约束的创建CREATE TABLE table_name    ({ column_name data_type }[ ...n ] }             [ [ DEFAULT constant_expression ] ]   < [ CONSTRAINT constraint_name ]    {  | [ { PRIMARY KEY | UNIQUE }            [ CLUSTERED | NONCLUSTERED ]            | [ [ FOREIGN KEY ]            REFERENCES ref_table [ ( ref_column ) ]            | CHECK]  ( logical_expression ) } >   43   创建主键约束创建主键约束创建主键约束创建主键约束1. 创建主键可以在建表时使用创建主键可以在建表时使用CREATE TABLE 命令完成。

      命令完成  [示范案例示范案例1] 在在student库库中中,,建建立立一一个个民民族族表表((民民族族代代码码,,民民族族名名称称)),,将民族代码指定为主键将民族代码指定为主键其程序清单如下:其程序清单如下:CREATE TABLE native      (native_id char(2)  CONSTRAINT  pk_mzdm  PRIMARY KEY,      Native_name varchar(30)  NOT NULL))     GO 44   创建主键约束创建主键约束创建主键约束创建主键约束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   PRIMARY KEY (class_id) 46   创建主键约束创建主键约束创建主键约束创建主键约束Ø每张表每张表只能有一个只能有一个 PRIMARY KEY 约束约束Ø输入的输入的值值必须是必须是惟一惟一的的Ø不允许空值不允许空值Ø将在指定列上创建惟一索引将在指定列上创建惟一索引 473.6.2 3.6.2 创建惟一约束创建惟一约束创建惟一约束创建惟一约束 为存在的表创建惟一约束,其语法格式如下:为存在的表创建惟一约束,其语法格式如下:             ALTER  TABLE  table_name             ADD   CONSTRAINT constraint_name              UNIQUE [CLUSTERED|NONCLUSTERED]               {(column[,…n])}  483.6.2 3.6.2 创建惟一约束创建惟一约束创建惟一约束创建惟一约束[示范案例示范案例3]     使使用用T-SQL语语句句在在学学生生信信息息管管理理数数据据库库student中中,,为为民民族族表表native中的中的“民族名称民族名称”native_name字段创建一个惟一约束。

      字段创建一个惟一约束程序清单如下:程序清单如下:            ALTER  TABLE native            ADD CONSTRAINT uk_mzmz              UNIQUE( native_name )            GO  493.6.2 3.6.2 创建惟一约束创建惟一约束创建惟一约束创建惟一约束Ø允许一个空值允许一个空值Ø在一个表上在一个表上允许多个允许多个 UNIQUE 约束约束Ø可可在一个或者多个列在一个或者多个列上定义上定义Ø是通过一个惟一索引强制约束的是通过一个惟一索引强制约束的 503.6.3 3.6.3 创建检查约束创建检查约束创建检查约束创建检查约束     使用使用SQL语句为已存在的表创建检查约束,其语法语句为已存在的表创建检查约束,其语法格式如下:格式如下:               ALTER  TABLE  table_name               ADD  CONSTRAINT constraint_name               CHECK  (logical_expression)  513.6.3 3.6.3 创建检查约束创建检查约束创建检查约束创建检查约束 [示范案例示范案例4]     使用使用T-SQL语句在学生信息管理数据库语句在学生信息管理数据库student中,为学生成绩中,为学生成绩表表score中的成绩中的成绩“Sscore”字段创建一个检查约束,以保证字段创建一个检查约束,以保证输入的数据大于等于输入的数据大于等于0而小于等于而小于等于100 。

      程序清单如下:程序清单如下:     ALTER TABLE score    ADD CONSTRAINT ck_chengji     CHECK (Sscore>=0 and Sscore<=100) 523.6.3 3.6.3 创建检查约束创建检查约束创建检查约束创建检查约束Ø在每次执行在每次执行 INSERT 或者或者 UPDATE 语句的时候语句的时候校验校验数据值Ø可以引用同表中的其他列可以引用同表中的其他列, ,但但不能引用其他表中的列不能引用其他表中的列Ø不能包含子查询不能包含子查询Ø列级列级 CHECK CHECK 约束可省略名字,让系统自动生成约束可省略名字,让系统自动生成Ø表达式可以用表达式可以用 AND AND 以及以及 OR OR 连接以表示复杂逻辑连接以表示复杂逻辑ØCHECK CHECK 约束中可使用系统函数约束中可使用系统函数 53   创建默认约束创建默认约束创建默认约束创建默认约束     使使用用SQL语语句句为为已已存存在在的的表表创创建建默默认认约约束束,,其其语语法法格格式式如下:如下:       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_xueli             DEFAULT  ‘本科本科’   FOR  tdegree   55   创建默认约束创建默认约束创建默认约束创建默认约束ØDEFAULT约束创建时将检查表中的现存数据约束创建时将检查表中的现存数据ØDEFAULT约束约束只对只对INSERT语句有效语句有效Ø每列只能定义一个每列只能定义一个DEFAULT约束Ø不能和不能和“标识标识”属性共同使用属性共同使用Ø为具有为具有PRIMARY KEY或或UNIQUE约束的列指定默约束的列指定默认值是没有意义的认值是没有意义的Ø常量值外面可以加或者不加括号,常量值外面可以加或者不加括号,字符或者日期字符或者日期常常量量必须加上单引号或双引号必须加上单引号或双引号 563.6.5 3.6.5 创建外键约束创建外键约束创建外键约束创建外键约束 使用使用SQL语句创建外键约束的语法格式为:语句创建外键约束的语法格式为:         ALTER TABLE table_name         ADD  CONSTRAINT constraint_name          FOREIGN KEY (column_name[,…])          REFERENCES ref_table         [ ( ref_column_name[,…] ) ]  573.6.5 3.6.5 创建外键约束创建外键约束创建外键约束创建外键约束[ [示范案例示范案例6]6]     使使用用T-SQL语语句句在在学学生生信信息息管管理理数数据据库库student中中,,为为学学生生基基本本信信息息表表stud_info中中的的“所所属属班班级级”字字段段创创建建一一个个外外键键约约束束,,引引用用班班级级表表class的的班班级级代代码码class_id字段字段,从而保证输入有效的班级代码从而保证输入有效的班级代码 。

      程序清单如下:程序清单如下:       ALTER TABLE stud_info  ADD CONSTRAINT fk_bjdm  FOREIGN KEY ( (所属班级所属班级 ) )            REFERENCES class(class_id) 583.6.5 3.6.5 创建外键约束创建外键约束创建外键约束创建外键约束Ø提供了单列或多列的引用完整性提供了单列或多列的引用完整性FOREIGN KEY子句子句中指定的列的个数和数据类型必须和中指定的列的个数和数据类型必须和REFERENCES子句子句中指定的列的中指定的列的个数和数据类型匹配个数和数据类型匹配Ø修改数据的时候,用户必须在被修改数据的时候,用户必须在被FOREIGN KEY约束引约束引用的表上具有用的表上具有SELECT或或REFERENCES权限Ø若若引用的是同表中的列引用的是同表中的列,那么可只用,那么可只用REFERENCES子句子句而而省略省略FOREIGN KEY子句 59总结:使用约束的注意事项总结:使用约束的注意事项总结:使用约束的注意事项总结:使用约束的注意事项SQL Server 里的约束只是里的约束只是“最后防线最后防线”Ø当给一个表添加约束的时候,当给一个表添加约束的时候,SQL Server 将检查现将检查现有数据是否违反约束。

      有数据是否违反约束Ø建议创建约束的时候指定名称,否则系统将为约束自建议创建约束的时候指定名称,否则系统将为约束自动产生一个复杂的名称动产生一个复杂的名称Ø名称必须惟一,且符合名称必须惟一,且符合 SQL Server 标识符的规则标识符的规则 603.7 3.7 查看约束的定义查看约束的定义查看约束的定义查看约束的定义 1.1.使用系统存储过程查看约束信息使用系统存储过程查看约束信息 2.2.使用使用SSMS查看约束信息查看约束信息  611.1.使用系统存储过程查看约束信息使用系统存储过程查看约束信息  1))系系统统存存储储过过程程sp_help用用来来查查看看约约束束的的名名称称、、创创建者、类型和创建时间,其语法格式为:建者、类型和创建时间,其语法格式为:             EXEC sp_help 约束名称约束名称   2))如如果果约约束束存存在在文文本本信信息息,,可可以以使使用用sp_helptext来查看,其语法格式为:来查看,其语法格式为:             EXEC sp_helptext  约束名称约束名称    例:例:使用系统存储过程查看学生表上的约束使用系统存储过程查看学生表上的约束      ck_csrq的文本信息。

      其程序清单如下:的文本信息其程序清单如下:             EXEC  sp_helptext  ck_csrq 3.7 3.7 3.7 查看约束的定义查看约束的定义查看约束的定义查看约束的定义查看约束的定义查看约束的定义    622.使用使用SSMS查看约束信息的步骤为:查看约束信息的步骤为: 1 1))在在SSMS中中,,选选择择要要查查看看约约束束的的表表((如如学学生生表),打开表设计器表),打开表设计器 2 2))在在表表设设计计器器中中可可以以查查看看主主键键约约束束、、空空值值约约束束和默认值约束和默认值约束 3 3))在在表表设设计计器器中中,,右右击击鼠鼠标标,,从从弹弹出出的的快快捷捷菜菜单中选择单中选择“属性属性”命令弹出命令弹出“属性属性”对话框对话框 4 4))在在“属属性性”对对话话框框中中通通过过切切换换选选项项卡卡,,可可以以查看主键约束、外键约束与查看主键约束、外键约束与CHECK约束信息约束信息 3.7 3.7 查看约束的定义查看约束的定义查看约束的定义查看约束的定义  633.8 3.8 删除约束删除约束删除约束删除约束    1.使用使用SSMS删除表约束删除表约束    2.使用使用DROP命令删除表约束命令删除表约束 643.8 3.8 删除约束删除约束删除约束删除约束 1.使用使用SSMS删除表约束删除表约束 在表设计器的窗口中,可以删除主键,去掉默在表设计器的窗口中,可以删除主键,去掉默认值。

      在表设计器的认值在表设计器的“属性属性”窗口中,可以通窗口中,可以通过切换选项卡,选择约束名称,单击过切换选项卡,选择约束名称,单击“删除删除”按钮,分别删除主键约束、外键约束和按钮,分别删除主键约束、外键约束和CHECK约束 653.8 3.8 3.8 删除约束删除约束删除约束删除约束删除约束删除约束 662.使用使用DROP命令删除表约束命令删除表约束 在在T-SQL语语言言中中,,也也可可以以方方便便的的删删除除一一个个或或多多个个约束,其语法格式为:约束,其语法格式为:     ALTER TABLE  table_name     DROP CONSTRAINT constraint_name[,…n]3.8 3.8 3.8 删除约束删除约束删除约束删除约束删除约束删除约束 67[ [示范案例示范案例7] ] 使使 用用 T-SQL语语 句句 删删 除除 Northwind数数 据据 库库 中中CK_Quantity约束程序清单如下:程序清单如下:    ALTER TABLE [order details]    DROP CONSTRAINT ck_quantity删除约束删除约束删除约束删除约束删除约束删除约束 68决定使用何种约束决定使用何种约束决定使用何种约束决定使用何种约束完整性类型完整性类型约束类型约束类型描述描述域域DEFAULT如果在如果在INSERT语句中未显式提供值,则指定为语句中未显式提供值,则指定为列提供的值列提供的值CHECK指定列中可接受的数据值指定列中可接受的数据值REFERENCES基于其他表中的列的值,指定可接受的用于更新基于其他表中的列的值,指定可接受的用于更新的数据值的数据值实体实体PRIMARY KEY惟一标识每一列,确保用户没有输入重复的值。

      惟一标识每一列,确保用户没有输入重复的值同时创建一个索引以增强性能不允许空值同时创建一个索引以增强性能不允许空值UNIQUE确保在非主键列中不输入重复值,并创建一个索确保在非主键列中不输入重复值,并创建一个索引以增强性能允许空值引以增强性能允许空值引用引用FOREIGN KEY定义一列或多列的值与同表或其他表中主键的值定义一列或多列的值与同表或其他表中主键的值匹配匹配CHECK基于同表中其他列的值,指定列中可接受的数据基于同表中其他列的值,指定列中可接受的数据值值 69规则与规则与CHECK约束的比较约束的比较1 1、、check约束比规则更简明,它可以在建表时由约束比规则更简明,它可以在建表时由create table语句将其作为表的一部分进行指定语句将其作为表的一部分进行指定2 2、、规则需要单独创建规则需要单独创建,然后绑定到列上然后绑定到列上3 3、在、在一个列上只能应用一个规则一个列上只能应用一个规则,但是却,但是却可可以应以应用用到到多个多个check约束约束4 4、规则的优点是:一个、规则的优点是:一个规则只需要定义一次规则只需要定义一次就已就已可以多次应用可以多次应用,可以应用到多个表或多个列,还可以,可以应用到多个表或多个列,还可以应用到用户定义的数据类型上。

      应用到用户定义的数据类型上 3.9 3.9 3.9 使用规则使用规则使用规则使用规则使用规则使用规则 703.9 3.9 使用规则使用规则使用规则使用规则1.创建规则的命令是创建规则的命令是CREATE RULE,语法格式为:,语法格式为:    CREATE  RULE rule_name    AS condition_expression 2.绑定规则其语法格式为绑定规则其语法格式为 : : [EXECUTE] sp_bindrule ‘规则名称规则名称’, ,’表名表名. .字段字段名名’| |’ 自定义数据类型名自定义数据类型名’ 713.9 3.9 使用规则使用规则使用规则使用规则[ [示范案例示范案例8] ] 在在Northwind数数据据库库中中创创建建规规则则, ,名名称称为为region_rule,,条条件件表表达达式式是是要要求求变变量量在在(‘wa’,’ia’,’il’,’ks’,’mo’)范范围之内程序清单如下:程序清单如下: CREATE RULE region_rule AS @region IN ('wa','ia','il','ks','mo') 723.9 3.9 使用规则使用规则使用规则使用规则[ [示范案例示范案例9] ]     将将规规则则“region_rule”绑绑定定到到员员工工“employees”表中的区域表中的区域“region”字段字段 。

      程序清单如下:程序清单如下:    EXEC sp_bindrule              '' 733.解绑规则其语法格式为:解绑规则其语法格式为: [EXECUTE]  sp_unbindrule ’表名表名. .字段名字段名’| |’自自定义数据类型名定义数据类型名’4.删除规则其语法格式为:删除规则其语法格式为:    DROP RULE 规则名称规则名称[,…n]3.9 3.9 使用规则使用规则使用规则使用规则 743.9 3.9 使用规则使用规则使用规则使用规则[ [示范案例示范案例10] ]    将将 规规 则则 “region_rule”从从 “employees”表表 中中“region”列解除绑定列解除绑定 程序清单如下:程序清单如下:    EXEC sp_unbindrule '’ 753.9 3.9 使用规则使用规则使用规则使用规则[ [示范案例示范案例11] ]    将规则将规则“region_rule”删除删除 程序清单如下:程序清单如下:    DROP rule region_rule 761.1.创建默认的语法格式如下:创建默认的语法格式如下: CREATE DEFAULT default_name            AS default_description 2.2.绑定默认值其语法格式为:绑定默认值其语法格式为: [EXECUTE] sp_bindefault ‘默认名称默认名称’, ,’表名表名. .字段名字段名’| |’自定义数据类型名自定义数据类型名’3.10 3.10 3.10 使用默认使用默认使用默认使用默认使用默认使用默认 773.10 3.10 使用默认使用默认使用默认使用默认[ [示范案例示范案例12] ]    在在 “Northwind”数数 据据 库库 中中 创创 建建 默默 认认 ,, 名名 称称 为为phone_default  ,将将 其其 绑绑 定定 到到 “customers”表表 的的“phone”字段,使其默认值为字段,使其默认值为“((000))000-0000”。

      程序清单如下:程序清单如下: CREATE DEFAULT phone_default           AS '(000)000-0000'      GO        EXEC sp_bindefault  'phone_default', '' 783.10 3.10 使用默认使用默认使用默认使用默认3.解绑默认值其语法解绑默认值其语法格式为:格式为:[EXECUTE] sp_unbindefault ‘表名表名.字段名字段名’ |’自定自定义数据类型名义数据类型名’ 4.删除默认值删除默认值其语法格式如下:其语法格式如下:DROP DEFAULT default_name[,…n]  793.10 3.10 使用默认使用默认使用默认使用默认[ [示范案例示范案例13] ]    在在“Northwind”数数据据库库中中将将默默认认“phone_default”从从“customers”表表中中“phone”列解除绑定,并将其删除列解除绑定,并将其删除 程序清单如下:程序清单如下:    EXEC SP_UNBINDEFAULT  ''    GO    DROP DEFAULT phone_default    GO 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.