第4章_数据库中表的基本操作_第1页
第4章_数据库中表的基本操作_第2页
第4章_数据库中表的基本操作_第3页
第4章_数据库中表的基本操作_第4页
第4章_数据库中表的基本操作_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第四章第四章 数据库中表的基本操作数据库中表的基本操作SQL Server 数据库应用技术SQL Server 20002本章主要内容本章主要内容l4.1 数据库对象l4.2 数据表的设计与创建l4.3 定义约束l4.4 使用默认和规则SQL Server 200034.1 4.1 数据库对象数据库对象 下面介首先绍数据库中各种对象的作用,使大家对各种数据库对象有一定的了解,以便进一步深入学习。 SQL Server的数据库有11种对象,包括关系图、表、视图、存储过程、用户、角色、规则、默认、用户定义的数据类型、用户定义的函数和全文目录。SQL Server 20004数据表数据表l 表是数据

2、库中最重要的数据库对象,是数据库的基本组成部分,是储存数据的逻辑载体。关系型数据库中的表都是二维的,表的一列称为一个字段(域);表的一行称为一个记录 。lSQL Server 2000中,每个数据库最多可存储20亿个数据表,每个表中最多允许1024列。表的行数没有限制,与磁盘存储空间有关。数据库对象数据库对象数据表数据表SQL Server 20005 数据表数据表lSQL Server 2000有两类表,一类是永久表,这类表一旦创建将一直存储在硬盘上,除非被用户删除;另一类是临时表,这类表在用户退出时自动被系统删除。(临时表又分为局部临时表与全局临时表。局部临时表的名称以开头,仅可由创建者本

3、人在创建后立即使用,一旦创建者断开连接,该表将会消失;全局临时表的名称以开头,创建者在创建后可以由多个授权用户立即使用,一旦最后使用的用户断开连接,该表将会消失。)数据库对象数据库对象数据表数据表SQL Server 20006 约束约束l建立和使用约束的目的就是保证数据的完整性.约束是SQL Server强制实行的应用规则,它通过限制列,行和表之间的数据来保证数据完整性.l数据完整性分为:实体完整性,域完整性,参照完整性和用户完整性数据库对象数据库对象约束约束SQL Server 20007 默认默认l对于某些字段,可以在程序中制定默认值,以方便用户;也可以先定义好,需要时将它绑定到一列或多

4、列上.l在表中插入数据行时,系统自动为没有指定数据的列提供事先定义的默认值数据库对象数据库对象默认默认SQL Server 20008 规则规则l规则的作用就是当向表中插入数据时,指定该列接受数据值的范围.l规则与默认一样,只需在数据库中定义一次,就可以被多次应用于任意表中的一列或多列上.数据库对象数据库对象规则规则SQL Server 20009 视图视图l视图是从一个或多个表(或视图)导出的表.是数据库提供给用户以多种角度观察数据库中数据的重要机制,常用于集中、简化和定制显示数据库中的信息.l视图是一种虚拟表,它不是数据库中的实际存在的表,其内容来自于其他一些基表数据库对象数据库对象视图视

5、图SQL Server 200010 存储过程存储过程l存储过程是一组为了完成特定功能的SQL语句集,是预先编译好的,存储在服务器上,由应用程序激活,而不是由SQL Server自动执行lSQL Server中的存储过程分为两类: 系统提供的存储过程和用户自定义的存储过程.数据库对象数据库对象存储过程存储过程SQL Server 200011 触发器触发器l触发器是一种特殊类型的存储过程,它不同于前面介绍存储过程.l触发器主要是通过事件进行触发而被执行,而存储过程可以通过存储过程的名字而被直接调用数据库对象数据库对象触发器触发器SQL Server 2000124.2 数据表的设计和创建数据表

6、的设计和创建l4.2.1 SQL Server中的数据类型l4.2.2 数据表设计与创建l4.2.3 修改表结构l4.2.4 插入、更新和删除表数据SQL Server 2000134.2.1 4.2.1 数据类型数据类型l一一. 系统数据类型系统数据类型l二二. . 用户自定义数据类型用户自定义数据类型 SQL Server 200014一一.系统数据类型系统数据类型数数 据据 类类 型型-系统数据类系统数据类型型 1. 整型数据类型 2. 浮点数据类型 3. 十进制数据类型 4. 字符数据类型 5. Unicode字符串数据类型 6.日期和时间数据类型 7. 货币数据类型货币数据类型 8.

7、 位数据类型位数据类型 9. 二进制数据类型二进制数据类型 10. 特殊数据类型特殊数据类型 11. 新增数据类型新增数据类型 12. 空值空值SQL Server 2000151. 整型数据类型整型数据类型l整型数据类型是最常用的数据类型之一,它主要用来存储整数,可以直接进行数据运算,而不必使用函数转换。lbigint: 用于存储从-263到263-1之间的所有正负整数。(占8个字节)lint(integer):int(或integer)数据类型可以存储从-231(-2147483648)到231-1(2147483647)范围之间的所有正负整数。(占4个字节) lsmallint:可以存储

8、从-215(-32768)到215-1范围之间的所有正负整数 。(占2个字节)ltinyint:可以存储从0到255范围之间的所有正整数。(占1个字节) 数数 据据 类类 型型-系统数据类系统数据类型型SQL Server 2000162. 浮点数据类型浮点数据类型l浮点数据类型用于存储实数。浮点类型的数据在SQL Server中无法按二进制算法精确,表示时可能会有舍入误差,采用只入不舍的方式进行存储 。lreal:可以存储正的或者负的十进制数值,最大可以有7位精确位数。(占4个字节) lfloat:可以精确到第15位小数,其范围从-1.79E-308到1.79E+308。 (占8个字节) f

9、loat数据类型也可以写为float(n)的形式,n为115之间的整数值。当n取17时,系统用4个字节存储它;当n取815时,用8个字节存储它。数数 据据 类类 型型-系统数据类系统数据类型型SQL Server 2000173. 十进制数据类型十进制数据类型l与浮点数据类型相似,十进制数据类型也是用来存储实数,但它是一种不带舍入的精确的浮点数ldecimal和numeric:Decimal数据类型和numeric数据类型完全相同,它们可以提供小数所需要的实际存储空间,但也有一定的限制,可以用2到17个字节来存储从-1038-1到1038-1之间的数值。定义这种类型的数据时,可以指定精度及小数

10、位数. 可以将其写为decimal(p,s)的形式。 例如:decimal(10,5),表示最多可存放10位数字,并且小数点后有5位数数 据据 类类 型型-系统数据类系统数据类型型SQL Server 2000184. 字符数据类型字符数据类型l字符数据类型可以用来存储各种字母、数字符号和特殊符号及他们的组合。(如:”nanjing”,”1234-#$”都是合法的字符数据)l Char:固定长度的非unicode字符数据.其定义形式为char(n),其中n值不能超过8000,每个字符和符号占用一个字节的存储空间。 lVarchar:可变长度的非unicode字符数据.其定义形式为varchar

11、(n)。l Text:用于存储大量文本数据,其容量理论上为1到231-1(2147483647)个字节,但实际应用时要根据硬盘的存储空间而定。数数 据据 类类 型型-系统数据类系统数据类型型SQL Server 2000195. Unicode数据类型数据类型lunicode标准中每个字符使用两个字节来编码,可以解决大字母表的问题.lnchar:固定长度,其定义形式为nchar(n).最大长度为4000个字符. lnvarchar:可变长度其定义形式为nvarchar(n).最大长度为4000个字符l ntext:与text数据类型类似,存储在其中的数据通常是直接能输出到显示设备上的字符,显示

12、设备可以是显示器、窗口或者打印机。数数 据据 类类 型型-系统数据类系统数据类型型SQL Server 2000206. 日期和时间数据类型日期和时间数据类型lDatetime:用于存储日期和时间的结合体 。它可以存储从公元1753年1月1日零时起到公元9999年12月31日23时59分59秒之间的所有日期和时间 。lSmalldatetime:与datetime数据类型类似,但其日期时间范围较小,它存储从1900年1月1日到2079年6月6日内的日期。l默认情况下,日期型数据的格式是按照”月/日/年”的顺序来设定的. 数数 据据 类类 型型-系统数据类系统数据类型型SQL Server 20

13、00217. 货币数据类型货币数据类型 lmoney:用于存储货币值,存储在money数据类型中的数值以一个正数部分和一个小数部分存储在两个4字节的整型值中,存储范围为-922337213685477.5808到922337213685477.5808,精度为货币单位的百分之一。(共占8个字节)lsmallmoney:与money数据类型类似,但其存储的货币值范围比money数据类型小,其存储范围为-214748.3468到214748.3467。数数 据据 类类 型型-系统数据类系统数据类型型SQL Server 2000228. 位数据类型位数据类型lbit:称为位数据类型,其数据有两种取

14、值:0和1,长度为1字节,适用于存储一个逻辑值. 数数 据据 类类 型型-系统数据类系统数据类型型SQL Server 2000239. 二进制数据类型二进制数据类型lbinary:其定义形式为binary(n),数据的存储长度是固定的,即n+4字节,当输入的二进制数据长度小于n时,余下部分填充0。l varbinary:其定义形式为varbinary(n),数据的存储长度是变化的,它为实际所输入数据的长度加上4字节。其它含义同binary。lImage:用于存储照片、目录图片或者图画,其理论容量为231-1(2147483647)个字节的数据。数数 据据 类类 型型-系统数据类系统数据类型型

15、SQL Server 20002410. 特殊数据类型特殊数据类型ltimestamp:亦称时间戳数据类型,它提供数据库范围内的唯一值,任何一个表中只能有一个timestamp列,该列的值在进行数据修改时由SQL Server自动更新.反应数据库中数据修改的相对顺序,相当于一个单调上升的计数器。luniqueidentifier:用于存储一个16字节长的二进制数据类型,它是SQL Server根据计算机网络适配器地址和CPU时钟产生的唯一号码而生成的全局唯一标识符代码(Globally Unique Identifier,简写为GUID)。在SQL Server中,由NEWID函数来生成GUI

16、D.即使在不同的计算机及不同的数据库中,也不会有相同的GUID.数数 据据 类类 型型-系统数据类系统数据类型型SQL Server 20002511. 新增数据类型新增数据类型l sql_variant:用于存储除文本、图形数据和timestamp类型数据外的其它任何合法的SQL Server数据。ltable:用于存储对表或者视图处理后的结果集。这种新的数据类型使得变量可以存储一个表,从而使函数或过程返回查询结果更加方便、快捷。数数 据据 类类 型型-系统数据类系统数据类型型SQL Server 20002612. 空值空值l空值(NULL):不等于0,代表空白或零长度的字符串,意味着没有

17、输入,表明未知或未定义l避免用空值直接参与运算l尽量不要允许用空值(用默认值解决没有输入的问题)SQL Server 200027二二.用户自定义数据类型用户自定义数据类型l在SQL Server2000中,用户定义的数据类型是基于系统数据类型的.在创建一个用户定义的数据类型时,必须给出以下三部分信息: a.新数据类型名 b.这种数据类型是基于哪种系统数据类型的 c.数据类型可否为空l若用户定义的数据类型放在某个用户数据库中,则这种数据类型仅能在此库中使用.若定义在model数据库中,则所以的用户数据库均可使用该数据类型.l有两种方式可以创建用户定义的数据类型 1. 使用企业管理器创建用户定义

18、数据类型 2. 利用系统存储过程sp_addtype创建用户定义数据类型数数 据据 类类 型型-自定义数据类型自定义数据类型SQL Server 2000282.用用sp_addtype创建用户定义数据类型创建用户定义数据类型l系统存储过程sp_addtype为用户提供了T_SQL语句创建自定义数据类型的途径,其语法形式如下: sp_addtype type, system_data_type, NULL|NOT NULL|NONULLl命令说明:l type:是用户自定义数据类型的名称,该名称必须遵循标识符的规则,而且在每个数据库中必须唯一。数数 据据 类类 型型-自定义数据类型自定义数据类

19、型SQL Server 200029l system_data_type:是用户自定义数据类型所基于的系统数据类型(如char、int等)。可能取值有2种情况: a.当只是给一个基类型重命名时,取值即为该基类型名,基类型可为SQL Server支持的不需指定长度和精度的系统类型.例如:int , bit , real等. b.若要指定基类型及允许的数据长度或小数点后保留的位数,则必须用括号将数据长度或指定的保留位数括起来.并用单引号将该参数引起来. 例:char(n) , binary(n) l NULL|NOT NULL|NONULL:指明用户定义的数据类型处理空值的方式,默认值为NULL。

20、数数 据据 类类 型型-自定义数据类型自定义数据类型SQL Server 200030l例4.1:在student数据库中创建一个名为birthday,基于smalldatetime数据类型,该列不允许为空值的用户数据类型l例4.2: 在student数据库中创建一个名为gdqy,基于varchar(10)数据类型,该列允许为空值. use student go exec sp_addtype birthday,smalldatetime, not null use student go exec sp_addtype gdqy, varchar(10) , nullSQL Server 20

21、0031例:自定义一个地址数据类型。例:自定义一个地址数据类型。 l其运行结果如下:l(所影响的行数为 1 行)l类型已添加。数数 据据 类类 型型-自定义数据类型自定义数据类型exec sp_addtype address, varchar(80), not nullSQL Server 200032删除自定义的地址数据类型。删除自定义的地址数据类型。l1.用企业管理器l2. 利用系统存储过程sp_droptype删除用户自定义数据类型命令格式: sp_droptype type_name命令说明:type表示要删除的用户自定义数据类型的名称 。数数 据据 类类 型型-自定义数据类型自定义数

22、据类型SQL Server 200033lexec sp_droptype birthday其运行结果如下: (所影响的行数为 1 行) (所影响的行数为 0 行) 类型已除去。数数 据据 类类 型型-自定义数据类型自定义数据类型SQL Server 200034l 在SQL Server数据库中,表是包含数据库中所有数据的数据库对象,用来存储各种各样的信息。 表是由行和列组成的. l 创建数据表分两个步骤:首先定义一个数据表的结构;其次是向数据表中添加数据。定义数据表结构主要就是定义字段(列)。字段又叫数据项,是表中不可再分的单元。定义字段包括定义:数据表所包含的字段名、字段数据类型和字段长

23、度等。l 在SQL Server 2000中,一个数据库中最多可以创建20亿个表,用户创建数据库表时,最多可以定义1024列。在同一数据库的不同表中,可以有相同的字段,但在同一个表中不允许有相同的字段,而且每个字段都要求数据类型相同。 4.2.2 4.2.2 数据表设计与创建数据表设计与创建数据表设计与创建数据表设计与创建SQL Server 2000354.2.2 4.2.2 数据表设计与创建数据表设计与创建l表是存储各种数据的载体,具有以下特点: 1.在特定的数据库中表名是唯一的,在特定的表中,列名是唯一的,但不同的表可以有相同的列名 2.表是由行和列组成的,行又称为记录,列被称为字段.行

24、和列的次序是任意的. 3.数据行在表中是唯一的,行的唯一性可以通过定义主键来实现,在一个表中,不允许有两个完全相同的行存在.数据表设计与创建数据表设计与创建SQL Server 2000364.2.2 4.2.2 数据表设计与创建数据表设计与创建l1.设计数据库中每个表的结构l2.统计数据库中每个表的数据l3.创建数据表的实现 SQL Server 2000提供了两种方法创建数据库表,第一种方法是利用企业管理器(Enterprise Manager)创建表;另一种方法是利用Transact-SQL语句中的create命令创建表。数据表设计与创建数据表设计与创建SQL Server 200037

25、一一. 利用企业管理器创建表利用企业管理器创建表l步骤如下: 第一步:打开“数据库”文件夹,展开已创建的“student”数据库,右击”表”,选择 “新建表”菜单项。 第二步:单击该菜单项,便出现表设计器,在表设计器中设置该表的字段属性。 设计器的上半部分有一个表格,在这个表格中输入列的属性,表格的每一行对应一列。对每一列都需要进行以下设置,其中前三项是必须在建表时给出的,它们是: (1)列名 (2)数据类型:数据类型是一个下拉列表框,其中包括了所有的系统数据类型和数据库中的用户自定义数据类型。 数据表设计与创建数据表设计与创建SQL Server 200038 (3)长度:如果选择的数据类型

26、需要长度,则指定长度。 (4)允许空:单击鼠标,可以切换是否允许为空值的状态,勾选说明允许为空值,空白说明不允许为空值,默认状态下是允许为空值的。 表设计器的下半部分是特定列的详细属性,包括是否是标识列、是否使用默认值等。逐个定义好表中的列. 第三步:定义好所有列后,单击工具栏上的保存按扭,在弹出的“选择”名称对话框的文本输入框中输入要创建的数据表名 ,然后单击确定,保存设置并退出,新表即创建完成, 数据表设计与创建数据表设计与创建SQL Server 200039l创建表的语句是create table.其语法形式如下: create table table_name (column_nam

27、e date_type null|notnull ,n) 在上述语法形式中:ltable_name:为新创建的表指定名字lcolumn_name:列名ldate_type:列的数据类型和宽度lnull|notnull:指定的列是否允许为空l,n):允许创建多个字段二二. 利用利用SQL语句创建表语句创建表数据表设计与创建数据表设计与创建SQL Server 200040create table department( department_id char(6) not null, department_name nvarchar(20) not null, department_header

28、nvarchar(8) )例例: 用用create table语句创建表语句创建表department.该表有三个该表有三个字段字段:系号系号(department_id),系名系名(department_name),系系主任主任(department_header).数据表设计与创建数据表设计与创建SQL Server 2000414.2.3 修改表结构修改表结构l1.利用企业管理器增加、删除和修改列。在企业管理器中,打开指定的服务器中要修改表的数据库,用右键单击要进行修改的表,从弹出的快捷菜单中选择设计表选项,则会出现设计表对话框,在该对话框中,可以利用图形化工具完成增加、删除和修改列的操

29、作。l2.利用Transact-SQL语言中的Alter table命令增加、删除和修改字段。修修 改改 表表 结结 构构SQL Server 200042A.用用SQL语句修改表结构语句修改表结构-添加列添加列l 向表中增加一列时,应使新增加的列有默认值或允许为空值,SQL Server将向表中已存在的行填充新增列的默认值或空值,如果既没有提供默认值也不允许为空值,那么新增列的操作将出错。 向表中添加列的语句格式如下: ALTER TABLE 表名 ADD 列名 列的描述l【例4.6】 向stud_info表中添加”身份证号码”列,数据类型为varchar,允许为空值 Use student

30、 go alter table stud_info add 身份证号码身份证号码 varchar null修修 改改 表表 结结 构构SQL语句语句SQL Server 200043B.用用SQL语句修改表结构语句修改表结构-删除列删除列 如果某一列不再需要,可将其删除,但有下列情况不可删除: 该表正在复制 用在索引中的列 用在CHECK、FOREIGN KEY 、UNIQUE或PRIMARY KEY 约束中的列。 与DEFAULT定义关联或绑定到某一默认对象。 绑定到规则的列。 已注册为全文本支持。 用作表的全文键。 删除一列的语句格式为: ALTER TABLE 表名 DROP COLUM

31、N 列名修修 改改 表表 结结 构构SQL语句语句SQL Server 200044l【例4.7】 删除 stud_info表中的”身份证号码”列。 Use student go alter table stud_info drop column 身份证号码 go修修 改改 表表 结结 构构SQL语句语句SQL Server 200045C.用用SQL语句修改表结构语句修改表结构- 修改列定义修改列定义 表中的每一列都有一组属性,如列名、数据类型、数据长度以及是否允许为空值等,列的所有属性构成列的定义,这些属性都可以在表创建好以后修改。 修改列定义的语句格式为: ALTER TABLE 表名

32、ALTER COLUMN 列名 列的描述 【例8.10】 将stud_info表的birthday列的数据类型改为smalldatetime。 默认状态下,列是被设置为允许空值的,将一个原来允许空值的列改为不允许空值,必须在以下两个条件满足时才能成功: (1)列中没有存放是空值的记录 (2)在列上没有创建索引。 Use student go alter table stud_info alter column birthday smalldatetime修修 改改 表表 结结 构构SQL语句语句SQL Server 2000463.使用使用drop语句删除数据表语句删除数据表lDelete语句

33、只能删除数据库中表的记录行,但删除行后的表仍然在数据库中,可使用drop语句从数据库中删除表.l其语法格式为: drop table 数据表名l注意:DROP table语句不能删除系统表.l补充:重命名表 可使用系统存储过程: sp_rename table_old_name , table_new_name修修 改改 表表 结结 构构删除表删除表SQL Server 2000474.2.4 插入、更新和删除表数据插入、更新和删除表数据l1.插入数据l2.数据库中表的查看l3.修改数据l4.删除数据SQL Server 2000481. 插入数据插入数据1.在企业管理器中向数据表插入数据的步

34、骤如下: (1)展开数据库,单击“表”。 (2)在详细列表中右击需插入数据的表名称,在弹出菜单中选择“打开表”下的“返回所有行”命令。 (3)如果屏幕弹出SQL Server登录窗口,则输入登录帐号和密码,按“确定”按钮后,屏幕显示数据表的内容. (4)此时弹出查询设计器的结果窗格,在该窗格中可以向表中添加新记录,也可以修改和删除表中已有的记录。SQL Server 2000491. 插入数据插入数据2使用INSERT语句INSERT INTO 表名 (字段列表) VALUES (相应的值列表)l字段的个数必须与VALUES子句中给出的值的个数相同;数据类型必须和字段的数据类型相对应。SQL

35、Server 2000501. 插入数据插入数据l(1)添加数据到一行中的所有列 当将数据添加到一行的所有列时,使用VALUES关键字来给出要添加的数据。INSERT语句中无需给出表中的列名,只要VALUES中给出的数据与用CREATE TABLE定义表时给定的列名顺序相同即可。SQL Server 200051【例4.12】 :在表stud_info中插入如下一条记录: 0401040125,张明,08-12-1986,男,河南省郑州市450002,573需要注意的是: (1)输入的顺序和数据类型必须与表中列的顺序和数据类型一致。 (2)可以不给全部列赋值,但没

36、有赋值的列必须是可以为空的列。 (3)字符型和日期型值插入时要用单引号扩起来。use studentinsert stud_infovalues(0401040125,张明,08-12-1986,男, 河南省郑州市450002,573)Go SQL Server 200052l(2)添加数据到一行中的部分列 要将数据添加到一行中的部分列时,则需要同时给出要使用的列名以及要赋给这些列的数据。 【例4.13】 在表stud_info中插入部分记录,只输入stud_id,name,address三个列值:0401050129,张锌,河南省新乡市 在查询分析器中执行,返回

37、的结果为: (所影响的行数为 1 行) 对于这种添加部分列的操作,在添加数据前应确认未在VALUES列表中出现的列允许不允许为NULL;只有允许为NULL的列,才可以不出现在VALUES列表中 use studentgoinsert stud_info(stud_id,name,address)values(0401050129,张锌,河南省新乡市)1. 插入数据插入数据SQL Server 2000532.2.数据库中表的查看数据库中表的查看l1.查看表的结构 a.使用企业管理器查看 b.使用系统存储过程查看 sp_help 数据表名l2.查看表中的数据 a).使用企业管理器 (1).打开表

38、-返回所以行 (2).打开表-查询 b).使用查询分析器 c).使用select语句查看 select * from stud_infoSQL Server 2000543.3.修改数据修改数据l使用UPDATE语句修改数据 语法格式为: UPDATE 表名 SET 列名=更新后新的数据值,n WHERE 条件 update stud_infoset birthday=03-12-1986,gender=男, telcodezipcode=453000where stud_id=0401050129SQL Server 2000554.4.删除数据删除数据l使用T-

39、SQL中的DELETE语句可以删除数据表中的一个或多个记录。 语法格式为: DELETE from 表名 WHERE 条件 其中,表名是要删除数据的表的名字。如果DELETE语句中没有WHERE子句限制,表中的所有记录都将被删除。【例4.15】删除表stud_info中学生地址列address为空的记录【例4.16】删除表中stud_info所有记录delete from stud_info where address is nulldelete from stud_infoSQL Server 2000564.3 定义约束定义约束l 约束是SQL Server提供的自动保持数据库完整性的一种

40、方法,约束定义了关于允许什么数据进入数据库的检验规则。(如:字段值不允许重复,字段值在一定范围内,或字段值必须来自另一个表等)使用约束的目的是为了防止列出现非法数据,以保证数据库中数据的一致性和完整性。lSQL Server中有五种约束类型:check约束,default约束,primary key约束, foreign key约束,unique约束SQL Server 200057l添加约束的基本格式:lALTER TABLE 表名 ADD CONSTRAINT 约束名 约束类型 约束条件表达式删除约束的基本格式: ALTER TABLE 表名 drop CONSTRAINT 约束名SQL

41、Server 200058一一. check约束约束lCHECK(检查)约束:用来检查字段值所允许的范围, CHECK约束通过限制列允许存放的数据值来实现域的完整性,它使用一个逻辑表达式来判断列中数据值的合法性。如,一个字段只能输入整数,而且限定在0-100的整数,以此来保证域的完整性。l可以使用企业管理器或T-SQL语句来操作.SQL Server 200059一一. check约束约束l(1)创建check约束lALTER TABLE 表名 ADD CONSTRAINT 约束名 CHECK (逻辑表达式)【例4.17】 使用T-SQL语句为stud_info创建check约束use stu

42、dentalter table stud_infoadd constraint 性别 check (gender=男or gender=女)SQL Server 200060一一. check约束约束【例】为stud_info创建check约束,使得mark值在300700之间l(2)删除check约束 ALTER TABLE 表名 Drop constraint 约束名l【例4.17】删除刚刚创建的check约束:use studentalter table stud_infoadd constraint check_mark check (mark=300 and mark=700)alt

43、er table stud_infodrop constraint check_mark SQL Server 200061二二. default约束约束l DEFAULT(默认)约束:向数据表添加记录时,有时可能不能确切知道这条新记录中某个字段的值,有时甚至不能肯定这个字段是否有值。如果该字段又允许为空时,当然可以将空值赋给该字段。但有时侯可能不希望字段的值为空,这时解决方案之一是为该字段设定一个默认值,即DEFAULT约束。约束可以在创建表时设置,也可以在创建表以后通过修改表结构的方法来设置。l约束的设置方法有两种:一种是使用企业管理器。另一种是在查询分析器中使用ALTERTABLE语句。

44、 SQL Server 200062二二. default约束约束l 添加黙认约束的语法格式为: ALTER TABLE 表名 ADD CONSTRAINT 约束名 DEFAULT 默认值 FOR 列名l删除默认约束的语法: ALTER TABLE 表名 Drop constraint 约束名SQL Server 200063二二. default约束约束l【例4.18】创建default约束,使得gender的默认值为男l删除这个default约束的语句:alter table stud_infoadd constraint de_gender default 男for genderalte

45、r table stud_infodrop constraint de_genderSQL Server 200064三三. primary key约束约束lPRIMARY KEY(主键)约束: 如果表中一列或多列的组合的值能唯一标识这个表的每一行,则这个列或列的组合可以作为表的主键。l当创建或修改表时,可以通过定义PRIMARYKEY约束来创建表的主键。当为表指定PRIMARYKEY约束时,SQL Server自动为主键列创建唯一索引,以确保数据的唯一性。l每个表只能有一个主键,且IMAGE和TEXT类型的列不能被指定为主关键字,也不允许指定主键列有NULL属性。SQL Server 200

46、065三三. primary key约束约束l1通过企业管理器完成添加、删除和修改主键的操作 l2使用Transact-SQL语句设置主键约束 ALTER TABLE 表名 ADD CONSTRAINT 约束名 PRIMARY KEY (,n) SQL Server 200066三三. primary key约束约束l【例4.19】创建主键约束,将stud_id列和name列设为主键l删除该主键约束的语句:alter table stud_infoadd constraint pk_studprimary key (stud_id,name)alter table stud_infodrop

47、constraint pk_studSQL Server 200067四四. foreign key约束约束lFOREIGN KEY(外键)约束:外键约束用于建立和加强两个数据表之间数据的相关性,限制外键的取值必须是主表的主键值。可以将表中主键值的一列或多列添加到另一张表中,以创建两张表之间的链接。这些列就称为第二张表的外键.l建立外键的关键是某列必须是两张表中的同名,同数据类型的列,且该列为一张表的主键,该列为另一张表的外键SQL Server 200068四四. foreign key约束约束lFOREIGN KEY约束指定某一个列或一组列作为外部键,其中,包含外部键的表称为从表,包含外部

48、键所引用的主键或唯一键的表称主表。l系统保证从表在外部键上的取值要么是主表中某一个主键值或唯一键值,要么取空值。以此保证两个表之间的连接,确保了实体的参照完整性。(即:当向含有外关键字的从表插入数据时,如果与之相关联的主表的列中无与插入的外关键字列值相同的值时系统会拒绝插入数据.)SQL Server 200069四四. foreign key约束约束l一.用企业管理器创建外键l二.用T-SQL语句 添加外关键字约束的语法格式为: ALTER TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN KEY () REFERENCES 引用表名SQL Server 200070a

49、lter table lesson_infoadd constraint pk_course_id primary key (course_id)alter table stud_gradeadd constraint fk_course_id foreign key (course_id) references lesson_info(course_id)【例例4.20】 为为stud_grade表建立名为表建立名为fk_course_id的外的外键约束键约束,外键外键fk_course_id参考表参考表lesson_info中的主键中的主键course_idSQL Server 20007

50、1五五. unique约束约束l唯一性约束(UNIQUE):指定一个或多个列的组合的值具有唯一性,以防止在列中输入重复的值。唯一性约束指定的列可以有NULL属性。由于主关键字值是具有唯一性的,因此主关键字列不能再设定唯一性约束。在表的“属性”对话框中的“索引/键”选项卡中可定义唯一性约束。l唯一键允许为空,但系统为保证其唯一性,最多只可以出现一个NULL值。SQL Server 200072五五. unique约束约束l 添加唯一性约束的语法格式为: ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE (,n)SQL Server 200073五五. unique约束约束【例4.21】为表stud_info的name列创建unique约束 删除unique约束:use studentalter table stud_infoadd constraint un_nam

温馨提示

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

评论

0/150

提交评论