第5章 表操作与管理.ppt

上传人:hyn****60 文档编号:70705223 上传时间:2023-01-25 格式:PPT 页数:64 大小:825.50KB
返回 下载 相关 举报
第5章 表操作与管理.ppt_第1页
第1页 / 共64页
第5章 表操作与管理.ppt_第2页
第2页 / 共64页
点击查看更多>>
资源描述

《第5章 表操作与管理.ppt》由会员分享,可在线阅读,更多相关《第5章 表操作与管理.ppt(64页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第5 5章章 表的操作与管理表的操作与管理5.1 数据类型在SQLServer2005中,每个列、局部变量、表达式和参数都有其各自的数据类型。指定对象的数据类型相当于定义了该对象的四个特性:(1)对象所含的数据类型,如字符、整数或二进制数。(2)所存储值的长度或它的大小。(3)数字精度(仅用于数字数据类型)。(4)小数位数(仅用于数字数据类型)。SQLServer提供系统数据类型集,定义了可与SQLServer一起使用的所有数据类型;另外用户还可以使用Transact-SQL或.NET框架定义自己的数据类型,它是系统提供的数据类型的别名。每个表可以定义至多250个字段,除文本和图像数据类型外

2、,每个记录的最大长度限制为1962个字节。5.1.1 系统数据类型1、精确数字类型;2、近似数字类型;3、日期和时间类型;4、字符数据类型;5、Unicode字符数据类型;6、二进制字符数据类型;7、其它数据类型。5.1.1 系统数据类型1、精确数字类型(1)精确数字类型包括:整数类型;Bit(位类型);Decimal和Numeric(数值类型);Money和SmallMoney(货币类型)。5.1.1 系统数据类型1、精确数字类型、精确数字类型(2)整数类型整数类型:整数类型是最常用的数据类型之一,它主要用来存储数值,可以直接进行数据运算,而不必使用函数转换。整数类型包括以下四类:(1)Bi

3、gint:Bigint数据类型可以存储从(-9223372036854775808)到(9223372036854775807)范围之间的所有整型数据。每个Bigint数据类型值存储在8个字节中。(2)Int(Integer):Int(或integer)数据类型可以存储从(-2147483648)到(2147483647)范围之间的所有正负整数。每个Int数据类型值存储在4个字节中。(3)Smallint:可以存储从(-32768)到32767范围之间的所有正负整数。每个smallint类型的数据占用2个字节的存储空间。(4)Tinyint:可以存储从0255范围之间的所有正整数。每个tiny

4、int类型的数据占用1个字节的存储空间。5.1.1 系统数据类型1、精确数字类型、精确数字类型(3)位数据类型位数据类型Bit称为位数据类型,其数据有两种取值:0和1,长度为1字节。在输入0以外的其他值时,系统均把它们当1看待。这种数据类型常作为逻辑变量使用,用来表示真、假或是、否等二值选择。(4)Decimal数据类型和数据类型和Numeric数据类型数据类型Decimal数据类型和Numeric数据类型完全相同,它们可以提供小数所需要的实际存储空间,但也有一定的限制,可以用217个字节来存储-1038+1到1038-1之间的固定精度和小数位的数字。也可以将其写为Decimal(p,s)的形

5、式,p和s确定了精确的总位数和小数位。其中p表示可供存储的值的总位数,默认设置为18;s表示小数点后的位数,默认设置为0。例如:decimal(10,5),表示共有10位数,其中整数5位,小数5位。5.1.1 系统数据类型1、精确数字类型、精确数字类型(5)货币数据类型货币数据类型货币数据类型包括Money和SmallMoney两种:(1)Money:用于存储货币值,存储在money数据类型中的数值以一个正数部分和一个小数部分存储在两个4字节的整型值中,存储范围为(-9223372136854775808)到(9223372136854775807),精确到货币单位的千分之十。(2)Small

6、money:与money数据类型类似,但范围比money数据类型小,其存储范围为-2147483468到2147483467之间,精确到货币单位的千分之十。当为money或smallmoney的表输入数据时,必须在有效位置前面加一个货币单位符号。5.1.1 系统数据类型2、近似数字类型、近似数字类型近似数字类型包括近似数字类型包括Real和和Float两大类。两大类。(1)Real:可以存储正的或者负的十进制数值,最大可以有:可以存储正的或者负的十进制数值,最大可以有7位精确位数。它的存储范围从位精确位数。它的存储范围从-3.40E-383.40E+38。每个。每个Real 类型的数据占用类型

7、的数据占用4个字节的存储空间。个字节的存储空间。(2)Float:可以精确到第:可以精确到第15位小数,其范围从位小数,其范围从-1.79E-3081.79E+308。如果不指定。如果不指定Float 数据类型的长度,它占用数据类型的长度,它占用8个字节的存储空间。个字节的存储空间。Float数据类型也可以写为数据类型也可以写为Float(n)的形式,的形式,n指定指定Float数据的精度,数据的精度,n为为115之间的整数值。之间的整数值。当当n取取17时,实际上是定义了一个时,实际上是定义了一个Real 类型的数据,系统用类型的数据,系统用4个字节存储它;当个字节存储它;当n取取815时,

8、系统认为其是时,系统认为其是Float类型,用类型,用8个字节存储它。个字节存储它。5.1.1 系统数据类型3.日期和时间数据类型日期和时间数据类型(1)Datetime:用于存储日期和时间的结合体,它可以存储从公元:用于存储日期和时间的结合体,它可以存储从公元1753年年1月月1日零时起日零时起公元公元9999年年12月月31日日23时时59分分59秒之间的所有日期和秒之间的所有日期和时间,其精确度可达三百分之一秒,即时间,其精确度可达三百分之一秒,即3.33毫秒。毫秒。Datetime数据类型所占数据类型所占用的存储空间为用的存储空间为8个字节,其中前个字节,其中前4个字节用于存储基于个字

9、节用于存储基于1900年年1月月1日之日之前或者之后日期数,数值分正负,负数存储的数值代表在基数日期之前的前或者之后日期数,数值分正负,负数存储的数值代表在基数日期之前的日期,正数表示基数日期之后的日期,时间以子夜后的毫秒存储在后面的日期,正数表示基数日期之后的日期,时间以子夜后的毫秒存储在后面的4个字节中。当存储个字节中。当存储Datetime数据类型时,默认的格式是数据类型时,默认的格式是MM DD YYYY hh:mm A.M./P.M,当插入数据或者在其他地方使用,当插入数据或者在其他地方使用Datetime类型时,需类型时,需要用单引号把它括起来。默认的时间日期是要用单引号把它括起来

10、。默认的时间日期是January 1,1900 12:00 A.M。可以接受的输入格式如下:可以接受的输入格式如下:Jan 4 1999、JAN 4 1999、January 4 1999、Jan 1999 4、1999 4 Jan和和1999 Jan 4。(2)Smalldatetime:与:与Datetime数据类型类似,但其日期时间范围较数据类型类似,但其日期时间范围较小,它存储从小,它存储从1900年年1月月1日日2079年年6月月6日内的日期。日内的日期。SmallDatetime数数据类型使用据类型使用4个字节存储数据,个字节存储数据,SQL Server 2000用用2个字节存储

11、日期个字节存储日期1900年年1月月1日以后的天数,时间以子夜后的分钟数形式存储在另外两个日以后的天数,时间以子夜后的分钟数形式存储在另外两个字节中,字节中,SmallDatetime的精度为的精度为1分钟。分钟。5.1.1 系统数据类型4.字符数据类型字符数据类型字符数据类型也是字符数据类型也是SQL Server中最常用的数据类型之一,它可以用来存储各种字中最常用的数据类型之一,它可以用来存储各种字母、数字符号和特殊符号。在使用字符数据类型时,需要在其前后加上英文单引母、数字符号和特殊符号。在使用字符数据类型时,需要在其前后加上英文单引号或者双引号。号或者双引号。(1)Char:其定义形式

12、为:其定义形式为Char(n),当用),当用Char数据类型存储数据时,每个字数据类型存储数据时,每个字符和符号占用一个字节的存储空间。符和符号占用一个字节的存储空间。n表示所有字符所占的存储空间,表示所有字符所占的存储空间,n的取值为的取值为18000。若不指定。若不指定n值,系统默认值,系统默认n的值为的值为1。若输入数据的字符串长度小于。若输入数据的字符串长度小于n,则,则系统自动在其后添加空格来填满设定好的空间;若输入的数据过长,将会截掉其系统自动在其后添加空格来填满设定好的空间;若输入的数据过长,将会截掉其超出部分。如果定义了一个超出部分。如果定义了一个Char数据类型,而且允许该列

13、为空,则该字段被当作数据类型,而且允许该列为空,则该字段被当作Varchar来处理。来处理。(2)Varchar:其定义形式为:其定义形式为Varchar(n)。用)。用Char数据类型可以存储长达数据类型可以存储长达255个字符的可变长度字符串,和个字符的可变长度字符串,和Char类型不同的是类型不同的是Varchar类型的存储空间是根据类型的存储空间是根据存储在表的每一列值的字符数变化的。例如定义存储在表的每一列值的字符数变化的。例如定义Varchar(20),则它对应的字段),则它对应的字段最多可以存储最多可以存储20个字符,但是在每一列的长度达到个字符,但是在每一列的长度达到20字节之

14、前系统不会在其后添字节之前系统不会在其后添加空格来填满设定好的空间,因此使用加空格来填满设定好的空间,因此使用Varchar类型可以节省空间。类型可以节省空间。(3)Text:用于存储文本数据,其容量理论上为:用于存储文本数据,其容量理论上为1231-1(2,147,483,647)个字节,但实际应用时要根据硬盘的存储空间而定。)个字节,但实际应用时要根据硬盘的存储空间而定。5.1.1 系统数据类型5.Unicode 字符数据类型字符数据类型Unicode 字符数据类型包括字符数据类型包括Nchar、Nvarchar、Ntext三种:三种:(1)Nchar:其定义形式为:其定义形式为Nchar

15、(n)。它与)。它与Char数据类型类似,不同数据类型类似,不同的是的是Nchar数据类型数据类型n的取值为的取值为14000。Nchar数据类型采用数据类型采用Unicode标标准字符集,准字符集,Unicode标准用两个字节为一个存储单位,其一个存储单位的标准用两个字节为一个存储单位,其一个存储单位的容纳量就大大增加了,可以将全世界的语言文字都囊括在内,在一个数据容纳量就大大增加了,可以将全世界的语言文字都囊括在内,在一个数据列中就可以同时出现中文、英文、法文等,而不会出现编码冲突。列中就可以同时出现中文、英文、法文等,而不会出现编码冲突。(2)Nvarchar:其定义形式:其定义形式Nv

16、archar(n)。它与)。它与Varchchar数据类型数据类型相似,相似,Nvarchar数据类型也采用数据类型也采用Unicode标准字符集,标准字符集,n的取值范围为的取值范围为14000。(3)Ntext:与:与Text数据类型类似,存储在其中的数据通常是直接能输出数据类型类似,存储在其中的数据通常是直接能输出到显示设备上的字符,显示设备可以是显示器、窗口或者打印机。到显示设备上的字符,显示设备可以是显示器、窗口或者打印机。Ntext数据类型采用数据类型采用Unicode标准字符集,因此其理论上的容量为标准字符集,因此其理论上的容量为230-1(1,073,741,823)个字节。)

17、个字节。5.1.1 系统数据类型6.二进制字符数据类型二进制字符数据类型二进制数据类型包括二进制数据类型包括Binary、Varbinary、Image三种:三种:(1)Binary:其定义形式为:其定义形式为Binary(n),数据的存储长度),数据的存储长度是固定的,即是固定的,即n+4个字节,当输入的二进制数据长度小于个字节,当输入的二进制数据长度小于n时,时,余下部分填充余下部分填充0。二进制数据类型的最大长度(即。二进制数据类型的最大长度(即n的最大值)的最大值)为为8000,常用于存储图像等数据。,常用于存储图像等数据。(2)Varbinary:其定义形式为:其定义形式为Varbi

18、nary(n),数据的存),数据的存储长度是变化的,它为实际所输入数据的长度加上储长度是变化的,它为实际所输入数据的长度加上4字节。其字节。其他含义同他含义同Binary。(3)Image:用于存储照片、目录图片或者图画,其理论容:用于存储照片、目录图片或者图画,其理论容量为量为231-1(2,147,483,647)个字节。其存储数据的模)个字节。其存储数据的模式与式与Text数据类型相同,通常存储在数据类型相同,通常存储在Image字段中的数据不字段中的数据不能直接用能直接用Insert语句直接输入。语句直接输入。5.1.1 系统数据类型7.其它数据类型其它数据类型(1)Sql_varia

19、nt:用于存储除文本、图形数据和:用于存储除文本、图形数据和Timestamp类型数据外的其他任何合法的类型数据外的其他任何合法的SQL Server数据。此数据类型极大地方便了数据。此数据类型极大地方便了SQL Server的开发工作。的开发工作。(2)Table:用于存储对表或者视图处理后的结果集。这种新的数据类型使得变量可以存储一:用于存储对表或者视图处理后的结果集。这种新的数据类型使得变量可以存储一个表,从而使函数或过程返回查询结果更加方便、快捷。个表,从而使函数或过程返回查询结果更加方便、快捷。(3)Timestamp:亦称时间戳数据类型,它提供数据库范围内的惟一值,反应数据库中数据

20、:亦称时间戳数据类型,它提供数据库范围内的惟一值,反应数据库中数据修改的相对顺序,相当于一个单调上升的计数器。当它所定义的列在更新或者插入数据行时,修改的相对顺序,相当于一个单调上升的计数器。当它所定义的列在更新或者插入数据行时,此列的值会被自动更新,一个计数值将自动地添加到此此列的值会被自动更新,一个计数值将自动地添加到此Timestamp数据列中。如果建立一个名数据列中。如果建立一个名为为“Timestamp”的列,则该列的类型将自动设为的列,则该列的类型将自动设为Timestamp数据类型。数据类型。(4)Uniqueidentifier:用于存储一个:用于存储一个16字节长的二进制数据

21、类型,它是字节长的二进制数据类型,它是SQL Server根据计根据计算机网络适配器地址和算机网络适配器地址和CPU时钟产生的全局惟一标识符代码(时钟产生的全局惟一标识符代码(Globally Unique Identifier,简,简写为写为GUID)。此数字可以通过调用)。此数字可以通过调用SQL Server的的 newid()函数获得,在全球各地的计算机()函数获得,在全球各地的计算机经由此函数产生的数字不会相同。经由此函数产生的数字不会相同。(5)XML:可以存储:可以存储XML数据的数据类型。利用它可以将数据的数据类型。利用它可以将XML实例存储在字段中或者实例存储在字段中或者XM

22、L类类型的变量中。注意存储在型的变量中。注意存储在XML中的数据不能超过中的数据不能超过2GB。(6)Cursor:这是变量或存储过程:这是变量或存储过程OUTPUT 参数的一种数据类型,这些参数包含对游标的引参数的一种数据类型,这些参数包含对游标的引用。使用用。使用 Cursor 数据类型创建的变量可以为空。注意:对于数据类型创建的变量可以为空。注意:对于 CREATE TABLE 语句中的列,语句中的列,不能使用不能使用Cursor 数据类型。数据类型。5.1.2 自定义数据类型SQL Server允许用户自定义数据类型,用户自定义数允许用户自定义数据类型,用户自定义数据类型是建立在据类型

23、是建立在SQL Server系统数据类型基础上的,系统数据类型基础上的,当用户定义一种数据类型时,需要指定该类型的名称、当用户定义一种数据类型时,需要指定该类型的名称、建立在其上的系统数据类型以及是否允许为空等。建立在其上的系统数据类型以及是否允许为空等。SQL Server为用户提供了两种方法来创建自定义数据为用户提供了两种方法来创建自定义数据类型:类型:(1)使用使用SQL Server管理平台创建用户自定义数据管理平台创建用户自定义数据类型;类型;(2)利用系统存储过程创建用户自定义数据类型)利用系统存储过程创建用户自定义数据类型 5.1.2 自定义数据类型(1)使用使用SQL Serv

24、er管理平台创建用户自定义数据类型管理平台创建用户自定义数据类型在在SQL Server管理平台中,打开指定的服务器和数据库项,如图管理平台中,打开指定的服务器和数据库项,如图5-1所示,选择并展开所示,选择并展开“程序程序类型类型”项,接下来用右键单击项,接下来用右键单击“用户自定义数据类型用户自定义数据类型”选项,从弹出的快捷菜单中选择选项,从弹出的快捷菜单中选择“新新建建”命令,出现用户定义的数据类型属性对话框,如图命令,出现用户定义的数据类型属性对话框,如图5-2所示。所示。图5-1打开用户定义的数据类型窗口 图5-2用户定义的数据类型属性对话框 5.1.2 自定义数据类型(2)利用系

25、统存储过程创建用户自定义数据类利用系统存储过程创建用户自定义数据类型型 系统存储过程sp_addtype为用户提供了用T_SQL语句创建自定义数据类型的途径,其语法形式如下:sp_addtypetypename=type,phystype=system_data_type,nulltype=null_type,owner=owner_name5.1.2 自定义数据类型(2)利用系统存储过程创建用户自定义数据类利用系统存储过程创建用户自定义数据类型型 例5-1自定义一个地址(address)数据类型。程序清单如下:execsp_addtypeaddress,varchar(80),notnull

26、5.2 表操作表是包含数据库中所有数据的数据库对象。表表是包含数据库中所有数据的数据库对象。表定义为列的集合,数据在表中是按行和列的格定义为列的集合,数据在表中是按行和列的格式组织排列的,每行代表惟一的一条记录,而式组织排列的,每行代表惟一的一条记录,而每列代表记录中的一个域。每列代表记录中的一个域。5.2.1 创建表创建表5.2.2 创建约束创建约束5.2.3 修改表修改表5.2.4 查看表查看表 5.2.5 删除表删除表 5.2.1 创建表1.利用利用SQL Server管理平台创建表管理平台创建表在SQLServer管理平台中,展开指定的服务器和数据库,打开想要创建新表的数据库,右击表对

27、象,并从弹出的快捷菜单中选择“新建表”选项,如图5-4所示。在图5-4的对话框中,可以对表的结构进行更改,设置主键及字段属性,使用SQLServer管理平台可以非常直观地修改数据库结构和添加数据。在表中任意行上右击,则弹出一个快捷菜单,如图5-6所示。图5-4新建表对话框 图5-6设置字段属性对话框 5.2.1 创建表2.利用利用create命令创建表命令创建表 使用create命令创建表非常灵活,它允许对表设置几种不同的选项,包括表名、存放位置和列的属性等。其完整语法形式如下:CREATETABLEdatabase_name.owner.|owner.table_name(|column_n

28、ameAScomputed_column_expression|,n)ONfilegroup|DEFAULTTEXTIMAGE_ONfilegroup|DEFAULT:=column_namedata_typeCOLLATEDEFAULTconstant_expression|IDENTITY(seed,increment)NOTFORREPLICATIONROWGUIDCOL.n5.2.1 创建表2.利用利用create命令创建表命令创建表 其中,各参数的说明如下:database_name:用于指定所创建表的数据库名称。owner:用于指定新建表的所有者的用户名。table_name:用于

29、指定新建表的名称。column_name:用于指定新建表的列名。computed_column_expression:用于指定计算列的列值表达式。ONfilegroup|DEFAULT:用于指定存储表的文件组名。TEXTIMAGE_ON:用于指定text、ntext和image列的数据存储的文件组。data_type:用于指定列的数据类型。DEFAULT:用于指定列的默认值。constant_expression:用于指定列的默认值的常量表达式、可以为一个常量或NULL或系统函数。IDENTITY:用于将列指定为标识列。Seed:用于指定标识列的初始值。Increment:用于指定标识列的增量

30、值。NOTFORREPLICATION:用于指定列的IDENTITY属性,在把从其他表中复制的数据插入到表中时不发生作用,即不生成列值,使得复制的数据行保持原来的列值。ROWGUIDCOL:用于将列指定为全局惟一标识行号列(rowglobaluniqueidentifiercolumn)。COLLATE:用于指定表的校验方式。column_constraint和table_constraint:用于指定列约束和表约束。5.2.1 创建表2.利用利用create命令创建表命令创建表 例5-3创建了一个工人信息表,它包括工人编号、姓名、性别、出生日期、职位、工资和备注信息。SQL语句的程序清单如下

31、:CREATETABLEworker(numberchar(8)notnull,namechar(8)NOTNULL,sexchar(2)NULL,birthdaydatetimenull,job_titlevarchar(10)null,salarymoneynull,memontextnull)5.2.2 创建约束约束是约束是SQL Server提供的自动保持数据库完整性的一种方法,它通过提供的自动保持数据库完整性的一种方法,它通过限制字段中数据、记录中数据和表之间的数据来保证数据的完整性。在限制字段中数据、记录中数据和表之间的数据来保证数据的完整性。在SQL SERVER中,对于基本表的

32、约束分为列约束和表约束。中,对于基本表的约束分为列约束和表约束。列约束是对某一个特定列的约束,包含在列定义中,直接跟在该列的其列约束是对某一个特定列的约束,包含在列定义中,直接跟在该列的其他定义之后,用空格分隔,不必指定列名;表约束与列定义相互独立,他定义之后,用空格分隔,不必指定列名;表约束与列定义相互独立,不包括在列定义中,通常用于对多个列一起进行约束,与列定义用不包括在列定义中,通常用于对多个列一起进行约束,与列定义用,分隔,定义表约束时必须指出要约束的那些列的名称。分隔,定义表约束时必须指出要约束的那些列的名称。完整性约束的基本语法格式为:完整性约束的基本语法格式为:CONSTRAIN

33、T constraint_name(约束名)(约束名)约束不指定名称时,系统会给定一个名称。约束不指定名称时,系统会给定一个名称。在在SQL Server 2005中有中有6种约束:主键约束(种约束:主键约束(primary key constraint)、惟一性约束()、惟一性约束(unique constraint)、检查约束()、检查约束(check constraint)、默认约束()、默认约束(default constraint)、外部键约束)、外部键约束(foreign key constraint)和空值()和空值(NULL)约束。)约束。5.2.2 创建约束1.主键(主键(P

34、RIMARY KEY)约束)约束PRIMARYKEY约束用于定义基本表的主键,它是惟一确定表中每一条记录的标识符,其值不能为NULL,也不能重复,以此来保证实体的完整性。PRIMARYKEY与UNIQUE约束类似,通过建立唯一索引来保证基本表在主键列取值的唯一性,但它们之间存在着很大的区别:在一个基本表中只能定义一个PRIMARYKEY约束,但可定义多个UNIQUE约束;对于指定为PRIMARYKEY的一个列或多个列的组合,其中任何一个列都不能出现空值,而对于UNIQUE所约束的唯一键,则允许为空。注意:不能为同一个列或一组列既定义UNIQUE约束,又定义PRIMARYKEY约束。PRIMAR

35、YKEY既可用于列约束,也可用于表约束。5.2.2 创建约束1.主键(主键(PRIMARY KEY)约束)约束主键的创建操作方法有两种:SQLServer管理平台操作法和Transact-SQL语句操作法。(1)SQLServer管理平台操作法,如图5-7所示。图5-7选择多个字段共同做为主键对话框 5.2.2 创建约束1.主键(主键(PRIMARY KEY)约束)约束(2)使用Transact-SQL语句操作法设置主键约束,其语法形式如下:CONSTRAINTconstraint_namePRIMARYKEYCLUSTERED|NONCLUSTERED(column_name)PRIMARY

36、KEY用于定义表约束时,即将某些列的组合定义为主键,其语法格式如下:CONSTRAINTconstraint_namePRIMARYKEYCLUSTERED|NONCLUSTERED(column_name,n)5.2.2 创建约束1.主键(主键(PRIMARY KEY)约束)约束例5-5建立一个SC表,定义SNO,CNO共同组成SC的主键程序清单如下:CREATETABLESC(SNOCHAR(5)NOTNULL,CNOCHAR(5)NOTNULL,SCORENUMERIC(3),CONSTRAINTSC_PRIMPRIMARYKEY(SNO,CNO)5.2.2 创建约束2.惟一性约束惟一性

37、约束惟一性约束用于指定一个或者多个列的组合值具有惟一性,以防止在列中输入重复的值。定义了UNIQUE约束的那些列称为唯一键,系统自动为唯一键建立唯一索引,从而保证了唯一键的唯一性。当使用惟一性约束时,需要考虑以下几个因素:使用惟一性约束的字段允许为空值;一个表中可以允许有多个惟一性约束;可以把惟一性约束定义在多个字段上;惟一性约束用于强制在指定字段上创建一个惟一性索引;默认情况下,创建的索引类型为非聚集索引。5.2.2 创建约束2.惟一性约束惟一性约束创建惟一性约束的方法有两种:通过SQLServer管理平台可以完成创建和修改惟一性约束的操作;使用Transact-SQL语句完成惟一性约束的操

38、作。(1)通过SQLServer管理平台可以完成创建和修改惟一性约束的操作,如图5-8所示。图5-8创建惟一性约束对话框 5.2.2 创建约束2.惟一性约束惟一性约束(2)使用Transact-SQL语句完成惟一性约束的操作,其语法形式如下:CONSTRAINTconstraint_nameUNIQUECLUSTERED|NONCLUSTERED(column_name,n)例5-6创建一个学生信息表,其中name字段具有惟一性。程序清单如下:Createtablestudent(idchar(8),namechar(10),sexchar(2),constraintpk_idprimaryk

39、ey(id),constraintuk_identityunique(name)5.2.2 创建约束3.检查约束检查约束检查约束对输入列或者整个表中的值设置检查条件,以限制输入值,保证数据库数据的完整性。当使用检查约束时,应该考虑和注意以下几点:一个列级检查约束只能与限制的字段有关;一个表级检查约束只能与限制的表中字段有关;一个表中可以定义多个检查约束;每个CREATETABLE语句中每个字段只能定义一个检查约束;在多个字段上定义检查约束,则必须将检查约束定义为表级约束;当执行INSERT语句或者UPDATE语句时,检查约束将验证数据;检查约束中不能包含子查询。5.2.2 创建约束3.检查约束

40、检查约束创建检查约束常用的操作方法有如下两种:使用SQLServer管理平台创建检查约束;用Transact-SQL语句创建检查约束。(1)使用SQLServer管理平台创建检查约束,如图5-9所示。图5-9创建检查约束对话框 5.2.2 创建约束3.检查约束检查约束(2)用Transact-SQL语句创建检查约束。用Transact-SQL语句创建检查约束。其语法形式如下:CONSTRAINTconstraint_nameCHECKNOTFORREPLICATION(logical_expression)例5-8建立一个SC表,定义SCORE的取值范围为0到100之间。程序清单如下:CREA

41、TETABLESC(SNOCHAR(5),CNOCHAR(5),SCORENUMERIC(5,1)CONSTRAINTSCORE_CHKCHECK(SCORE=0ANDSCORE=100)5.2.2 创建约束4.默认(默认(DEFAULT)约束)约束默认约束指定在插入操作中如果没有提供输入值时,则系统自动指定值。默认约束可以包括常量、函数、不带变元的内建函数或者空值。使用默认约束时,应该注意以下几点:(1)每个字段只能定义一个默认约束;(2)如果定义的默认值长于其对应字段的允许长度,那么输入到表中的默认值将被截断;(3)不能加入到带有IDENTITY属性或者数据类型为timestamp的字段上

42、;(4)如果字段定义为用户定义的数据类型,而且有一个默认绑定到这个数据类型上,则不允许该字段有默认约束。5.2.2 创建约束4.默认(默认(DEFAULT)约束)约束创建默认约束常用的操作方法有如下两种:使用SQLServer管理平台创建默认约束;创建默认约束的Transact-SQL语句操作法。(1)使用SQLServer管理平台创建默认约束,如图5-10所示。图5-10创建默认约束对话框 5.2.2 创建约束4.默认(默认(DEFAULT)约束)约束(2)创建默认约束的Transact-SQL语句操作法。其语法形式如下:CONSTRAINTconstraint_nameDEFAULTcon

43、straint_expressionFORcolumn_name例5-10为dept字段创建默认约束。程序清单如下:constraintcon_deptdefault计算机fordept5.2.2 创建约束5.外部键约束外部键约束外键(FOREIGNKEY)是用于建立和加强两个表数据之间的链接的一列或多列。外部键约束用于强制参照完整性。当使用外部键约束时,应该考虑以下几个因素:外部键约束提供了字段参照完整性;外部键从句中的字段数目和每个字段指定的数据类型都必须和REFERENCES从句中的字段相匹配;外部键约束不能自动创建索引,需要用户手动创建;用户想要修改外部键约束的数据,必须有对外部键约束

44、所参考表的SELECT权限或者REFERENCES权限;参考同一表中的字段时,必须只使用REFERENCES子句,不能使用外部键子句;一个表中最多可以有31个外部键约束;在临时表中,不能使用外部键约束;主键和外部键的数据类型必须严格匹配5.2.2 创建约束5.外部键约束外部键约束创建外部键约束常用的操作方法有如下两种:在SQLServer管理平台中添加外部键约束;使用Transact-SQL语句设置外部键约束。(1)在SQLServer管理平台中添加外部键约束,在SQLServer管理平台中添加外部键约束。如图5-11,5-12所示。图5-11选择创建外键约束的字段 图5-12创建外键约束对话

45、框 5.2.2 创建约束5.外部键约束外部键约束(2)使用Transact-SQL语句设置外部键约束,其语法形式如下:CONSTRAINTconstraint_nameFOREIGNKEY(column_name,n)REFERENCESref_table(ref_column,n)例5-11建立一个SC表,定义SNO,CNO为SC的外部键。程序清单如下:CREATETABLESC(SNOCHAR(5)NOTNULLCONSTRAINTS_FOREFOREIGNKEYREFERENCESS(SNO),CNOCHAR(5)NOTNULLCONSTRAINTC_FOREFOREIGNKEYREFE

46、RENCESC(CNO),SCORENUMERIC(3),CONSTRAINTS_C_PRIMPRIMARYKEY(SNO,CNO)5.2.2 创建约束6.空值(空值(NULL)约束)约束空值(NULL)约束用来控制是否允许该字段的值为NULL。NULL值不是0也不是空白,更不是填入字符串的“NULL”字符串,而是表示“不知道”、“不确定”或“没有数据”的意思。当某一字段的值一定要输入才有意义的时候,则可以设置为NOTNULL。如主键列就不允许出现空值,否则就失去了唯一标识一条记录的作用。空值(NULL)约束只能用于定义列约束。创建空值(NULL)约束常用的操作方法有如下两种:(1)在SQLS

47、erver管理平台中添加空值(NULL)约束;(2)使用Transact-SQL语句设置空值(NULL)约束。5.2.2 创建约束6.空值(空值(NULL)约束)约束(1)在SQLServer管理平台中添加空值(NULL)约束。如图5-14所示。图5-14设置空值(NULL)约束对话框 5.2.2 创建约束6.空值(空值(NULL)约束)约束(2)使用Transact-SQL语句设置空值(NULL)约束,其语法形式如下:CONSTRAINTNULL|NOTNULL例5-13建立一个S表,对SNO字段进行NOTNULL约束。程序清单如下:CREATETABLES(SNOCHAR(10)CONST

48、RAINTS_CONSNOTNULL,SNVARCHAR(20),AGEINT,SEXCHAR(2)DEFAULT男,DEPTVARCHAR(20)5.2.3 修改表当数据库中的表创建完成后,可以根据需要改变表中原先定义的许多选项,以更改表的结构。用户可以增加、删除和修改列,增加、删除和修改约束,更改表名以及改变表的所有者等。1、修改列属性修改列属性包括以下一些内容:(1)修改列的数据类型;(2)修改列的数据长度;(3)修改列的精度;(4)修改列的小数位数;(5)修改列的为空性。5.2.3 修改表2、添加和删除列在SQLServer2005中,如果列允许空值或对列创建DEFAULT约束,则可以

49、将列添加到现有表中。将新列添加到表时,SQLServer2005数据库引擎在该列为表中的每个现有数据行插入一个值。因此,在向表中添加列时向列添加DEFAULT定义会很有用。如果新列没有DEFAULT定义,则必须指定该列允许空值。数据库引擎将空值插入该列,如果新列不允许空值,则返回错误。反之,可以删除现有表中的列,但具有下列特征的列不能被删除:(1)用于索引;(2)用于CHECK、FOREIGNKEY、UNIQUE或PRIMARYKEY约束;(3)与DEFAULT定义关联或绑定到某一默认对象;(4)绑定到规则;(5)已注册支持全文;(6)用作表的全文键。5.2.3 修改表3、增加、修改和删除约束

50、(1)增加、修改和删除PRIMARYKEY约束。(2)增加、修改和删除UNIQUE约束。(3)增加、修改和删除CHECK约束。(4)增加、修改和删除DEFAULT约束。(5)增加、修改和删除FOREIGNKEY约束。(6)增加和修改标识符列。只能为每个表创建一个标识符列和一个GUID列。5.2.3 修改表例5-14创建一个雇员信息表,然后在表中增加一个salary字段,删除表中的age字段,并且修改memo字段的数据类型。SQL语句的程序清单如下:createtableemployees(idchar(8)primarykey,namechar(20)notnull,departmentcha

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁