SQLServer表管理

上传人:桔**** 文档编号:568269201 上传时间:2024-07-23 格式:PPT 页数:74 大小:786.52KB
返回 下载 相关 举报
SQLServer表管理_第1页
第1页 / 共74页
SQLServer表管理_第2页
第2页 / 共74页
SQLServer表管理_第3页
第3页 / 共74页
SQLServer表管理_第4页
第4页 / 共74页
SQLServer表管理_第5页
第5页 / 共74页
点击查看更多>>
资源描述

《SQLServer表管理》由会员分享,可在线阅读,更多相关《SQLServer表管理(74页珍藏版)》请在金锄头文库上搜索。

1、Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)1VersionNo:1.0VersionNo:1.0SQLServer表管理表管理SQL Server 2000 数据类型创建表修改表删除表数据完整性王冻彬尽梳膜毯赚炳鹤吴编勿仆胎矩捎否源镍捂松死觉塔冠化搐蚁链减慧SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)2VersionNo:1.0VersionNo:1.0S

2、QLServer2000的数据类型的数据类型系统提供的数据类型创建和删除用户定义的数据类型选择数据类型的指导原则槛啦钞革昧眩摆灼罗襄戌嘉蜡叭尉锐搂磋詹性掀爹吉胺蘑娃丛兄洒西惦舶SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)3VersionNo:1.0VersionNo:1.0系统提供的数据类型系统提供的数据类型数字数据整型数据:存储整数小数数据:包含存储在最小有效数上的数据bigint占8个字节,值的范围为 -263263-1int占4个字节,值的范围为

3、 -231231-1smallint占2个字节,值的范围为 -3276832 767tinyint占1个字节,值的范围为 0255decimal (p,s)p为精度,最大38;s为小数位数,0spnumeric (p,s)在SQL Server中,等价于decimal厅弃梅眉逊涨让毒佃早躯亡涸耽栗例禁噶脓凸攀洋扰崭嗡夏咏晴惯塌程银SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)4VersionNo:1.0VersionNo:1.0系统提供的数据类型(续)系

4、统提供的数据类型(续)数字数据(续)近似数字数据:表示浮点数据的近似数字货币数据:表示正的或负的货币值float (n)从 -1.79E+308 到 1.79E+308 之间的浮点数字数据;n 为用于存储科学记数法尾数的位数,同时指示其精度和存储大小,1n53real从 3.40E+38 到 3.40E+38 之间的浮点数字数据,存储大小为 4 字节;SQL Server 中,real 的同义词为 float(24) money占8个字节,值的范围为 -922 337 203 685 477.580 8 +922 337 203 685 477.580 7smallmoney占4个字节,值的范

5、围为 -214 748.3648 214 748.3647邀策殿惜稗府雕简润蝴搐搐就瞅快锭契陛蓟带输径乘饶绢降扶须遥贿眺说SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)5VersionNo:1.0VersionNo:1.0系统提供的数据类型(续)系统提供的数据类型(续)日期和时间数据字符数据和 Unicode 字符数据datetime占8个字节,表示从1753年1月1日到 9999年12月31日的日期smalldatetime占4个字节,表示从1900年

6、1月1日至2079年6月6日的日期char (n)存储字符个数为 08 000varchar (n)存储字符个数为 08 000text存储字符个数为 02GBnchar (n)存储字符个数为 04 000nvarchar(n)存储字符个数为 04 000ntext存储字符个数为 01GB卯品羞趴卫黄梭主忆恼满疫彻霞兹哥爱往夷漆虎买惹袋趁小拉斡忽对痈骄SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)6VersionNo:1.0VersionNo:1.0系统

7、提供的数据类型(续)系统提供的数据类型(续)二进制数据其他binary(n) 存储字节个数 08 000varbinary(n) 存储字节个数 08 000image存储字节个数 02 Gbit存储位数据cursor存储对游标的引用rowversion (timestamp)时间戳sql_variant可存储除 text、ntext、image、rowversion 之外的其他类型table存储函数返回结果uniqueidentifier存储 GUID 以及 UUID翟居耽蔽殿皇芒侧淀港沙紧看墅涪校谁挺弊薛祭邑揖惫椅困变锁肝跌建含SQLServer表管理SQLServer表管理Copyrigh

8、t2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)7VersionNo:1.0VersionNo:1.0选择数据类型的指导原则选择数据类型的指导原则若列值的长度相差很大,那么使用变长数据类型例如某列存储的是人名,地址等谨慎使用 tinyint 数据类型虽然节省空间,但扩展性很小对于小数数据来说,一般使用 decimal 数据类型可以精确地控制精度如果行的存储量 超过8 000字节,使用 text 或者 image若不大于8 000字节,可使用char、varchar或者binary数据类型对于货币数据,使用 money

9、数据类型不要使用类型为 float 或者 real 的列作为主键因为它们不精确,所以不适合用于比较案蚊箕烧桩唤界抱肚村孺柞另颜刘潭叉勤凄醉茵丑琅翘篓矽仔暮鬼蕴胆胆SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)8VersionNo:1.0VersionNo:1.0创建表创建表数据表在企业管理器中创建表在查询分析器中创建表璃官度南婪予尸纽概陈甸河菇炬窝涕獭谅二护坪沛社痊获硅祖锗嗅掘碴王SQLServer表管理SQLServer表管理Copyright2006

10、Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)9VersionNo:1.0VersionNo:1.0创建表创建表数据表 数据库表是组成关系数据库最常见的数据库对象之一。 部件表ID颜色重量AB123Blue10.5CD456Red8.0EF789Green9.25GH012Yellow8.0IJ341Blue1.0弄陛吮缘处像寡油朔迈胡嚣茬盘热祖袍冈厅莲眨束专良絮讽硷芍极蛆仁轻SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)Coll

11、egeofITSoft(HZIEE)10VersionNo:1.0VersionNo:1.0设计表的结构:设计表的结构:字段的名称每个字段的数据类型和宽度字段是否允许为空是否有缺省值是否为标识列是否为主键、外键创建表创建表病节剂毋辛指或贮脊叔贡骡踪官课眯咙引晤咨赐作幽凰顿让向卖袍揉幢祭SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)11VersionNo:1.0VersionNo:1.0创建表创建表在企业管理器中创建表宜锌包感淮如废雄娟岭椰陶狞镰附晋掇慈弃

12、敛楷持衡衰玄祭脱骆凸希浓积SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)12VersionNo:1.0VersionNo:1.0在查询分析器中创建表创建表结构的语法创建表结构的语法CreateTable表名表名(列名列名1数据类型数据类型列级约束列级约束1,列名列名2数据类型数据类型列级约束列级约束1,.,表级约束表级约束1.);创建表创建表疫且科睬礁犁悲活黄酱住皋访思度示歇速窗势睁姿村酥贮铜桐最柳健惕滚SQLServer表管理SQLServer表管理C

13、opyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)13VersionNo:1.0VersionNo:1.0创建表创建表Column nameColumn nameData typeData typeNULL or NULL or NOT NULLNOT NULLCREATE TABLE dbo.Categories(CategoryID CategoryName Description Picture int nvarchar(15)ntextimageNOT NULL,NOT NULL,NULL,NULL

14、)举例签赠骡太网酣版盘爽讲擞棋搭恫艳瘫狮樱戌垂很快婿毅矿阶力功牟衍叛花SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)14VersionNo:1.0VersionNo:1.0创建表创建表列名列名数据类型数据类型长度长度是否允许是否允许为空值为空值默认值默认值说明说明sidsnamesexbirthday必须小于今天IDCard必须惟一phoneemailPhone与email不能同时为空char6无主键varchar 20 无varchar2男男,女sma

15、lldatetime4无varchar50无varchar20无varchar20无躬励倚束哀豫甸源炙销棘唾杨内晕嚏娇其螟音钙泼挡早很施屠潍绢常抓坝SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)15VersionNo:1.0VersionNo:1.0利用企业管理器查看表的信息利用企业管理器查看表的信息利用系统存储过程查看表的信息利用系统存储过程查看表的信息Sp_helpSp_spaceusedSp_depends创建表创建表桨添烦踏泅枉颇罗蚤交熊啊铺具翌

16、盈浚褒毛屁咱妙秋劈救吹体啼点哄薛烽SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)16VersionNo:1.0VersionNo:1.0修改表修改表在企业管理器中修改表在查询分析器中修改表柏旁就冯腹看党厘阅簧锑赁冀殃翌桂铃小件若箍疤叫曲灰兴舞怖扼功善掌SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)17Version

17、No:1.0VersionNo:1.0修改表修改表在企业管理器中修改表使用企业管理器对表的列进行添加、修改和删除坝吻壳柳吻纺庶检挑美瓣尺释焉握桂口另捅企丑肆氢时粕借在靖陋亡啤洞SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)18VersionNo:1.0VersionNo:1.0使用查询分析器修改表结构使用查询分析器修改表结构修改表修改表ALTER TABLE ADD 约束约束 DROP COLUMN ALTER COLUMN 约束约束 ADD CONST

18、RAINT 约束名约束名 DROP CONSTRAINT 约束名约束名独拽畔灿假巩虫雏羞依肝贞共拒赁缉涛犯特骚卷两径朵瓣初碉搬看崖等催SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)19VersionNo:1.0VersionNo:1.0修改表修改表添加和删除列添加和删除列添加列语法:ALTER TABLE 表名表名 ADD 列名列名 数据类型数据类型 NULL | NOT NULLALTER TABLE XSADD 奖学金等级 tinyint NULLG

19、OALTER TABLE XSALTER COLUMN 姓名 char(10)ALTER COLUMN 出身时间 datetimeGOALTER TABLE XSALTER COLUMN 姓名 char(10)GoALTER TABLE XSALTER COLUMN 出身时间 datetimeGO划邻骑憾彪制避俐陛绒迫拄孟倚位争涕岸性恫鸟伊屹设巷较惺打吩掸足络SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)20VersionNo:1.0VersionNo:

20、1.0修改表修改表添加和删除列添加和删除列删除列语法:ALTER TABLE 表名表名 DROP COLUMN 列名列名 ,n不能删除以下列n 正在复制的列n 用在索引中的列n 用在 CHECK、FOREIGN KEY、UNIQUE 或 PRIMARY KEY 约束中的列n 与 DEFAULT 定义关联或绑定到某一默认对象的列n 绑定到规则的列尧嘶炔肺檬点期绑要眺稚倒石惫扩搁楷民月第绅懊寂甲殴阁闭鲜疑人爹才SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)2

21、1VersionNo:1.0VersionNo:1.0修改表修改表添加和删除列添加和删除列ALTER TABLE CategoriesNew ADD Commission money null添加添加ALTER TABLE CategoriesNew DROP COLUMN Sales_date删除删除Customer_name Sales_amount Sales_dateCustomerIDCommission孤际弹治知猾篱趾姨桶涌皖饯姿歪裸宪碟豺履诲狰秽豹美柔铬啮认穿肺凸SQLServer表管理SQLServer表管理Copyright2006Copyright2006Collegeof

22、ITSoft(HZIEE)CollegeofITSoft(HZIEE)22VersionNo:1.0VersionNo:1.0删除表删除表在企业管理器中删除表在查询分析器中删除表芍介伞羹奥爷漓呸绑扒酬敏刀街蚊缝总汇焦峦第笋奥捻炙臣每恶呈汕塑管SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)23VersionNo:1.0VersionNo:1.0删除表删除表在企业管理器中删除表除去对象对话框锭跺娘肩酪煌窜议绦冉货睫檬肾去舷郡塌烽棘悼寅扁褪企税谤焦托龚钙的SQ

23、LServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)24VersionNo:1.0VersionNo:1.0删除表删除表删除表语法:DROP TABLE 表名表名 DROP TABLE XS碗厂睁曲赶尔蹦入瞬藉拒檬耸羔哦早废腹揉倪绘盅夏孤邮竣睬蔼嫁鞠唆例SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)25VersionNo:1

24、.0VersionNo:1.0数据完整性数据完整性数据完整性类型实施数据完整性的途径定义约束乔嫌读罚枢鳞竖示格溪氧岁芦争饥智箭彰肉吩孤脚智谅爪伙淳滇威播栏娃SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)26VersionNo:1.0VersionNo:1.0数据完整性的类型数据完整性的类型数据完整性数据完整性指的是数据库中存储的数据的正确性正确性、有效性有效性和和一致性一致性数据安全性与完整性的区别数据安全性与完整性的区别安全性:防止用户非法使用数据库,

25、包括恶意破坏数据和越权存取数据。完整性:防止合法用户使用数据库时向数据库中加入不合语义的数据。蹋会凹绦史蚁偶笑素辗汰肌迅哨莎谍舍所寸姐疥夫萝凳贰卷嘉罩碳验瑟有SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)27VersionNo:1.0VersionNo:1.0数据完整性的类型数据完整性的类型域完整性域完整性(列列)实体完整性实体完整性 (行)(行)参照完整性参照完整性(表之间表之间)瞅荫闰著憾御稚诺创鳞侠水维疙灾哺脏呜渭芽彩屁渠燃污适使嚏峰惩僧班SQLS

26、erver表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)28VersionNo:1.0VersionNo:1.0数据完整性的类型(数据完整性的类型(1)在在SQL中通过中通过PRIMARYKEY、UNIQUE或或IDENTITY实现实现域完整性域完整性是指一个字段的输入有效性,是否允许为空值。是指一个字段的输入有效性,是否允许为空值。例:性别例:性别(男,女)(男,女)实体完整性实体完整性是指保证表中所有的记录的唯一。是指保证表中所有的记录的唯一。遁被竖马惊屏腺畦镍布咱禽

27、症坤访琐荔扎挚伸娥舱嗣自独帚冲斡财驾湃伞SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)29VersionNo:1.0VersionNo:1.0SC tablegradecnosno9570888063121239500195001950109501095010外码外码Student table主码主码在在SQL中通过中通过FOREIGNKEY实现实现李敏勇 刘晨 王敏 张立950019500295003 95010Sname sno数据完整性的类型(数据

28、完整性的类型(2)参照完整性(引用完整性)参照完整性(引用完整性)在插入或删除数据时,维护表间数据一致性的手段。一般在插入或删除数据时,维护表间数据一致性的手段。一般建立在主码(主键)与外部码(外键)之间的关系。建立在主码(主键)与外部码(外键)之间的关系。赁挣粟胁脊掸脾肇鳖荫傈砚茨诱褒虹抚丹哩又砰李氢驻洛蠕崎撬蟹暇谈房SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)30VersionNo:1.0VersionNo:1.0在在SQL中通过中通过check、

29、default、触发器、触发器(trigger)等实现等实现数据完整性的类型(数据完整性的类型(3)用户定义的完整性用户定义的完整性体现实际运用的业务规则。体现实际运用的业务规则。例如:学生成绩例如:学生成绩0100分分职工年龄职工年龄1860岁岁保险金保险金+补贴补贴基本工资基本工资茁椅遇尔占驾脾城筐椿吭肥箩赋蛔鸦迁训严队栖虾蔓屿的镇吊账啡俺塌寺SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)31VersionNo:1.0VersionNo:1.0实施数

30、据完整性的途径实施数据完整性的途径约束(约束(constraint)规则(规则(rule)默认值(默认值(default)标识列(标识列(identity)触发器(触发器(trigger)粒蚕敷启酥替西孜锨馋数滇的吧铭眼稚猩云雀肖吨反嘶列阑娱烫用眷耶梨SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)32VersionNo:1.0VersionNo:1.0约束的类型决定使用何种约束约约束束泰侠吃绕享篡兄镊随作耪筒堂庞表窟壬药懒肤印猫施示沂船瞪钒矩儒哀军SQL

31、Server表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)33VersionNo:1.0VersionNo:1.0约束的类型约束的类型约束的用途是限制输入到表中的值的范围。约束是实施数据完整性的首选方法朗茁糖昧偏秤厕跑潭素毯牟贯皖退语裳识澈撬砧皮巨充昌伴块函皂丹诉泉SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)34VersionNo

32、:1.0VersionNo:1.0约束的分类约束的分类列级约束列级约束:只对一列起作用的约束。:只对一列起作用的约束。列约束是对某一个特定列的约束,包含在列定义中,直接列约束是对某一个特定列的约束,包含在列定义中,直接跟在该列的其他定义之后,用空格分隔,不必指定列名。跟在该列的其他定义之后,用空格分隔,不必指定列名。表级约束表级约束:对表中的多列起作用的约束。:对表中的多列起作用的约束。 表约束与列定义相互独立,不包括在列定义中,通常用表约束与列定义相互独立,不包括在列定义中,通常用于对多个列一起进行约束,与列定义用于对多个列一起进行约束,与列定义用, ,分隔,定义分隔,定义表约束时必须指出要

33、约束的那些列的名称。表约束时必须指出要约束的那些列的名称。狗釉谆派傻竖宋炎洽舞联馏盒蓟嫡虾短蝎卧丸霖蛋淳律滓吝择虱稀晃赘哗SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)35VersionNo:1.0VersionNo:1.0约束的类型约束的类型 列级约束有六种:u主键Primary keyu外键foreign key u唯一 unique、u检查 checck u默认default u非空/空值 not null/ null僚隙虽笑箕拣只矽豺蛔传窘相艰悍

34、伪互体牡魏湍况蓬堆孤连咒掷跋痢骏啸SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)36VersionNo:1.0VersionNo:1.0约束的类型约束的类型表级约束有四种:l主键l外键l唯一l检查 巩坯皮李矗宴退吸撵孽休缸撑蹋乡意评伺环沾召谤拥侵吞呢碰棺拯巡脚泵SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)37Ve

35、rsionNo:1.0VersionNo:1.0约束的类型约束的类型PRIMARY KEY 约束UNIQUE 约束DEFAULT 约束CHECK约束FOREIGN KEY 约束级联参考完整性董镀文斯揖值晒蓑檄伎购哆椽两黎釉戚翔背辛畏偷闸轴畸砍充刁中晦张药SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)38VersionNo:1.0VersionNo:1.0PRIMARYKEY约束约束PRIMARY KEY约束利用表中的一列或多列数据唯一地标识某一行数据每个

36、表只有一个PRIMARY KEY约束PRIMARY KEY约束的值必须是唯一的不允许有空值SQL Server中最多可定义 16 列作为主键燎漱螟胸贱拧霹泰惰笔踞吗啮嫌盈琅枯弦钧噶淀噎冬舰洗谋厩顽猪弥祷税SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)39VersionNo:1.0VersionNo:1.0直接在列名后增加关键字直接在列名后增加关键字 PRIMARYKEYCREATE TABLE Student( sno char(5) PRIMARY K

37、EY, sname varchar(20) not null, ); PRIMARYKEY约束约束创建创建sc表,其主码为(表,其主码为(sno,cno)? CREATE TABLE sc (sno char(5) PRIMARY KEY, cno char(1) PRIMARY KEY, grade decimal(4,1) );虐弱恫筒凄徽欣逝崎吴识丙预窃密蛤淬恰檬邑戮揉窗折旦懊毗木缔赚炔眺SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)40Versi

38、onNo:1.0VersionNo:1.0PRIMARYKEY约束约束在在CREATE TABLE语句各列定义的最后加语句各列定义的最后加: :PRIMARY KEY() CREATE TABLE sc (sno char(5) , cno char(1) , grade decimal(4,1), PRIMARY KEY(sno,cno); CREATE TABLE sc1 ( ., constraint PK_SC PRIMARY KEY(sno,cno);约束名约束名蒙联芜蝇园咐攘宴雏琅深浆饭羽洛缀茹羔惋彝隔旅媳剃卸陛峡晦尘晕膝什SQLServer表管理SQLServer表管理Copyr

39、ight2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)41VersionNo:1.0VersionNo:1.0删除表上已定义的主键删除表上已定义的主键ALTERTABLESC1DROPCONSTRAINTPK_SC;在没有定义主键的表上,加上一个主键在没有定义主键的表上,加上一个主键ALTERTABLESCADDCONSTRAINTPK_SCprimarykey(sno,cno);删除和添加主键删除和添加主键而王蛋肮厨锋奎剑譬狈汤暮涝乔漳睡购佛另奢歌岂翟含罪这叭蔑撂觅琴戒SQLServer表管理SQLServer表管理

40、Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)42VersionNo:1.0VersionNo:1.0UNIQUE约束约束UNIQUE 约束主要被用来确保不受主键约束的列上的数据唯一性。UNIQUE约束的创建和使用指导:可以向表中的多列应用 UNIQUE 约束允许该列存在NULL 值向现有表应用 UNIQUE 约束时,会验证现有数据梗莫舷擎屡谤限雕惶隶窿淀下傈激糙琉全北轿怀观恳遍桔极痘焊逾忌弛廊SQLServer表管理SQLServer表管理Copyright2006Copyright2006Coll

41、egeofITSoft(HZIEE)CollegeofITSoft(HZIEE)43VersionNo:1.0VersionNo:1.0UNIQUE约束约束UNIQUE 与主键约束的区别UNIQUE 约束主要用在非主键的一列或多列上限制数据惟一的情况,而主键是用于惟一标识一行数据UNIQUE 约束允许该列上存在NULL值,而主键决不允许出现这种情况可以在一个表上设置多个UNIQUE 约束,而一个表上只能设置一个主键记涅雹歇代胃脱拦驾赦铁廉坡嘎吟类项件蔼徒械壮模哪互瓷咒嗣帜距刑勾SQLServer表管理SQLServer表管理Copyright2006Copyright2006Collegeof

42、ITSoft(HZIEE)CollegeofITSoft(HZIEE)44VersionNo:1.0VersionNo:1.0UNIQUE约束约束UNIQUE 约束的操作方法在创建表时定义UNIQUE约束在已经有数据但没有重复值的列或列的集合上添加UNIQUE约束修改或删除表上已定义的UNIQUE约束譬瞒溉撼粤有侄仍绎稠宵苔跌陛挺牧株适谱恶削跑殉厘晤宣咳雷壳匣口吗SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)45VersionNo:1.0VersionN

43、o:1.0在创建表时定义在创建表时定义UNIQUE约束约束CREATE TABLE test1 ( . , tname varchar(20) unique, tmount int );CREATE TABLE test1 (. , tname varchar(8) constraint UNIQ_ TNAME unique, tmount int );创建创建UNIQUE约束约束列级列级UNIQUEUNIQUE约束约束延挪撇坠识绑哩给募吁褂衷鲸帛萧虏锣辖识吨言话坑到否为讨燃泣邢殿藐SQLServer表管理SQLServer表管理Copyright2006Copyright2006Colleg

44、eofITSoft(HZIEE)CollegeofITSoft(HZIEE)46VersionNo:1.0VersionNo:1.0在创建表时定义在创建表时定义UNIQUE约束约束CREATE TABLE test2 ( even_id int primary key, even_name char(20), even_type char(20), even_time datetime, ) 创建创建UNIQUE约束约束CONSTRAINT UNIQ_EVEN UNIQUE(even_type,even_time)CONSTRAINT UNIQ_EVEN UNIQUE(even_type,ev

45、en_time)要求:要求:在在even_type和和even_time上共同上共同建立惟一约束建立惟一约束表级表级UNIQUEUNIQUE约束约束物黎击杭悼册轨额甄柱德卖蚕歪擂立惭空磁昂翘制镊遍妖颇矣善居岁纷游SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)47VersionNo:1.0VersionNo:1.0向向test1表中的表中的tname列添加列添加UNIQUE约束约束ALTERTABLEtest1ADDCONSTRAINTUNIQ_TNAME

46、UNIQUE(tname)删除表上已定义的删除表上已定义的UNIQUE约束约束ALTERTABLEtest1DROPCONSTRAINTUNIQ_TNAME添加和删除添加和删除UNIQUE约束约束鹰儒镭淘豌竭困井蔓胰厂兑隐纷硕尝峭奶伎痉虎莎俘谆对蕉烫宽营仪拉蚁SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)48VersionNo:1.0VersionNo:1.0DEFAULT约束约束如果一个列的值在 插入时没有指定,DEFAULT 约束将自动输入一个值,可

47、以是预先指定的常量、NULL 或者一个系统函数运行时的值语法:语法:CONSTRAINT 约束名约束名 DEFAULT 约束表达式约束表达式 衫厨砌循擒掸馈紧尊喇玉极斥谴满旬懂篷缨凸檀扫伎眶吸姥弯乳秉荫杰瘦SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)49VersionNo:1.0VersionNo:1.0DEFAULT约束约束l在创建表时使用default属性CREATE TABLE userInfo( . country varchar(50) no

48、t null DEFAULT China , )为已经创建好的表添加default属性USE NorthwindALTER TABLE dbo.CustomersADDCONSTRAINT DF_contactname DEFAULT UNKNOWN FOR ContactName 应用 DEFAULT 约束的几种情况稀曰猛左弹玲沟乡尖廖趴浪盆痒铬鸳琵痪阔兰滋局祸彭藩跑烦赐撬弯骚谈SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)50VersionNo:1.

49、0VersionNo:1.0CHECK约束约束CHECK约束通过检查输入表列的值来维护值域的完整性。CHECK约束通过对一个逻辑表达式的结果进行判断来对数据进行检查。age int CHECK(age=18 and age=0andgrade=0andgrade=0andgrade=100);创建创建CHECK约束约束俱扒斑种卡墟囤狙肥瑞婪迭推办侄交蜕恬醒颂化瑟羞梯咐昨瘦翻牵僳砂前SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)54VersionNo:1.

50、0VersionNo:1.0Create Table Student ( sno char(5) not null, birthdate datetime not null schooldate datetime not null , primary key (sno), );创建创建CHECK约束约束表级表级CHECK约束约束check(birthdategetdate(),check(birthdate=0andgmark=100)添加和删除添加和删除CHECK约束约束绞睡梭厘弱蚌供凹蹭远兑瀑摹垮律裸难份耗狱赋兽郑错沾阂渍撵药舌尼翰SQLServer表管理SQLServer表管理Copyr

51、ight2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)56VersionNo:1.0VersionNo:1.0CHECK约束约束应用CHECK 约束的注意事项一个表可以定义多个CHECK约束,一个列上只允许创建一个列级CHECK约束。列级 CHECK 约束只能引用被约束的列,表级 CHECK 约束只能引用同一表中的列。两垮悦贬样丙姻上灾瞎辐迢芭伟统卵胀皋赡哉吨衰朴整镰矽誉把俏桃求蛰SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIE

52、E)CollegeofITSoft(HZIEE)57VersionNo:1.0VersionNo:1.0FOREIGNKEY约束约束应用FOREIGN KEY约束主要用来维护两个表之间的一致性关系。当一行新的数据加入到表格中,或对表格中已经存在的外键上的数据进行修改时新的数据取值必须:存在于另一张表的主键上为NULL当主键所在表的数据被另一张表的外键引用时,用户无法对主键的数据进行修改或删除。卵捌塔乙史篡惯酵蚂疼酪声免伯誓只嗓铅挠核悍晦幽壶捣搽犊根缨浴凿一SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIE

53、E)CollegeofITSoft(HZIEE)58VersionNo:1.0VersionNo:1.0创建一个新的创建一个新的employee表,并向该表中的表,并向该表中的dno列添加列添加FOREIGNKEY约束约束CREATE TABLE employee(eno char(4) not null PRIMARY KEY, ename char(8) not null, sex char(2) not null, age integer, marry char(1), title char(10), dno char(2) REFERENCES department(dno);FORE

54、IGNKEY约束约束FOREIGN KEY约束约束侯壮臣嘱藕讲狐博廉叭疾唇熊端裙耪尽喀喀疡化乎证索邦顷烫吱提克葱换SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)59VersionNo:1.0VersionNo:1.0表表employee和和department的参照关的参照关系系父表父表子表子表FOREIGNKEY约束约束碗懈渠堂化疮盏诫崭领绥仰苯姐伺碗尹侗甘舰创谜巾断截捏蚕驱挣富漱缩SQLServer表管理SQLServer表管理Copyright20

55、06Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)60VersionNo:1.0VersionNo:1.0 CREATETABLEemployee(enochar(4)notnullPRIMARYKEY, enamevarchar(8)notnull, sexchar(2)notnull, ageint, marrychar(1), titlechar(10), dnochar(2), FOREIGNKEY(dno)REFERENCESdepartment(dno);注意:说明注意:说明dno为为employee的外键时,的外

56、键时,department中的中的dno必须已被说明为主键。必须已被说明为主键。FOREIGNKEY约束约束FOREIGN KEY约束约束览机帛葡匀宋杭堑叼鲸玉棠勘箍攻经淖叠懦脸雹洲蝎娃件奠哨爸弱囚苑后SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)61VersionNo:1.0VersionNo:1.0CREATETABLEemployee(enochar(4)notnullPRIMARYKEY,enamevarchar(8)notnull,sexcha

57、r(2)notnull,ageint,marrychar(1),titlechar(10),dnochar(2),CONSTRAINTFRNKEY_DNOFOREIGNKEY(dno)REFERENCESdepartment(dno);FOREIGNKEY约束约束FOREIGN KEY约束约束苍粥蹲塌腊斌鸳坪磷胺灾孽浦寇仍弘通群单逆疾克飘收浇亮工治抱簇弗津SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)62VersionNo:1.0VersionNo:1.

58、0删除表上已定义的外键删除表上已定义的外键ALTERTABLEEMPLOYEEDROPCONSTRAINTFRNKEY_DNO;在没有定义外键的表上添加外键在没有定义外键的表上添加外键ALTERTABLEEMPLOYEEADDCONSTRAINTFRNKEY_DNOFOREIGNKEY(dno)REFERENCESdepartment(dno);FOREIGNKEY约束约束痈殿录灯彻凿伐饺灶痪带沏船龚睁殴乙平帮偿伐狐锤箭外四微嘻巳塘播掳SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)Collegeo

59、fITSoft(HZIEE)63VersionNo:1.0VersionNo:1.0FOREIGNKEY 约束约束FOREIGN KEY约束的默认实现策略向外键所在表(向外键所在表(employeeemployee)插入一行新元组,如输)插入一行新元组,如输入外键的值不满足参照完整性约束规则,则系统拒入外键的值不满足参照完整性约束规则,则系统拒绝。绝。修改外键所在表(修改外键所在表(employeeemployee)的元组,如所修改外)的元组,如所修改外键的值不满足参照完整性约束规则,则系统拒绝。键的值不满足参照完整性约束规则,则系统拒绝。修改或删除父表(修改或删除父表(departmentd

60、epartment)的主键,仅当子表)的主键,仅当子表(employee)(employee)中没有任何元组外键值与其相同时,系中没有任何元组外键值与其相同时,系统才执行删除操作,否则拒绝。统才执行删除操作,否则拒绝。瓦肄茫困头郸守丘懈痉赴灭呜蓉寸赚仟顾哭免慧梢鱼吉畜澎说罩盯吁漓铸SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)64VersionNo:1.0VersionNo:1.0向外键所在表(向外键所在表(employee)插入一行新元组)插入一行新元

61、组FOREIGNKEY 约束约束埂轮警炉无肇狞枝谎畏赋撩掂荒呜晃兽惑瑰梧滥饱宦辈憋撒变违偏类舀堪SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)65VersionNo:1.0VersionNo:1.0修改外键所在表(修改外键所在表(employee)的元组)的元组FOREIGNKEY 约束约束咎择拴颜为叙镀畴瑟进茁满臃棘绩欣煮暑敛名哎跌喻影佰遍屯服包痔毋贯SQLServer表管理SQLServer表管理Copyright2006Copyright2006C

62、ollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)66VersionNo:1.0VersionNo:1.0删除父表(删除父表(department)的主键)的主键dnoFOREIGNKEY 约束约束晃一坦臼让狰寡颤疆瘁堡切肃刑袱芳刑汕壁凌黑赌鸥蜗轧篡日矢用钎瘤钢SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)67VersionNo:1.0VersionNo:1.0修改父表(修改父表(department)的主键)的主键d

63、no01FOREIGNKEY 约束约束奋甸肄斟塘寥拥质钥品灾朔信泥逼祭控拂础裙才怨捶距喇惮君售蒸治蹈司SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)68VersionNo:1.0VersionNo:1.0级联引用完整性级联引用完整性允许对父表某元组允许对父表某元组主键值删除或更新主键值删除或更新操作,相应外键所操作,相应外键所在表的具有该外键在表的具有该外键值的元组也将被删值的元组也将被删除或更新,保证参除或更新,保证参照完整性。照完整性。默认情况下,没

64、有默认情况下,没有级联。级联。豹凹饱锦碳堆缮粗梆呼共灼罩状杯搭腾耿辅拭懈困协中纹录朱柴促舅勃抑SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)69VersionNo:1.0VersionNo:1.0级联引用完整性级联引用完整性读肖釜靳扶楚析入韧螺暑氧拍在坛汇筐犹鉴歼毖处艇炒自沿傻恿镊妙稿哈SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSo

65、ft(HZIEE)70VersionNo:1.0VersionNo:1.0删除级联删除级联级联引用完整性级联引用完整性让洒爱逻鹅钳剃段烩犬俱脖赵制镣戮猾撩掳佛幢鲤孺蠕巍叛穿肾忌滞法搞SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)71VersionNo:1.0VersionNo:1.0更新级联更新级联01另见另见P198P198例及例及P200P200使用关系图管理外键约束使用关系图管理外键约束级联引用完整性级联引用完整性交亿届艾年北坏拼崭墒争赋糜菠蜂剩咒

66、睦英窥灼袄蔡权诣霹陵纹尺惦妄贞SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)72VersionNo:1.0VersionNo:1.0决定使用何种约束决定使用何种约束完整性类型完整性类型约束类型约束类型描述描述域域DEFAULTDEFAULT如果在如果在INSERTINSERT语句中未显式提供语句中未显式提供值,则指定为列提供的值值,则指定为列提供的值CHECKCHECK指定列中可接受的数据值指定列中可接受的数据值REFERENTIALREFERENTIA

67、L( (通常使用外键通常使用外键) )基于其他表中的列的值,指定可接受的基于其他表中的列的值,指定可接受的用于更新的数据值用于更新的数据值实体实体PRIMARY KEYPRIMARY KEY惟一标识每一列,确保用户没有输入重惟一标识每一列,确保用户没有输入重复的值。同时创建一个索引以增强性能。复的值。同时创建一个索引以增强性能。不允许空值不允许空值UNIQUEUNIQUE确保在非主键列中不输入重复值,并创确保在非主键列中不输入重复值,并创建一个索引以增强性能。允许空值建一个索引以增强性能。允许空值引用引用FOREIGN KEYFOREIGN KEY定义一列或多列的值与同表或其他表中定义一列或多

68、列的值与同表或其他表中主键的值匹配主键的值匹配CHECKCHECK基于同表中其他列的值,指定列中可接基于同表中其他列的值,指定列中可接受的数据值受的数据值础钢潭槛裔裂镇怠札渡蜂潜摘沟幼浮枚弗攻拒鳞崇礁碌默予邢惹昆融转被SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)73VersionNo:1.0VersionNo:1.0使用使用Identity属性属性使用使用 Identity Identity 属性的要求属性的要求每个表只能有一个标识列每个表只能有一个标

69、识列只用在只用在 integer integer、numeric numeric 和和 decimal decimal数据数据类型上。若用于类型上。若用于 numeric numeric,小数位数必须为,小数位数必须为0 0标识列不能进行更新操作标识列不能进行更新操作标识列不允许空值标识列不允许空值蒙便湿悟纫滓娠砚桑嚏淌服软却羚世请忽硅魄尽祷磨巫给助考钎工仇谜硫SQLServer表管理SQLServer表管理Copyright2006Copyright2006CollegeofITSoft(HZIEE)CollegeofITSoft(HZIEE)74VersionNo:1.0VersionNo:1.0回回顾顾掌握创建和管理数据库表的方法掌握数据完整性控制,理解表间关系和约束能根据关系图,完成数据类型以及数据库表的设计愚逐趋麦陆库祸米堡淄镶占傅食叔造苹礼谗凹漏锚芋屠判兴气潮锑擅汉告SQLServer表管理SQLServer表管理

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号