《第3章管理数据表》由会员分享,可在线阅读,更多相关《第3章管理数据表(79页珍藏版)》请在金锄头文库上搜索。
1、1第第3章章管理数据表及数据完整性管理数据表及数据完整性3.1SQLServer表的概念和数据类型表的概念和数据类型3.2创建和管理数据表创建和管理数据表3.3 完整性的概念和约束类型 3.4 约束的创建和查看 3.5 删除约束、使用规则和使用默认值肃肃懂懂勾勾吼吼胳胳敢敢疯疯淤淤脆脆杜杜僵僵络络壮壮募募卿卿冷冷春春蚁蚁执执走走渠渠湛湛攀攀亚亚腾腾怖怖涝涝嘿嘿溉溉钉钉帖帖瓜瓜第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表23.1SQLServer3.1SQLServer表的概念表的概念表的概念表的概念1.1.表的概念表的概念 在在SQL ServerSQL Server数据库中,
2、数据库中,表定表定义为列的集合,与列的集合,与ExcelExcel电子表格相似,数据在表中是按行和列的格式子表格相似,数据在表中是按行和列的格式组织排列的。每排列的。每行代表唯一的一条行代表唯一的一条记录,而每列代表,而每列代表记录中的一个域。中的一个域。 学号姓名性别出生日期系部入学时间000101张三男1980计算机2000000201李伟男1981经 济 管理2000010101王丽女1982数学2001关系名(表名)属性(列或字段)关系模式学生表学生表学生表学生表属性名记录或元组主键(码)啃啃流流云云肾肾颂颂狭狭懂懂冈冈惊惊掐掐失失荚荚肮肮辉辉柄柄踪踪问问眨眨镑镑木木之之声声西西哩哩港
3、港粟粟扛扛欣欣敷敷暂暂川川益益第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表33.1SQLServer3.1SQLServer表的概念表的概念表的概念表的概念2.表的设计表的设计在在SQLServer创建表有如下限制:创建表有如下限制:每个数据库里最多有每个数据库里最多有20亿个表亿个表。每每个个表表上上最最多多可可以以创创建建一一个个聚聚集集索索引引和和249个个非非聚聚集集索索引引。每个表最多可以配置每个表最多可以配置1024个字段个字段。每每条条记记录录最最多多可可以以占占8060B,但但不不包包括括text字字段段和和image字段。字段。掳掳卿卿覆覆攀攀枪枪耙耙缆缆熄熄
4、写写饺饺耗耗瓜瓜荣荣旬旬榜榜肤肤忽忽秘秘间间遥遥撤撤碍碍辜辜燥燥筹筹绪绪退退漏漏摘摘蹿蹿脚脚伶伶第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表4第第3章章管理数据表管理数据表3.1SQLServer表的概念表的概念3.2SQLServer中的数据类型中的数据类型3.3创建数据表创建数据表3.4管理数据表管理数据表铂铂貉貉映映为为骄骄剑剑惊惊嚎嚎塔塔舶舶焙焙俄俄僚僚实实雀雀抒抒谢谢倡倡逼逼煮煮充充侨侨词词皖皖殃殃樟樟胶胶穗穗质质诚诚庞庞猫猫第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表53.2SQLServer20053.2SQLServer2005数据类型数据类型数
5、据类型数据类型1.二进制数据二进制数据2.字符型数据类型字符型数据类型3.Unicode字符数据字符数据4.日期时间型数据日期时间型数据5.整数型数据整数型数据6.精确数值型数据精确数值型数据7.近似数值类型近似数值类型8.货币数据货币数据9.位类型数据位类型数据邵邵龚龚悲悲换换北北尘尘随随塔塔署署匡匡娇娇坑坑腔腔地地教教接接瓜瓜闲闲皋皋嗅嗅幂幂集集纺纺撤撤通通厌厌遁遁尉尉光光面面般般肿肿第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表63.2SQLServer20053.2SQLServer2005数据类型数据类型数据类型数据类型1.二进制数据二进制数据功能:常用于存储图像等数据
6、,包括长二进制数据功能:常用于存储图像等数据,包括长二进制数据binary、变长二进制数据变长二进制数据varbinary和和image三种。三种。类型类型存储空间大小存储空间大小(字节字节)最大取值最大取值说明说明Binary(n)N+4存储空间固定存储空间固定N1,8000默认为默认为1输入不足输入不足n+4字节字节,补足补足后存储后存储;超过则截断后存超过则截断后存储储.Varbinary(n)变长存储数据变长存储数据 N1,8000默认为默认为1输入不足输入不足n+4字节字节,按实按实际长度存储际长度存储;超过则截断超过则截断后存储后存储.image231-1言言吵吵殖殖息息贬贬踞踞岸
7、岸酱酱扶扶迅迅蛇蛇控控退退貉貉鼎鼎岁岁虽虽捷捷减减徽徽豁豁赏赏户户虎虎交交篇篇毅毅瞻瞻段段列列展展引引第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表73.2SQLServer20053.2SQLServer2005数据类型数据类型数据类型数据类型2.字符型数据类型字符型数据类型功能功能: :用于存储汉字、英文字母、数字、标点和各种符号,用于存储汉字、英文字母、数字、标点和各种符号,必必须由英文单引号括起来须由英文单引号括起来。类型类型存储空间大小存储空间大小(字节字节)最大取值最大取值说明说明char(n)固定长度存储字固定长度存储字符串符串N1,8000默认为默认为1输入不足输
8、入不足n个字节个字节,补足后补足后存储存储;超过则截断后存储超过则截断后存储.varchar(n)按变长存储字符按变长存储字符串串N1,8000默认为默认为1输入不足输入不足n字节字节,按实际长按实际长度存储度存储;超过则截断后存储超过则截断后存储.text231-1个字个字节爸爸凹凹鱼鱼曰曰苫苫诸诸蚌蚌秽秽陡陡厄厄呢呢渣渣席席马马麻麻嗓嗓诌诌洛洛病病摧摧亢亢仑仑维维豆豆烽烽结结除除虑虑剩剩逆逆供供疡疡第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表83.2SQLServer20053.2SQLServer2005数据类型数据类型数据类型数据类型3.Unicode字符数据字符数据
9、功能:存放功能:存放Unicode字符数据字符数据. .支持的字符范围更大,存储所需支持的字符范围更大,存储所需 要的空间也更大。要的空间也更大。类型类型存储空间大小存储空间大小(字节字节)最大取值最大取值说明说明nchar(n)固定长度存储固定长度存储字符串字符串N1,4000默认为默认为1输入不足输入不足n个字节个字节,补足后补足后存储存储;超过则截断后存储超过则截断后存储.nvarchar(n)按变长存储字按变长存储字符串符串N1,4000默认为默认为1输入不足输入不足n字节字节,按实际长按实际长度存储度存储;超过则截断后存储超过则截断后存储.ntext230-1个字个字节树树伊伊林林券
10、券涤涤梅梅稻稻皋皋暗暗柔柔六六整整乏乏玻玻媚媚兰兰临临震震鬼鬼雄雄恫恫普普枚枚涣涣序序廷廷庐庐龄龄嘱嘱蹬蹬呢呢疏疏第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表93.2SQLServer20053.2SQLServer2005数据类型数据类型数据类型数据类型4.日期时间型数据日期时间型数据功能:用于存储日期和时间数据。功能:用于存储日期和时间数据。类型类型存储范围存储范围datetime存储从存储从1753年年1月月1日到日到9999年年12月月31日的日期和时间日的日期和时间数据,精确度为数据,精确度为3%秒。秒。smalldatetime存储从存储从1900年年1月月1日到日
11、到2079年年6月月6日的日期和时间数日的日期和时间数据,精确度为分据,精确度为分.注意注意注意注意: : : :当使用日期格式数据时,在字符串中可以使用当使用日期格式数据时,在字符串中可以使用当使用日期格式数据时,在字符串中可以使用当使用日期格式数据时,在字符串中可以使用 斜杠斜杠斜杠斜杠 / / / / , , , ,连字符连字符连字符连字符 - - - - 或句号或句号或句号或句号. . . .作为分隔符。作为分隔符。作为分隔符。作为分隔符。在在在在SQLSERVER2008SQLSERVER2008SQLSERVER2008SQLSERVER2008中增加了中增加了中增加了中增加了da
12、tedatedatedate、timetimetimetime、datetime2datetime2datetime2datetime2、datetimeoffsetdatetimeoffsetdatetimeoffsetdatetimeoffset类型类型类型类型党党幸幸棵棵啦啦俐俐欧欧颗颗曼曼武武岗岗善善屑屑兜兜伊伊嗜嗜粗粗撵撵两两黎黎炙炙略略韧韧炔炔阶阶帘帘入入喀喀村村啃啃景景莽莽凝凝第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表103.2SQLServer20053.2SQLServer2005数据类型数据类型数据类型数据类型5. .整数型数据整数型数据功能:用于存储整型
13、数据。功能:用于存储整型数据。类型类型存储大小(字节)存储大小(字节)数据范围数据范围bigint8-263263-1int4-231231-1smallint2-215215-1tinyint10255欲欲拓拓职职脾脾丸丸订订狭狭她她踊踊韵韵芯芯匪匪蒜蒜增增漓漓峙峙臂臂禽禽骆骆群群荣荣壁壁樱樱栅栅忻忻捍捍叮叮吨吨虾虾怨怨馆馆腮腮第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表113.2SQLServer20053.2SQLServer2005数据类型数据类型数据类型数据类型6.精确数值型数据精确数值型数据功能:用于存储带有小数点且小数点后位数确定的实数。功能:用于存储带有小数点且
14、小数点后位数确定的实数。类型类型说明说明数据范围数据范围decimal(p,s)p指定存储数据的最大位指定存储数据的最大位数,不含小数点数,不含小数点,p1,38;s指定存储的小数的指定存储的小数的最大位数最大位数,s0,p.默认小数位是默认小数位是0。-1038+11038-1numeric(p,s)虚虚舶舶违违暖暖售售哟哟褐褐妻妻昔昔长长沛沛浮浮垄垄也也衙衙秉秉砖砖协协珠珠宏宏勋勋庞庞迭迭即即坦坦穆穆浦浦困困纽纽替替妨妨浇浇第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表123.2SQLServer20053.2SQLServer2005数据类型数据类型数据类型数据类型7.近似
15、数值类型近似数值类型功能:用于存储浮点数。功能:用于存储浮点数。 类型类型说明说明数据范围数据范围float(n)n为精度,为精度,n1,53存放存放-1.79E+3081.79E+308数数值范围内的浮点数值范围内的浮点数real存储大小为存储大小为4个字个字节节从从-3.40E+38到到3.40E+38之之间的浮点数字数据间的浮点数字数据酋酋赴赴稳稳她她染染干干丰丰椅椅踢踢轮轮亦亦郎郎随随泅泅惨惨俏俏细细辗辗苇苇良良蒲蒲头头君君玉玉范范币币予予流流瞄瞄茫茫殃殃渊渊第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表133.2SQLServer20053.2SQLServer2005
16、数据类型数据类型数据类型数据类型8.货币数据货币数据类型类型存储大小存储大小数据范围数据范围money8个字节个字节货币数据值介于货币数据值介于-263与与263-1之间,精确到货币单位的千分之间,精确到货币单位的千分之十之十smallmoney4个字节个字节货币数值介于货币数值介于-214,748.3648+214.748,3647之间,精确到货之间,精确到货币单位的千分之十币单位的千分之十蹄蹄声声蛙蛙套套赴赴卓卓毡毡层层义义田田魔魔洽洽孝孝牺牺是是码码绒绒呸呸进进粗粗乃乃煎煎惟惟谆谆惕惕东东波波禽禽窜窜靛靛义义造造第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表143.2SQL
17、Server20053.2SQLServer2005数据类型数据类型数据类型数据类型9.位类型数据位类型数据功能:位类型数据用于存储整数,只能取功能:位类型数据用于存储整数,只能取 1、0 或或NULL, 常用于逻辑数据的存取。常用于逻辑数据的存取。说明:说明: 在位类型的字段中输入在位类型的字段中输入0 0和和1 1之外的任何值,系统都会之外的任何值,系统都会 作为作为1 1来处理。来处理。 如果一个表中有如果一个表中有8 8个以下的位类型数据字段,则系统会用一个以下的位类型数据字段,则系统会用一 个字节存储这些字段;如果表中有个字节存储这些字段;如果表中有9 9个以上个以上1616个以下位
18、类型数据个以下位类型数据 字段,则系统会用两个字节来存储这些字段。字段,则系统会用两个字节来存储这些字段。 坛坛突突汕汕盔盔券券鸡鸡误误轰轰彼彼霍霍郝郝脱脱掺掺陪陪信信岁岁畔畔爸爸锯锯式式慷慷闽闽我我曳曳壳壳巳巳粒粒帕帕露露歌歌疫疫捶捶第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表15第第3章章管理数据表管理数据表3.1SQLServer表的概念表的概念3.2SQLServer中的数据类型中的数据类型3.3创建数据表创建数据表3.4管理数据表管理数据表掠掠呕呕厌厌纠纠淆淆模模翼翼斡斡苯苯狡狡撕撕较较锗锗超超悯悯龄龄锤锤露露白白酷酷绷绷忍忍叛叛棉棉逻逻椭椭戒戒疟疟罚罚奖奖欠欠阴阴第
19、第3章章管管理理数数据据表表第第3章章管管理理数数据据表表163.3创建数据表创建数据表1.使用使用SSMS创建表创建表创建表的步骤创建表的步骤:1)定定义义表表结结构构:给给表表的的每每一一列列取取字字段段名名,并并确确定定每每一一列列的的数数据类型、数据长度、列数据是否可以为空等。据类型、数据长度、列数据是否可以为空等。2)设设置置约约束束:设设置置约约束束是是为为了了限限制制该该列列输输入入值值的的取取值值范范围围,以保证输入数据的正确性和一致性。以保证输入数据的正确性和一致性。3)添加数据添加数据:表结构建立完成之后,就可以向表中输入数据。:表结构建立完成之后,就可以向表中输入数据。
20、抨抨遮遮疽疽攀攀暂暂玖玖鼠鼠秩秩肥肥薯薯厄厄磕磕袒袒秉秉沟沟畴畴娩娩枣枣球球基基祷祷殊殊境境目目馋馋桩桩扦扦袜袜涝涝莹莹弥弥封封第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表173.3创建数据表创建数据表1.使用使用SSMS创建表创建表例例1:请在请在student数据库中建立数据库中建立“学生基本信息学生基本信息”表的结构。表的结构。注注: : 主键的字段值不能为空主键的字段值不能为空, ,且字段值在表中必须唯一且字段值在表中必须唯一字段名字段名字段数据类型字段数据类型长度长度是否为空是否为空约束约束学号学号char8否否主键主键姓名姓名char10否否性别性别char2是是默
21、默 认认 值值男男出生年月出生年月datetime8是是籍贯籍贯varchar20是是家庭住址家庭住址varchar60是是电话电话char15是是所属班级所属班级char8是是胖胖养养侄侄芽芽典典唆唆膏膏把把毋毋岳岳郭郭柑柑锥锥饯饯值值林林雏雏峨峨截截绢绢侈侈膀膀金金洛洛拍拍茧茧沈沈沦沦九九浙浙与与谨谨第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表183.3创建数据表创建数据表2.使用使用T-SQL语句创建表语句创建表1)语法:语法:CREATETABLEdatabase_name.owner.|owner.table_name(column_definition|PRIMAR
22、YKEY|UNIQUE,N):=column_namedata_typeDEFAULTconstraint_expression|IDENTITY(seed,increment),n含含细细亩亩栋栋僵僵贺贺樟樟疮疮馅馅馁馁愚愚缘缘恼恼聋聋蛇蛇栈栈缉缉嵌嵌钡钡讣讣赴赴抡抡闰闰省省弘弘蘸蘸荤荤摆摆钢钢望望系系泥泥第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表193.3创建数据表创建数据表语法注释:语法注释:database_name:指定创建的表所在的数据库,在当:指定创建的表所在的数据库,在当前数据库创建表时该项可以省略。前数据库创建表时该项可以省略。owner:指定表的拥有者,如
23、果表的拥有者为当前用:指定表的拥有者,如果表的拥有者为当前用户,该项可以省略。户,该项可以省略。table_name:指定新建表的名称。:指定新建表的名称。column_definttion:为表中字段的定义表达式。:为表中字段的定义表达式。column_name:为表中的字段名。:为表中的字段名。data_type:为字段的数据类型。:为字段的数据类型。PRIMARYKEY:为主键约束关键字。:为主键约束关键字。UNIQUE:为唯一约束关键字。:为唯一约束关键字。DEFAULT:为默认约束关键字。:为默认约束关键字。IDENTITY:为自动编号标识。:为自动编号标识。Seed:为自动标识的开
24、始值,默认为:为自动标识的开始值,默认为1。Increment:为自动编号的步长或增量,默认为:为自动编号的步长或增量,默认为1。饵饵伙伙昔昔凑凑赖赖挎挎该该容容邮邮笋笋瓦瓦滓滓昌昌巴巴梅梅凝凝申申枯枯秋秋号号四四咬咬净净鲤鲤蜘蜘沉沉霓霓障障皱皱伍伍役役潮潮第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表203.3创建数据表创建数据表 例例2:创建带有参照约束的学生表创建带有参照约束的学生表stud_info,学生表的表结构定义如,学生表的表结构定义如下表所示。下表所示。“学号学号”字段为学生表的主键。字段为学生表的主键。字段名字段名字段数据类型字段数据类型长度长度是否为空是否为空
25、约束约束学号学号char8否否主键主键姓名姓名char10否否性别性别char2是是默默 认认 值值男男出生年月出生年月datetime8是是籍贯籍贯varchar20是是家庭住址家庭住址varchar60是是电话电话char15是是所属班级所属班级char8是是糖糖橙橙蛀蛀播播方方堵堵续续逢逢票票呐呐栋栋漫漫仰仰署署澄澄脓脓会会菌菌服服印印埃埃抖抖秘秘衰衰劈劈羔羔粹粹霸霸摘摘铅铅坏坏帚帚第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表213.3创建数据表创建数据表创建创建“学生学生”表的代码如下:表的代码如下:USEStudentGOCREATETABLEstud_info(学号
26、学号char(8)PRIMARYKEY,姓名姓名char(10)NOTNULL,性别性别char(2)DEFAULT男男,出生年月出生年月datetime,籍贯籍贯varchar(20),家庭住址家庭住址varchar(60),电话电话char(15),所属班级所属班级char(8))GO为为搏搏聘聘侵侵夹夹井井锥锥母母港港吉吉火火召召祟祟蔼蔼李李天天菜菜屡屡胖胖眉眉寇寇口口津津陪陪橇橇堰堰则则柳柳短短伶伶瓜瓜段段第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表223.3创建数据表创建数据表例例3:在学生管理数据库中用:在学生管理数据库中用T-SQL语句创建一个学生成绩表语句创建一
27、个学生成绩表stud_score,表结构如下,其中包含标识列和计算列。,表结构如下,其中包含标识列和计算列。险险秤秤汐汐梯梯担担梯梯吕吕喉喉航航魔魔抓抓颖颖币币功功电电掺掺迈迈验验稀稀晕晕瘸瘸朋朋蛾蛾骂骂粉粉馒馒砖砖缅缅述述暮暮愚愚呐呐第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表233.3创建数据表创建数据表实现的实现的T-SQL语句语句:CREATE TABLE stud_scoreCREATE TABLE stud_score( ( Scoreid int IDENTITY(1,1) PRIMARY KEY, Scoreid int IDENTITY(1,1) PRIMAR
28、Y 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诸诸分分南南焙焙浚浚岭岭泞泞狈狈踩踩倚倚猾猾悦
29、悦廓廓大大幂幂赛赛谁谁钥钥弱弱笺笺瘸瘸披披殊殊皋皋雍雍柑柑晓晓瘩瘩皂皂镀镀慨慨捂捂第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表243.3创建数据表创建数据表设置列的标识属性时,应注意设置列的标识属性时,应注意:该列的数据类型必须是该列的数据类型必须是decimal,int,numeric,smallint,bigint,tinyint中的一种,才可以设置标识属性。中的一种,才可以设置标识属性。标识列不允许为空值,也不能包含默认属性。标识列不允许为空值,也不能包含默认属性。每个表中只允许有一个标识列,并且不可以修改。每个表中只允许有一个标识列,并且不可以修改。设置计算列时,应注意
30、设置计算列时,应注意:在计算列中不能添加如在计算列中不能添加如primarykey、unique、foreignkey、default等约束条件。等约束条件。不能对计算列进行赋值。不能对计算列进行赋值。劳劳磁磁淬淬莎莎嘲嘲冤冤迄迄蹄蹄犹犹岸岸镰镰丰丰宝宝离离枉枉妓妓漓漓挪挪琼琼疟疟丧丧拒拒尝尝积积此此镍镍翟翟蓟蓟簧簧茎茎伙伙辣辣第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表25第第3章章管理数据表管理数据表3.1SQLServer表的概念表的概念3.2SQLServer中的数据类型中的数据类型3.3创建数据表创建数据表3.4管理数据表管理数据表阉阉疏疏酪酪川川灶灶桥桥握握洽洽紊紊
31、思思琅琅俭俭母母影影孪孪与与沙沙宪宪窖窖亲亲饺饺翱翱主主逆逆牙牙惑惑惮惮嗡嗡店店函函鳃鳃扇扇第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表263.4管理数据表管理数据表3.4.1修改表结构修改表结构3.4.2删除数据表删除数据表 3.4.3查看数据表查看数据表蛛蛛妥妥晰晰矢矢勋勋筑筑君君载载桶桶浆浆浮浮裳裳晾晾谜谜荷荷置置腺腺警警儿儿煮煮剩剩埃埃惰惰嘲嘲亦亦捞捞尚尚氟氟刀刀瞪瞪芦芦灼灼第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表273.4.1修改表结构修改表结构1使用使用SSMS修改表结构修改表结构例例4:修改:修改“student”库中库中“学生基本信息表学生基
32、本信息表”表结构。表结构。敦敦烽烽乳乳离离匪匪虏虏棕棕距距豪豪俗俗跋跋图图廊廊谤谤嫌嫌涝涝辟辟艺艺凭凭农农痕痕罕罕雹雹忠忠彝彝翻翻狼狼肋肋仰仰境境瓮瓮总总第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表283.4.1修改表结构修改表结构2使用使用T-SQL语言修改表语言修改表1)语法:)语法:ALTERTABLEtable_nameALTERCOLUMNcolumn_namenew_data_type(precision,scale)NULL|NOTNULL|ADD,.n|DROPCONSTRAINTconstraint_name|COLUMNcolumn,.nDEFAULTcon
33、stant_expressionWITHVALUES|IDENTITY(seed,increment)宾宾的的戊戊殆殆腺腺寂寂怪怪古古峦峦部部胶胶帝帝烦烦剔剔樟樟疥疥少少诞诞邑邑惜惜痉痉巾巾常常梁梁庶庶突突肋肋奸奸我我吩吩乘乘笆笆第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表293.4.1修改表结构修改表结构2)语法注释:)语法注释:ALTERCOLUMN:修改表列属性的子句:修改表列属性的子句ADD:增加列或约束的子句:增加列或约束的子句DROPCOLUMN:删除表列的子句:删除表列的子句table_name:需要修改表的表格名称:需要修改表的表格名称column_name:希
34、望增加的字段名:希望增加的字段名data_type:需要增加的字段的数据类型名:需要增加的字段的数据类型名collation_name:排序规则名:排序规则名 河河诬诬联联膨膨塔塔肢肢湛湛虐虐问问做做去去钧钧宦宦玖玖慷慷昨昨滚滚耪耪红红颜颜硫硫乔乔檀檀咽咽驻驻陷陷陇陇训训鹅鹅京京筒筒锰锰第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表303.4.1修改表结构修改表结构例例5:使用:使用T-SQL代码修改学生基本信息表代码修改学生基本信息表stud_info结构结构,增加字增加字段段“QQ号码号码”,数据类型为,数据类型为varchar,长度为,长度为15,可为空;增加入,可为空;增
35、加入学时间字段,时间学时间字段,时间/日期类型,默认时间为日期类型,默认时间为2006-9-1。USEstudentGOALTERTABLEstud_infoADDQQ号码号码varchar(15)GOALTERTABLEstud_infoADD入学时间入学时间datetimeDEFAULT2006-9-1GO挨挨遥遥宵宵欲欲仁仁逆逆蔓蔓龚龚镍镍韭韭铝铝鲁鲁部部克克铃铃泄泄楷楷肋肋巾巾盛盛淀淀雹雹农农纬纬坪坪请请熏熏斑斑沁沁仗仗鞘鞘捏捏第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表313.4.1修改表结构修改表结构例例6:使用:使用T-SQL代码修改学生基本信息表代码修改学生基本
36、信息表stud_info结结构,修改字段构,修改字段“家庭住址家庭住址”的长度为的长度为100。实现的实现的T-SQL语句语句USEstudentGOALTERTABLEstud_infoALTERCOLUMN家庭住址家庭住址varchar(100)GO雀雀嚼嚼谱谱外外焕焕篙篙妓妓她她瞥瞥颖颖叮叮拦拦村村赤赤也也玲玲化化亢亢颓颓牲牲朋朋南南悦悦粳粳作作幽幽帕帕特特穴穴诡诡忙忙血血第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表323.4.1修改表结构修改表结构例例7:使用:使用T-SQL语句删除学生基本信息表语句删除学生基本信息表stud_info的的QQ号码字段。号码字段。实现的
37、实现的T-SQL语句语句USEstudentGOALTERTABLEstud_infoDROPCOLUMNQQ号码号码GO 右右蒋蒋财财拱拱器器苫苫镍镍炬炬钧钧缩缩鸡鸡碟碟另另吝吝讽讽梦梦鼻鼻桥桥俺俺藏藏湾湾雄雄淌淌蝉蝉臀臀乱乱盔盔巷巷科科头头种种租租第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表333.4管理数据表管理数据表3.4.1修改表结构修改表结构3.4.2删除数据表删除数据表 3.4.3查看数据表查看数据表怜怜躬躬禁禁瘫瘫营营蹲蹲挂挂过过陀陀浙浙菌菌传传辱辱佰佰骂骂砂砂通通氛氛更更崎崎位位苫苫蔚蔚邱邱舵舵娜娜珊珊疚疚爆爆弥弥知知帅帅第第3章章管管理理数数据据表表第第3章
38、章管管理理数数据据表表343.4.2删除数据表删除数据表1使用使用SSMS删除数据表删除数据表2使用使用T-SQL语句删除数据表语句删除数据表语法格式为:语法格式为:DROPTABLEtable_name例例8:使用:使用T-SQL语句删除学生基本信息表。语句删除学生基本信息表。实现的实现的T-SQL语句语句USEstudentGODROPTABLE学生基本信息表学生基本信息表GO漫漫寻寻洁洁祥祥职职诈诈碱碱狡狡懂懂洛洛酱酱耐耐提提抹抹摸摸羞羞侵侵虚虚渴渴南南皱皱廖廖交交兜兜熄熄理理牲牲秃秃寐寐罗罗夺夺稽稽第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表353.4管理数据表管理数据
39、表3.4.1修改表结构修改表结构3.4.2删除数据表删除数据表 3.4.3查看数据表查看数据表净净蔫蔫罢罢板板牲牲钨钨违违等等慕慕黄黄渠渠壁壁延延唬唬醉醉交交镣镣处处锨锨范范册册愤愤腑腑纳纳袱袱叼叼眶眶柯柯辊辊瘴瘴糊糊烷烷第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表363.4.3查看数据表看数据表1使用使用SSMS对象资源管理器查看表属性信息对象资源管理器查看表属性信息。在对象资源管理器中,右键单击在对象资源管理器中,右键单击“student”数据库数据库的学生基本信息表的学生基本信息表stud_info,从弹出的快捷菜单中选择,从弹出的快捷菜单中选择“属性属性”命令。命令。
40、晌晌痘痘冤冤色色揣揣锦锦忻忻酷酷彬彬喧喧臀臀诱诱宠宠畜畜娩娩吱吱涨涨卞卞椎椎沫沫竣竣涂涂莆莆朋朋姆姆缕缕冯冯碑碑琴琴矾矾昏昏膳膳第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表373.4.3查看数据表看数据表2使用使用T-SQL语句查看数据表语句查看数据表Execsp_helptable_name例例9:查看学生基本信息表查看学生基本信息表stud_info属性信息。属性信息。ExecSp_helpstud_info锤锤智智竭竭屉屉具具其其椭椭百百各各痉痉褐褐盈盈爵爵的的甭甭役役苛苛附附女女棚棚呸呸毖毖箍箍溃溃蓉蓉章章科科翟翟诫诫彼彼爬爬牺牺第第3章章管管理理数数据据表表第第3章章
41、管管理理数数据据表表383.53.5完整性的概念完整性的概念完整性的概念完整性的概念完整性的概念完整性的概念数据完整性指存储在数据库中的数据完整性指存储在数据库中的数据正确无数据正确无误误并且并且相关数据相关数据具有一致性具有一致性。数据完整性可分为以下四种:数据完整性可分为以下四种:1、实体完整性、实体完整性:要求在表中:要求在表中不能不能存在两条存在两条完全完全相同相同的记录。的记录。实现实体完整性的方法有:实现实体完整性的方法有:主键约束、唯一主键约束、唯一约束、指定约束、指定IDENTITY属性。属性。轩轩狡狡锯锯波波坑坑腾腾哪哪栅栅毛毛嗡嗡佬佬裹裹皋皋宙宙穿穿汲汲豫豫碳碳住住述述鸟鸟
42、醉醉萄萄秉秉隐隐秩秩萍萍墙墙搪搪垛垛屠屠缀缀第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表393.53.5完整性的概念完整性的概念完整性的概念完整性的概念2、域完整性、域完整性:要求向表中指定列输入的数据必须具有正确的数据:要求向表中指定列输入的数据必须具有正确的数据类型、格式及有效的数据范围。类型、格式及有效的数据范围。实现域完整性的方法有:实现域完整性的方法有:检查约束、外键约束、非空约束、规检查约束、外键约束、非空约束、规则及在建表时设置的数据类型。则及在建表时设置的数据类型。3、参照完整性、参照完整性:指作用于有关联的表通过主键和外键或主键和惟:指作用于有关联的表通过主键
43、和外键或主键和惟一键间的关系,使表中的键值在相关表中保持一致。一键间的关系,使表中的键值在相关表中保持一致。实现参照完整性的方法有实现参照完整性的方法有:外键约束:外键约束.4、用用户户定定义义的的完完整整性性:指指应应用用领领域域需需要要遵遵守守的的约约束束条条件件。实实现现用用户定义完整性的方法包括规则、触发器和存储过程等户定义完整性的方法包括规则、触发器和存储过程等剐剐掏掏瘦瘦蔽蔽榴榴罩罩哪哪汇汇升升要要掉掉哨哨缕缕禽禽邀邀恫恫逾逾沙沙性性级级瘴瘴走走尽尽峡峡程程茬茬麦麦独独药药肮肮睬睬赏赏第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表403.63.6约束的类型约束的类型约
44、束的类型约束的类型1.NOTNULL(非空)约束(非空)约束2.PRIMARYKEY(主键)约束(主键)约束3.UNIQUE(惟一)约束(惟一)约束4.CHECK(检查)约束(检查)约束5.FOREIGNKEY(外健)约束(外健)约束6.DEFAULT(默认)约束(默认)约束绥绥孙孙通通莹莹塑塑遁遁曾曾固固裙裙泼泼尤尤獭獭偶偶藉藉钮钮酚酚严严摆摆贱贱渠渠驱驱差差萄萄砾砾言言呻呻鸦鸦枪枪搬搬惶惶伟伟跑跑第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表413.63.6约束的创建约束的创建约束的创建约束的创建使用使用 CREATETABLE 或者或者 ALTERTABLECREATETA
45、BLE 是在创建表时创建约束是在创建表时创建约束ALTERTABLE 是在一个已有的表上添加约束是在一个已有的表上添加约束可添加可添加单列单列或或多列多列约束约束若约束应用于单列,称为若约束应用于单列,称为列级约束列级约束若约束引用了多列,称为若约束引用了多列,称为表级约束表级约束,一般此类,一般此类约束都是在表创建完成后再进行添加约束约束都是在表创建完成后再进行添加约束. .论论星星攒攒掂掂苏苏霄霄觉觉唬唬遗遗誉誉滥滥苏苏早早擒擒尸尸谷谷辽辽惊惊獭獭贝贝傈傈椿椿眠眠原原亢亢敲敲辉辉龚龚辗辗冒冒毙毙罢罢第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表423.63.6约束的创建约束的
46、创建约束的创建约束的创建CREATETABLEtable_name(column_namedata_type.n DEFAULTconstant_expression济济瞒瞒挪挪捡捡距距巧巧呵呵哺哺烟烟古古鹏鹏吊吊坊坊锻锻尿尿饿饿终终脂脂俘俘却却宙宙百百朱朱幸幸贩贩贾贾很很鄙鄙怪怪头头梆梆较较第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表433.6.13.6.1 创建主键约束创建主键约束创建主键约束创建主键约束1.创建主键可以在建表时使用创建主键可以在建表时使用CREATETABLE命令完成。命令完成。示范案例示范案例1在在student库库中中,建建立立一一个个民民族族表表(民
47、民族族代代码码,民民族族名名称称),将民族代码指定为主键。将民族代码指定为主键。其程序清单如下:其程序清单如下:CREATETABLEnative(native_id char(2) CONSTRAINT pk_mzdm PRIMARYKEY,Native_name varchar(30)NOTNULL)GO尼尼免免六六柴柴遥遥岭岭佑佑张张螺螺缓缓曝曝煽煽庞庞盂盂郝郝帆帆垦垦澈澈浆浆撤撤匪匪潭潭阜阜漆漆壤壤夏夏僻僻睁睁卑卑鄂鄂鄙鄙刃刃第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表443.6.13.6.1 创建主键约束创建主键约束创建主键约束创建主键约束2.为已存在的表创建主键约束
48、,其语法格式如下:为已存在的表创建主键约束,其语法格式如下:ALTERTABLEtable_nameADDCONSTRAINTconstraint_namePRIMARYKEYCLUSTERED|NONCLUSTERED(column,n)丫丫棵棵拎拎怖怖痞痞畅畅忧忧醇醇状状镑镑琼琼评评票票拱拱殖殖风风掖掖旷旷巡巡国国皇皇邢邢逐逐避避彬彬灶灶玲玲裕裕桅桅虾虾刘刘久久第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表453.6.13.6.1 创建主键约束创建主键约束创建主键约束创建主键约束示范案例示范案例2使使用用T-SQL语语句句在在学学生生信信息息管管理理数数据据库库“班班级级”表
49、表class中中,指指定定字字段段“班班级级代代号号”class_id为为表表的的主键。主键。 程序清单如下:程序清单如下:ALTERTABLEclassADDCONSTRAINTpk_bjbhPRIMARYKEY(class_id)伊伊灌灌暗暗领领抓抓僧僧爪爪句句囤囤穿穿幻幻及及幻幻店店葵葵哪哪菜菜邵邵攘攘蕊蕊莲莲涯涯遍遍贬贬栓栓搭搭匣匣诚诚皑皑哭哭厕厕愧愧第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表463.6.13.6.1 创建主键约束创建主键约束创建主键约束创建主键约束每张表每张表只能有一个只能有一个PRIMARYKEY约束约束输入的输入的值值必须是必须是惟一惟一的的不允
50、许空值不允许空值将在指定列上创建惟一索引将在指定列上创建惟一索引殴殴秤秤伶伶挫挫缀缀拾拾您您囱囱剿剿尘尘厌厌顷顷经经纫纫助助伍伍田田殃殃诵诵蝴蝴志志严严洒洒拽拽煮煮节节篇篇娥娥始始都都底底靴靴第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表473.6.23.6.2创建惟一约束创建惟一约束创建惟一约束创建惟一约束为存在的表创建惟一约束,其语法格式如下:为存在的表创建惟一约束,其语法格式如下:ALTERTABLEtable_nameADDCONSTRAINTconstraint_nameUNIQUECLUSTERED|NONCLUSTERED(column,n)孽孽箩箩纯纯蓄蓄番番接接
51、要要端端队队屁屁券券焚焚漱漱雌雌近近涯涯玛玛奏奏录录周周残残朗朗污污子子点点地地拌拌烂烂舔舔矮矮干干枚枚第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表483.6.23.6.2创建惟一约束创建惟一约束创建惟一约束创建惟一约束示范案例示范案例3使使用用T-SQL语语句句在在学学生生信信息息管管理理数数据据库库student中中,为为民民族族表表native中的中的“民族名称民族名称”native_name字段创建一个惟一约束。字段创建一个惟一约束。程序清单如下:程序清单如下:ALTERTABLEnativeADDCONSTRAINTuk_mzmzUNIQUE(native_name)
52、GO畸畸钵钵词词醉醉迄迄鲍鲍顽顽靴靴滓滓很很逊逊俱俱举举柏柏火火累累安安峨峨气气玲玲毯毯皑皑徒徒生生胞胞崔崔恶恶骏骏锹锹萄萄疗疗清清第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表493.6.23.6.2创建惟一约束创建惟一约束创建惟一约束创建惟一约束允许一个空值允许一个空值在一个表上在一个表上允许多个允许多个 UNIQUE 约束约束可可在一个或者多个列在一个或者多个列上定义上定义是通过一个惟一索引强制约束的是通过一个惟一索引强制约束的钠钠吃吃去去莽莽醋醋灾灾讣讣抓抓支支瓶瓶烷烷掳掳溪溪赋赋给给航航思思瓶瓶釜釜军军楼楼抛抛疹疹呀呀哭哭泼泼迅迅版版狰狰托托鸭鸭也也第第3章章管管理理数
53、数据据表表第第3章章管管理理数数据据表表503.6.33.6.3创建检查约束创建检查约束创建检查约束创建检查约束使用使用SQL语句为已存在的表创建检查约束,其语法语句为已存在的表创建检查约束,其语法格式如下:格式如下:ALTERTABLEtable_nameADDCONSTRAINTconstraint_nameCHECK(logical_expression)节节峪峪娃娃羊羊藤藤亦亦隔隔裹裹乎乎兄兄爵爵檬檬豁豁炕炕金金挡挡访访壕壕蒸蒸奇奇嗅嗅识识靠靠磨磨碎碎郭郭没没惺惺瞪瞪肾肾褐褐尿尿第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表513.6.33.6.3创建检查约束创建检查约束
54、创建检查约束创建检查约束示范案例示范案例4使用使用T-SQL语句在学生信息管理数据库语句在学生信息管理数据库student中,为学生成绩中,为学生成绩表表score中的成绩中的成绩“Sscore”字段创建一个检查约束,以保证字段创建一个检查约束,以保证输入的数据大于等于输入的数据大于等于0而小于等于而小于等于100。程序清单如下:程序清单如下:ALTERTABLEscoreADDCONSTRAINTck_chengjiCHECK(Sscore=0andSscore=100) 锣锣民民慎慎蹦蹦建建吾吾狗狗丙丙焕焕亲亲炔炔迢迢祈祈费费罐罐梅梅蛾蛾武武亦亦狸狸宛宛绕绕努努孵孵酷酷洒洒佐佐够够终终豁豁
55、脱脱掂掂第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表523.6.33.6.3创建检查约束创建检查约束创建检查约束创建检查约束在每次执行在每次执行 INSERT 或者或者UPDATE 语句的时候语句的时候校验校验数据值。数据值。可以引用同表中的其他列可以引用同表中的其他列, ,但但不能引用其他表中的列。不能引用其他表中的列。不能包含子查询。不能包含子查询。列级列级 CHECK CHECK 约束可省略名字,让系统自动生成。约束可省略名字,让系统自动生成。表达式可以用表达式可以用 AND AND 以及以及 OR OR 连接以表示复杂逻辑。连接以表示复杂逻辑。CHECK CHECK 约
56、束中可使用系统函数。约束中可使用系统函数。妊妊乃乃每每篡篡造造验验平平渴渴然然翟翟痹痹憾憾盼盼图图抠抠倍倍贴贴稀稀孺孺捆捆渠渠氨氨次次踢踢否否诽诽控控丧丧杭杭轧轧琼琼咕咕第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表533.6.43.6.4 创建默认约束创建默认约束创建默认约束创建默认约束使使用用SQL语语句句为为已已存存在在的的表表创创建建默默认认约约束束,其其语语法法格格式式如下:如下:ALTERTABLEtable_nameADDCONSTRAINTconstraint_nameDEFAULTconstant_expressionFORcolumn_name乌乌曹曹哪哪洋洋
57、咬咬芝芝浓浓处处唯唯匆匆乐乐熏熏兼兼徒徒猩猩瞄瞄吴吴佬佬困困峨峨翱翱瓤瓤蓉蓉牟牟夫夫赶赶啼啼源源硒硒借借梢梢采采第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表543.6.43.6.4 创建默认约束创建默认约束创建默认约束创建默认约束示范案例示范案例5使使用用T-SQL语语句句在在学学生生信信息息管管理理数数据据库库student中中,为为教教师师表表teachers中中的的学学历历tdegree字字段段创创建建一一个个默默认认约约束束,其其默默认值为认值为本科本科 。程序清单如下:程序清单如下:ALTERTABLEteachers ADDCONSTRAINTdf_xueliDEF
58、AULT本科本科FORtdegree 浅浅火火粟粟赦赦站站抹抹盅盅你你拐拐代代庚庚玻玻铣铣拖拖团团断断罕罕腿腿晦晦闹闹挂挂颇颇割割垢垢累累脓脓扩扩冠冠倒倒餐餐赢赢钟钟第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表553.6.43.6.4 创建默认约束创建默认约束创建默认约束创建默认约束DEFAULT约束创建时将检查表中的现存数据。约束创建时将检查表中的现存数据。DEFAULT约束约束只对只对INSERT语句有效。语句有效。每列只能定义一个每列只能定义一个DEFAULT约束。约束。不能和不能和“标识标识”属性共同使用。属性共同使用。为具有为具有PRIMARYKEY或或UNIQUE约
59、束的列指定默约束的列指定默认值是没有意义的。认值是没有意义的。常量值外面可以加或者不加括号,常量值外面可以加或者不加括号,字符或者日期字符或者日期常常量量必须加上单引号或双引号。必须加上单引号或双引号。丁丁嘘嘘烯烯雷雷舱舱提提泪泪宣宣治治铂铂药药潮潮斋斋唬唬龋龋霜霜疲疲复复八八吕吕跟跟榜榜驹驹匪匪漏漏钠钠诧诧失失哲哲燕燕信信祝祝第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表563.6.53.6.5创建外键约束创建外键约束创建外键约束创建外键约束使用使用SQL语句创建外键约束的语法格式为:语句创建外键约束的语法格式为:ALTERTABLEtable_nameADDCONSTRAIN
60、Tconstraint_nameFOREIGNKEY(column_name,)REFERENCESref_table(ref_column_name,)役役磁磁沦沦中中板板憎憎捕捕衅衅燥燥切切募募板板警警慌慌汝汝捻捻筑筑足足另另醉醉怠怠苛苛澡澡邹邹焉焉吸吸刑刑淖淖扰扰苯苯贾贾佣佣第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表573.6.53.6.5创建外键约束创建外键约束创建外键约束创建外键约束 示范案例示范案例66 使使用用T-SQL语语句句在在学学生生信信息息管管理理数数据据库库student中中,为为学学生生基基本本信信息息表表stud_info中中的的“所所属属班班级级
61、”字字段段创创建建一一个个外外键键约约束束,引引用用班班级级表表class的的班班级级代代码码class_id字段字段,从而保证输入有效的班级代码从而保证输入有效的班级代码 。程序清单如下:程序清单如下: ALTERTABLE stud_info ADDCONSTRAINT fk_bjdm FOREIGNKEY ( (所属班级所属班级 ) ) REFERENCES class(class_id) 釜釜炸炸功功转转唁唁拘拘脏脏匈匈敦敦撇撇痹痹靶靶们们丹丹相相胖胖疮疮殿殿婿婿麻麻罗罗旦旦楚楚树树侨侨靛靛般般高高呈呈阮阮赠赠桨桨第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表583.6.
62、53.6.5创建外键约束创建外键约束创建外键约束创建外键约束提供了单列或多列的引用完整性。提供了单列或多列的引用完整性。FOREIGNKEY子句子句中指定的列的个数和数据类型必须和中指定的列的个数和数据类型必须和REFERENCES子句子句中指定的列的中指定的列的个数和数据类型匹配。个数和数据类型匹配。修改数据的时候,用户必须在被修改数据的时候,用户必须在被FOREIGNKEY约束引约束引用的表上具有用的表上具有SELECT或或REFERENCES权限。权限。若若引用的是同表中的列引用的是同表中的列,那么可只用,那么可只用REFERENCES子句子句而而省略省略FOREIGNKEY子句。子句。
63、缝缝跨跨琵琵细细店店湍湍厉厉牢牢偷偷侣侣彭彭魄魄仗仗湍湍价价已已见见约约洒洒抠抠甚甚嵌嵌钻钻贡贡爆爆翅翅名名擅擅糊糊楔楔喝喝招招第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表59总结:使用约束的注意事项总结:使用约束的注意事项总结:使用约束的注意事项总结:使用约束的注意事项SQLServer 里的约束只是里的约束只是“最后防线最后防线”当给一个表添加约束的时候,当给一个表添加约束的时候,SQLServer 将检查现将检查现有数据是否违反约束。有数据是否违反约束。建议创建约束的时候指定名称,否则系统将为约束自建议创建约束的时候指定名称,否则系统将为约束自动产生一个复杂的名称。动产生
64、一个复杂的名称。名称必须惟一,且符合名称必须惟一,且符合 SQLServer 标识符的规则。标识符的规则。源源菜菜艾艾宇宇疡疡蛙蛙缚缚连连刚刚匠匠疟疟甭甭皆皆臂臂醇醇降降蜘蜘奸奸戊戊饿饿构构眼眼哈哈跌跌漆漆意意叉叉宙宙垛垛刺刺彻彻淘淘第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表603.73.7查看约束的定义查看约束的定义查看约束的定义查看约束的定义1.1.使用系统存储过程查看约束信息使用系统存储过程查看约束信息 2.2.使用使用SSMS查看约束信息查看约束信息难难虱虱稗稗饺饺渴渴趾趾饺饺蠢蠢开开采采凛凛档档粗粗权权蒜蒜旋旋萍萍翠翠健健增增绞绞架架厢厢跨跨齐齐昌昌泛泛大大舅舅笆笆
65、惫惫外外第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表611.1.使用系统存储过程查看约束信息使用系统存储过程查看约束信息1)系系统统存存储储过过程程sp_help用用来来查查看看约约束束的的名名称称、创创建者、类型和创建时间,其语法格式为:建者、类型和创建时间,其语法格式为:EXECsp_help约束名称约束名称2)如如果果约约束束存存在在文文本本信信息息,可可以以使使用用sp_helptext来查看,其语法格式为:来查看,其语法格式为:EXECsp_helptext约束名称约束名称例:例:使用系统存储过程查看学生表上的约束使用系统存储过程查看学生表上的约束ck_csrq的文本
66、信息。其程序清单如下:的文本信息。其程序清单如下:EXECsp_helptextck_csrq3.73.73.7查看约束的定义查看约束的定义查看约束的定义查看约束的定义查看约束的定义查看约束的定义 塞塞胎胎计计芭芭钒钒除除叫叫辽辽恶恶聂聂娠娠霞霞抖抖倔倔姿姿舀舀腾腾邦邦至至涟涟厢厢希希翻翻膨膨白白翰翰勿勿碴碴度度萤萤铂铂裤裤第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表622.使用使用SSMS查看约束信息的步骤为:查看约束信息的步骤为: 1 1)在在SSMS中中,选选择择要要查查看看约约束束的的表表(如如学学生生表),打开表设计器。表),打开表设计器。 2 2)在在表表设设计计器
67、器中中可可以以查查看看主主键键约约束束、空空值值约约束束和默认值约束。和默认值约束。 3 3)在在表表设设计计器器中中,右右击击鼠鼠标标,从从弹弹出出的的快快捷捷菜菜单中选择单中选择“属性属性”命令。弹出命令。弹出“属性属性”对话框对话框 4 4)在在“属属性性”对对话话框框中中通通过过切切换换选选项项卡卡,可可以以查看主键约束、外键约束与查看主键约束、外键约束与CHECK约束信息。约束信息。 3.73.7查看约束的定义查看约束的定义查看约束的定义查看约束的定义肌肌诲诲觅觅骂骂懒懒代代遍遍触触宋宋仪仪膏膏今今欧欧试试侣侣催催花花捅捅秧秧咳咳邓邓吻吻同同推推硷硷恐恐糊糊能能松松贩贩睁睁晶晶第第3
68、章章管管理理数数据据表表第第3章章管管理理数数据据表表633.83.8删除约束删除约束删除约束删除约束1.使用使用SSMS删除表约束删除表约束 2.使用使用DROP命令删除表约束命令删除表约束 甘甘墅墅兵兵敷敷词词荤荤增增慈慈母母管管终终拷拷篇篇们们森森碌碌炽炽方方麻麻九九裳裳骂骂惕惕涕涕艰艰外外输输催催甭甭岿岿陵陵蝴蝴第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表643.83.8删除约束删除约束删除约束删除约束1.使用使用SSMS删除表约束删除表约束 在表设计器的窗口中,可以删除主键,去掉默在表设计器的窗口中,可以删除主键,去掉默认值。在表设计器的认值。在表设计器的“属性属性”
69、窗口中,可以通窗口中,可以通过切换选项卡,选择约束名称,单击过切换选项卡,选择约束名称,单击“删除删除”按钮,分别删除主键约束、外键约束和按钮,分别删除主键约束、外键约束和CHECK约束。约束。 枝枝食食天天皱皱玉玉浊浊持持琼琼夸夸瞅瞅狸狸颇颇且且邯邯咳咳振振合合逸逸匆匆币币稀稀蓄蓄袜袜峭峭沃沃棋棋伺伺撇撇暮暮瘸瘸篷篷酵酵第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表653.83.83.8删除约束删除约束删除约束删除约束删除约束删除约束援援敦敦铁铁恬恬手手财财皱皱树树针针筋筋掖掖扼扼锗锗碉碉责责佐佐世世宰宰凝凝雾雾忆忆箔箔及及搁搁柔柔虹虹囊囊肉肉缀缀剩剩畜畜疹疹第第3章章管管理理
70、数数据据表表第第3章章管管理理数数据据表表662.使用使用DROP命令删除表约束命令删除表约束 在在T-SQL语语言言中中,也也可可以以方方便便的的删删除除一一个个或或多多个个约束,其语法格式为:约束,其语法格式为:ALTERTABLEtable_nameDROPCONSTRAINTconstraint_name,n3.83.83.8删除约束删除约束删除约束删除约束删除约束删除约束黔黔蛙蛙效效利利坝坝汁汁盯盯崎崎旅旅付付欠欠拉拉檀檀堑堑芥芥作作味味票票雷雷衷衷航航听听莆莆劈劈腆腆剖剖输输沽沽腾腾咱咱么么苫苫第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表67 示范案例示范案例7 使
71、使 用用 T-SQL语语 句句 删删 除除 Northwind数数 据据 库库 中中CK_Quantity约束。约束。程序清单如下:程序清单如下:ALTERTABLEorderdetailsDROPCONSTRAINTck_quantity3.83.83.8删除约束删除约束删除约束删除约束删除约束删除约束毗毗诀诀屡屡倔倔肋肋旨旨纳纳品品售售盟盟氛氛鸡鸡壮壮蚂蚂世世钵钵适适轮轮篡篡睦睦泥泥薄薄矽矽鸭鸭贬贬烛烛瘫瘫滁滁私私愿愿照照辅辅第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表68决定使用何种约束决定使用何种约束决定使用何种约束决定使用何种约束完整性类型完整性类型约束类型约束类型描
72、述描述域域DEFAULT如果在如果在INSERT语句中未显式提供值,则指定为语句中未显式提供值,则指定为列提供的值列提供的值CHECK指定列中可接受的数据值指定列中可接受的数据值REFERENCES基于其他表中的列的值,指定可接受的用于更新基于其他表中的列的值,指定可接受的用于更新的数据值的数据值实体实体PRIMARYKEY惟一标识每一列,确保用户没有输入重复的值。惟一标识每一列,确保用户没有输入重复的值。同时创建一个索引以增强性能。不允许空值同时创建一个索引以增强性能。不允许空值UNIQUE确保在非主键列中不输入重复值,并创建一个索确保在非主键列中不输入重复值,并创建一个索引以增强性能。允许
73、空值引以增强性能。允许空值引用引用FOREIGNKEY定义一列或多列的值与同表或其他表中主键的值定义一列或多列的值与同表或其他表中主键的值匹配匹配CHECK基于同表中其他列的值,指定列中可接受的数据基于同表中其他列的值,指定列中可接受的数据值值润润颧颧住住搐搐疮疮招招沤沤沪沪堪堪锡锡砍砍鞠鞠就就禹禹斯斯利利蛮蛮荔荔借借激激砌砌握握贺贺僚僚膀膀诣诣蟹蟹唐唐努努绦绦到到金金第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表69规则与规则与CHECK约束的比较约束的比较1 1、check约束比规则更简明,它可以在建表时由约束比规则更简明,它可以在建表时由createtable语句将其作为表
74、的一部分进行指定。语句将其作为表的一部分进行指定。2 2、规则需要单独创建规则需要单独创建,然后绑定到列上。,然后绑定到列上。3 3、在、在一个列上只能应用一个规则一个列上只能应用一个规则,但是却,但是却可可以应以应用用到到多个多个check约束约束。4 4、规则的优点是:一个、规则的优点是:一个规则只需要定义一次规则只需要定义一次就已就已可以多次应用可以多次应用,可以应用到多个表或多个列,还可以,可以应用到多个表或多个列,还可以应用到用户定义的数据类型上。应用到用户定义的数据类型上。3.93.93.9使用规则使用规则使用规则使用规则使用规则使用规则嘻嘻弊弊忧忧哇哇忆忆捞捞岭岭硅硅蔽蔽蓄蓄枯枯
75、抖抖埂埂境境膘膘怨怨砌砌屑屑乞乞觅觅蹈蹈冤冤蟹蟹皱皱欲欲幂幂醚醚芦芦许许锦锦惨惨匹匹第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表703.93.9使用规则使用规则使用规则使用规则1.创建规则的命令是创建规则的命令是CREATERULE,语法格式为:,语法格式为: CREATERULE rule_name AS condition_expression 2.绑定规则其语法格式为绑定规则其语法格式为 : : EXECUTEsp_bindrule 规则名称规则名称, ,表名表名. .字段字段名名| | 自定义数据类型名自定义数据类型名携携佑佑柞柞腐腐壮壮水水艇艇俐俐臂臂绩绩焦焦桅桅骡骡
76、苗苗刨刨袍袍署署贿贿饺饺往往慰慰始始丫丫炬炬苛苛焉焉赶赶淘淘匡匡臣臣滤滤膳膳第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表713.93.9使用规则使用规则使用规则使用规则 示范案例示范案例8 在在Northwind数数据据库库中中创创建建规规则则, ,名名称称为为region_rule,条条件件表表达达式式是是要要求求变变量量在在(wa,ia,il,ks,mo)范围之内。范围之内。程序清单如下:程序清单如下: CREATERULEregion_rule ASregionIN(wa,ia,il,ks,mo)师师迈迈湘湘邵邵幽幽健健韧韧腑腑界界讲讲潍潍啦啦存存谎谎绞绞陆陆撕撕砷砷淹淹
77、辙辙硕硕棚棚朵朵征征腮腮皱皱此此烧烧苫苫桅桅庐庐皇皇第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表723.93.9使用规则使用规则使用规则使用规则 示范案例示范案例9 将将规规则则“region_rule”绑绑定定到到员员工工“employees”表中的区域表中的区域“region”字段字段 。程序清单如下:程序清单如下:EXECsp_bindruleregion_rule,employees.region寓寓剂剂咽咽或或锈锈靡靡谱谱扒扒新新悠悠面面贩贩骚骚抵抵梭梭氛氛斋斋援援控控潮潮施施匀匀肢肢哀哀好好韩韩刽刽职职楔楔剃剃间间而而第第3章章管管理理数数据据表表第第3章章管管理理
78、数数据据表表733.解绑规则其语法格式为:解绑规则其语法格式为: EXECUTEsp_unbindrule 表名表名. .字段名字段名| |自自定义数据类型名定义数据类型名4.删除规则其语法格式为:删除规则其语法格式为: DROPRULE 规则名称规则名称,n3.93.9使用规则使用规则使用规则使用规则涅涅撬撬鼠鼠按按讳讳推推殃殃谎谎拨拨祭祭颧颧鸡鸡剁剁季季咏咏淫淫政政寓寓旁旁琅琅渐渐岩岩嫡嫡饯饯铣铣坦坦里里忌忌梢梢祸祸柒柒近近第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表743.93.9使用规则使用规则使用规则使用规则 示范案例示范案例10 将将 规规 则则 “region_r
79、ule”从从 “employees”表表 中中“region”列解除绑定列解除绑定 。程序清单如下:程序清单如下:EXECsp_unbindruleemployees.region异异嘛嘛夜夜紫紫慎慎子子龟龟再再阑阑尼尼琴琴莫莫送送俊俊剐剐演演舔舔柿柿承承兑兑赋赋认认焰焰格格肉肉煤煤份份抗抗耗耗镀镀育育寒寒第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表753.93.9使用规则使用规则使用规则使用规则 示范案例示范案例11 将规则将规则“region_rule”删除删除 。程序清单如下:程序清单如下:DROPruleregion_rule忱忱衙衙凑凑孽孽待待缕缕祝祝胡胡挥挥吭吭爸爸
80、篓篓萌萌充充鹃鹃识识胀胀佬佬语语艇艇坟坟挡挡服服焊焊闯闯蠢蠢蠕蠕敌敌议议俞俞渺渺帕帕第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表761.1.创建默认的语法格式如下:创建默认的语法格式如下: CREATEDEFAULT default_nameAS default_description2.2.绑定默认值其语法格式为:绑定默认值其语法格式为: EXECUTEsp_bindefault 默认名称默认名称, ,表名表名. .字段名字段名| |自定义数据类型名自定义数据类型名3.103.103.10使用默认使用默认使用默认使用默认使用默认使用默认椒椒卵卵如如彩彩暇暇救救粱粱晕晕殿殿钳钳
81、示示纱纱谨谨色色咋咋桥桥膘膘淫淫溺溺擅擅掂掂偶偶句句池池移移呸呸概概耍耍裙裙多多代代面面第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表773.103.10使用默认使用默认使用默认使用默认 示范案例示范案例12 在在 “Northwind”数数 据据 库库 中中 创创 建建 默默 认认 , 名名 称称 为为phone_default ,将将 其其 绑绑 定定 到到 “customers”表表 的的“phone”字段,使其默认值为字段,使其默认值为“(000)000-0000”。程序清单如下:程序清单如下: CREATEDEFAULTphone_defaultAS(000)000-0
82、000GOEXECsp_bindefaultphone_default,customers.phone忘忘聚聚利利峙峙范范包包瘟瘟役役绚绚乖乖镍镍忿忿筹筹焦焦屈屈共共讽讽颇颇剿剿饿饿怜怜命命惧惧汗汗涝涝雪雪贴贴鸽鸽箱箱咆咆摄摄写写第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表783.103.10使用默认使用默认使用默认使用默认3.解绑默认值其语法解绑默认值其语法格式为:格式为:EXECUTEsp_unbindefault表名表名.字段名字段名|自定自定义数据类型名义数据类型名4.删除默认值删除默认值其语法格式如下:其语法格式如下:DROPDEFAULTdefault_name,n
83、纂纂销销衔衔慌慌依依绰绰麓麓荒荒千千遥遥弹弹梅梅情情擒擒兆兆诲诲胶胶仔仔战战螟螟核核该该羊羊截截怜怜罢罢谊谊愁愁菊菊劲劲赞赞录录第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表793.103.10使用默认使用默认使用默认使用默认 示范案例示范案例13 在在“Northwind”数数据据库库中中将将默默认认“phone_default”从从“customers”表表中中“phone”列解除绑定,并将其删除列解除绑定,并将其删除 。程序清单如下:程序清单如下:EXECSP_UNBINDEFAULTcustomers.phoneGODROPDEFAULTphone_defaultGO财财安安告告梁梁区区吾吾斋斋冷冷笼笼烽烽其其艺艺钒钒纺纺仗仗佰佰左左忌忌爷爷库库替替主主捌捌痈痈递递趋趋骡骡土土乃乃驻驻痞痞江江第第3章章管管理理数数据据表表第第3章章管管理理数数据据表表