![[所有分类]第5章 数据库对象的操作ppt课件_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-12/2/657db7e4-66ec-443f-a594-5ad7be6c0e94/657db7e4-66ec-443f-a594-5ad7be6c0e941.gif)
![[所有分类]第5章 数据库对象的操作ppt课件_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-12/2/657db7e4-66ec-443f-a594-5ad7be6c0e94/657db7e4-66ec-443f-a594-5ad7be6c0e942.gif)
![[所有分类]第5章 数据库对象的操作ppt课件_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-12/2/657db7e4-66ec-443f-a594-5ad7be6c0e94/657db7e4-66ec-443f-a594-5ad7be6c0e943.gif)
![[所有分类]第5章 数据库对象的操作ppt课件_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-12/2/657db7e4-66ec-443f-a594-5ad7be6c0e94/657db7e4-66ec-443f-a594-5ad7be6c0e944.gif)
![[所有分类]第5章 数据库对象的操作ppt课件_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-12/2/657db7e4-66ec-443f-a594-5ad7be6c0e94/657db7e4-66ec-443f-a594-5ad7be6c0e945.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第5 5章章 数据库对象的操作数据库对象的操作5.1 数据类型 在SQL Server2005 中,每个列、部分变量、表达式和参数都有其各自的数据类型。指定对象的数据类型相当于定义了该对象的四个特性: 1对象所含的数据类型,如字符、整数或二进制数。2所存储值的长度或它的大小。3数字精度仅用于数字数据类型。4小数位数仅用于数字数据类型。 SQL Server提供系统数据类型集,定义了可与SQL Server一同运用的一切数据类型;另外用户还可以运用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)整数类型:整数类型:整数类型是最常用的数据类型之一,它主要用来存整数类型是最常用的数据类型之一,它主要用来存储数值,可以直接进展数据运算,而不用运用
3、函数储数值,可以直接进展数据运算,而不用运用函数转换。整数类型包括以下四类:转换。整数类型包括以下四类:1Bigint:Bigint数据类型可以存储从数据类型可以存储从 (-9223372036854775808) 到到(9223372036854775807) 范围之间的一切整型数据。范围之间的一切整型数据。每个每个Bigint数据类型值存储在数据类型值存储在8个字节中。个字节中。2IntInteger:Int或或integer数据类型数据类型可以存储从可以存储从-2147483648到到2147483647范范围之间的一切正负整数。每个围之间的一切正负整数。每个Int数据类型值存储在数据类
4、型值存储在4个字节中。个字节中。3Smallint:可以存储从:可以存储从-32768到到32767范范围之间的一切正负整数。每个围之间的一切正负整数。每个smallint类型的数据类型的数据占用占用2个字节的存储空间。个字节的存储空间。4Tinyint:可以存储从:可以存储从0255范围之间的一切范围之间的一切正整数。每个正整数。每个tinyint类型的数据占用类型的数据占用1个字节的存个字节的存储空间。储空间。 5.1.1 系统数据类型 1、准确数字类型、准确数字类型(3)位数据类型位数据类型Bit称为位数据类型,其数据有两种取值:称为位数据类型,其数据有两种取值:0和和1,长,长度为度为
5、1字节。在输入字节。在输入0以外的其他值时,系统均把它以外的其他值时,系统均把它们当们当1对待。这种数据类型常作为逻辑变量运用,对待。这种数据类型常作为逻辑变量运用,用来表示真、假或是、否等二值选择。用来表示真、假或是、否等二值选择。(4)Decimal数据类型和数据类型和Numeric数据类型数据类型Decimal数据类型和数据类型和Numeric数据类型完全一样,数据类型完全一样,它们可以提供小数所需求的实践存储空间,但也有它们可以提供小数所需求的实践存储空间,但也有一定的限制,可以用一定的限制,可以用217个字节来存储个字节来存储-1038+1到到1038-1之间的固定精度和小数位的数字
6、。也可以将之间的固定精度和小数位的数字。也可以将其写为其写为Decimalp,s的方式,的方式,p和和s确定了准确确定了准确的总位数和小数位。其中的总位数和小数位。其中p表示可供存储的值的总表示可供存储的值的总位数,默许设置为位数,默许设置为18;s表示小数点后的位数,默表示小数点后的位数,默许设置为许设置为0。例如:。例如:decimal10,5,表示共有,表示共有10位数,其中整数位数,其中整数5位,小数位,小数5位。位。 5.1.1 系统数据类型 1、准确数字类型、准确数字类型(5)货币数据类型货币数据类型货币数据类型包括货币数据类型包括Money和和SmallMoney两种:两种:1M
7、oney:用于存储货币值,存储在:用于存储货币值,存储在money数据类型中的数值以一个正数部分和数据类型中的数值以一个正数部分和一个小数部分存储在两个一个小数部分存储在两个4字节的整型值中,字节的整型值中,存储范围为存储范围为-9223372854775808到到9223372854775807,准确到货币单位的,准确到货币单位的千分之十。千分之十。2Smallmoney:与:与money数据类型类似,数据类型类似,但范围比但范围比money数据类型小,其存储范围为数据类型小,其存储范围为-2147483468到到2147483467之间,准确到货之间,准确到货币单位的千分之十。币单位的千分
8、之十。 当为当为money或或smallmoney的表输入数据的表输入数据时,必需在有效位置前面加一个货币单位符号。时,必需在有效位置前面加一个货币单位符号。 5.1.1 系统数据类型 2、近似数字类型、近似数字类型近似数字类型包括近似数字类型包括Real和和Float两大类。两大类。1Real:可以存储正的或者负的十进制数:可以存储正的或者负的十进制数值,最大可以有值,最大可以有7位准确位数。它的存储范围位准确位数。它的存储范围从从-3.40E-383.40E+38。每个。每个Real 类型的数类型的数据占用据占用4个字节的存储空间。个字节的存储空间。2Float:可以准确到第:可以准确到第
9、15位小数,其范位小数,其范围从围从-1.79E-3081.79E+308。假设不指定。假设不指定Float 数据类型的长度,它占用数据类型的长度,它占用8个字节的存个字节的存储空间。储空间。Float数据类型也可以写为数据类型也可以写为Floatn的方式,的方式,n指定指定Float数据的精度,数据的精度,n为为115之之间的整数值。当间的整数值。当n取取17时,实践上是定义了时,实践上是定义了一个一个Real 类型的数据,系统用类型的数据,系统用4个字节存储它;个字节存储它;当当n取取815时,系统以为其是时,系统以为其是Float类型,用类型,用8个字节存储它。个字节存储它。 5.1.1
10、 系统数据类型 3. 日期和时间数据类型日期和时间数据类型 1Datetime:用于存储日期和时间的结合:用于存储日期和时间的结合体,它可以存储从公元体,它可以存储从公元1753年年1月月1日零时起日零时起公元公元9999年年12月月31日日23时时59分分59秒之间的一秒之间的一切日期和时间,其准确度可达三百分之一秒,切日期和时间,其准确度可达三百分之一秒,即即3.33毫秒。毫秒。Datetime数据类型所占用的存数据类型所占用的存储空间为储空间为8个字节,其中前个字节,其中前4个字节用于存储个字节用于存储基于基于1900年年1月月1日之前或者之后日期数,数日之前或者之后日期数,数值分正负,
11、负数存储的数值代表在基数日期之值分正负,负数存储的数值代表在基数日期之前的日期,正数表示基数日期之后的日期,时前的日期,正数表示基数日期之后的日期,时间以子夜后的毫秒存储在后面的间以子夜后的毫秒存储在后面的4个字节中。个字节中。当存储当存储Datetime数据类型时,默许的格式是数据类型时,默许的格式是MM DD YYYY hh:mm A.M./P.M,当插入数,当插入数据或者在其他地方运用据或者在其他地方运用Datetime类型时,需类型时,需求用单引号把它括起来。默许的时间日期是求用单引号把它括起来。默许的时间日期是January 1,1900 12:00 A.M。可以接受的输入。可以接受
12、的输入格式如下:格式如下:Jan 4 1999、JAN 4 1999、January 4 1999、Jan 1999 4、1999 4 Jan和和1999 Jan 4。2Smalldatetime:与:与Datetime数据类型数据类型类似,但其日期时间范围较小,它存储从类似,但其日期时间范围较小,它存储从1900年年1月月1日日2079年年6月月6日内的日期。日内的日期。SmallDatetime数据类型运用数据类型运用4个字节存储数个字节存储数据,据,SQL Server 2000用用2个字节存储日期个字节存储日期1900年年1月月1日以后的天数,时间以子夜后的日以后的天数,时间以子夜后的
13、分钟数方式存储在另外两个字节中,分钟数方式存储在另外两个字节中,SmallDatetime的精度为的精度为1分钟。分钟。 5.1.1 系统数据类型 4. 字符数据类型字符数据类型字符数据类型也是字符数据类型也是SQL Server中最常用的数据类型中最常用的数据类型之一,它可以用来存储各种字母、数字符号和特殊之一,它可以用来存储各种字母、数字符号和特殊符号。在运用字符数据类型时,需求在其前后加上符号。在运用字符数据类型时,需求在其前后加上英文单引号或者双引号。英文单引号或者双引号。1Char:其定义方式为:其定义方式为Charn,当用,当用Char数据类型存储数据时,每个字符和符号占用一个字数
14、据类型存储数据时,每个字符和符号占用一个字节的存储空间。节的存储空间。n表示一切字符所占的存储空间,表示一切字符所占的存储空间,n的取值为的取值为18000。假设不指定。假设不指定n值,系统默许值,系统默许n的值的值为为1。假设输入数据的字符串长度小于。假设输入数据的字符串长度小于n,那么系统,那么系统自动在其后添加空格来填满设定好的空间;假设输自动在其后添加空格来填满设定好的空间;假设输入的数据过长,将会截掉其超出部分。假设定义了入的数据过长,将会截掉其超出部分。假设定义了一个一个Char数据类型,而且允许该列为空,那么该字数据类型,而且允许该列为空,那么该字段被当作段被当作Varchar来
15、处置。来处置。2Varchar:其在:其在SQL Server 2005中新定义方中新定义方式为式为Varchar(n|max),较之以前的版本多了一个,较之以前的版本多了一个max选择,选择,max表示最大存储大小是表示最大存储大小是231-1个字节个字节 。用用Char数据类型可以存储长达数据类型可以存储长达255个字符的可变长个字符的可变长度字符串,和度字符串,和Char类型不同的是类型不同的是Varchar类型的存类型的存储空间是根据存储在表的每一列值的字符数变化的。储空间是根据存储在表的每一列值的字符数变化的。例如定义例如定义Varchar20,那么它对应的字段最多可,那么它对应的字
16、段最多可以存储以存储20个字符,但是在每一列的长度到达个字符,但是在每一列的长度到达20字节字节之前系统不会在其后添加空格来填满设定好的空间,之前系统不会在其后添加空格来填满设定好的空间,因此运用因此运用Varchar类型可以节省空间。类型可以节省空间。3Text:用于存储文本数据,其容量实际上为:用于存储文本数据,其容量实际上为1231-12,147,483,647个字节,但实践运个字节,但实践运用时要根据硬盘的存储空间而定。用时要根据硬盘的存储空间而定。 5.1.1 系统数据类型 5. Unicode 字符数据类型字符数据类型Unicode 字符数据类型包括字符数据类型包括Nchar、Nv
17、archar、Ntext三种:三种:1Nchar:其定义方式为:其定义方式为Ncharn。它。它与与Char数据类型类似,不同的是数据类型类似,不同的是Nchar数据数据类型类型n的取值为的取值为14000。Nchar数据类型采用数据类型采用Unicode规范字符集,规范字符集,Unicode规范用两个字规范用两个字节为一个存储单位,其一个存储单位的包容量节为一个存储单位,其一个存储单位的包容量就大大添加了,可以将全世界的言语文字都囊就大大添加了,可以将全世界的言语文字都囊括在内,在一个数据列中就可以同时出现中文、括在内,在一个数据列中就可以同时出现中文、英文、法文等,而不会出现编码冲突。英文
18、、法文等,而不会出现编码冲突。2Nvarchar:其在:其在SQL Server 2005中新中新的定义方式为的定义方式为Nvarchar(n | max) 。它与。它与Varchchar数据类型类似,数据类型类似,Nvarchar数据类型也采用数据类型也采用Unicode规范字符规范字符集,集,n的取值范围为的取值范围为14000。3Ntext:与:与Text数据类型类似,存储在其数据类型类似,存储在其中的数据通常是直接能输出到显示设备上的字中的数据通常是直接能输出到显示设备上的字符,显示设备可以是显示器、窗口或者打印机。符,显示设备可以是显示器、窗口或者打印机。Ntext数据类型采用数据类
19、型采用Unicode规范字符集,因规范字符集,因此其实际上的容量为此其实际上的容量为230-11,073,741,823个字节。个字节。 5.1.1 系统数据类型 6. 二进制字符数据类型二进制字符数据类型二进制数据类型包括二进制数据类型包括Binary、Varbinary、Image三三种:种:1Binary:其定义方式为:其定义方式为Binaryn,数据的,数据的存储长度是固定的,即存储长度是固定的,即n+4个字节,当输入的二进制个字节,当输入的二进制数据长度小于数据长度小于n时,余下部分填充时,余下部分填充0。二进制数据类。二进制数据类型的最大长度即型的最大长度即n的最大值为的最大值为8
20、000,常用于存储,常用于存储图像等数据。图像等数据。2Varbinary:其在:其在SQL Server 2005中新的定中新的定义方式为义方式为Varbinary(n | max),较之以前的版本多了,较之以前的版本多了一个一个max选择,选择,max表示最大存储大小是表示最大存储大小是231-1个字个字节节 。数据的存储长度是变化的,它为实践所输入数。数据的存储长度是变化的,它为实践所输入数据的长度加上据的长度加上4字节。其他含义同字节。其他含义同Binary。3Image:用于存储照片、目录图片或者图画,:用于存储照片、目录图片或者图画,其实际容量为其实际容量为231-12,147,4
21、83,647个字节。个字节。其存储数据的方式与其存储数据的方式与Text数据类型一样,通常存储数据类型一样,通常存储在在Image字段中的数据不能直接用字段中的数据不能直接用Insert语句直接输语句直接输入。入。 5.1.1 系统数据类型 7. 其它数据类型其它数据类型1Sql_variant:用于存储除文本、图形数:用于存储除文本、图形数据和据和Timestamp类型数据外的其他任何合法的类型数据外的其他任何合法的SQL Server数据。此数据类型极大地方便了数据。此数据类型极大地方便了SQL Server的开发任务。的开发任务。2Table:用于存储对表或者视图处置后的:用于存储对表或
22、者视图处置后的结果集。这种新的数据类型使得变量可以存储结果集。这种新的数据类型使得变量可以存储一个表,从而使函数或过程前往查询结果更加一个表,从而使函数或过程前往查询结果更加方便、快捷。方便、快捷。3Timestamp:亦称时间戳数据类型,它:亦称时间戳数据类型,它提供数据库范围内的独一值,反响数据库中数提供数据库范围内的独一值,反响数据库中数据修正的相对顺序,相当于一个单调上升的计据修正的相对顺序,相当于一个单调上升的计数器。当它所定义的列在更新或者插入数据行数器。当它所定义的列在更新或者插入数据行时,此列的值会被自动更新,一个计数值将自时,此列的值会被自动更新,一个计数值将自动地添加到此动
23、地添加到此Timestamp数据列中。假设建立数据列中。假设建立一个名为一个名为“Timestamp的列,那么该列的类的列,那么该列的类型将自动设为型将自动设为Timestamp数据类型。数据类型。4Uniqueidentifier:用于存储一个:用于存储一个16字节字节长的二进制数据类型,它是长的二进制数据类型,它是SQL Server根据计根据计算机网络适配器地址和算机网络适配器地址和CPU时钟产生的全局独时钟产生的全局独一标识符代码一标识符代码Globally Unique Identifier,简写为简写为GUID。此数字可以经过调用。此数字可以经过调用SQL Server的的 new
24、id函数获得,在全球各地的函数获得,在全球各地的计算机经由此函数产生的数字不会一样。计算机经由此函数产生的数字不会一样。5XML :可以存储:可以存储XML数据的数据类型。数据的数据类型。利用它可以将利用它可以将XML实例存储在字段中或者实例存储在字段中或者XML类型的变量中。留意存储在类型的变量中。留意存储在XML中的数据不能中的数据不能超越超越2GB。6Cursor:这是变量或存储过程:这是变量或存储过程OUTPUT 参数的一种数据类型,这些参数包含对游标的参数的一种数据类型,这些参数包含对游标的援用。运用援用。运用 Cursor 数据类型创建的变量可以数据类型创建的变量可以为空。留意:对
25、于为空。留意:对于 CREATE TABLE 语句中的语句中的列,不能运用列,不能运用Cursor 数据类型。数据类型。 5.1.2 自定义数据类型 SQL Server允许用户自定义数据类型,用户自定义允许用户自定义数据类型,用户自定义数据类型是建立在数据类型是建立在SQL Server系统数据类型根底上的,系统数据类型根底上的,当用户定义一种数据类型时,需求指定该类型的称号、当用户定义一种数据类型时,需求指定该类型的称号、建立在其上的系统数据类型以及能否允许为空等。建立在其上的系统数据类型以及能否允许为空等。SQL Server为用户提供了两种方法来创建自定义数为用户提供了两种方法来创建自
26、定义数据类型:据类型:1运用运用SQL Server管理平台创建用户自定义数据管理平台创建用户自定义数据类型;类型;2利用系统存储过程创建用户自定义数据类型利用系统存储过程创建用户自定义数据类型 5.1.2 自定义数据类型 1运用SQL Server管理平台创建用户自定义数据类型在SQL Server管理平台中,翻开指定的效力器和数据库项,如图5-1所示,选择并展开“程序类型项,接下来用右键单击“用户自定义数据类型选项,从弹出的快捷菜单中选择“新建命令,出现用户定义的数据类型属性对话框,如图5-2所示。 图5-1 翻开用户定义的数据类型窗口 图5-2 用户定义的数据类型属性对话框 5.1.2
27、自定义数据类型 2利用系统存储过程创建用户自定义数据类型 系统存储过程sp_addtype为用户提供了用T_SQL语句创建自定义数据类型的途径,其语法方式如下: sp_addtype typename= type, phystype= system_data_type , nulltype= null_type , owner= owner_name 5.1.2 自定义数据类型 2利用系统存储过程创建用户自定义数据类型 例5-1自定义一个地址address数据类型。程序清单如下:exec sp_addtype address, varchar80, not null5.2 表操作 表是包含数据
28、库中一切数据的数据库对象。表表是包含数据库中一切数据的数据库对象。表定义为列的集合,数据在表中是按行和列的格定义为列的集合,数据在表中是按行和列的格式组织陈列的,每行代表独一的一条记录,而式组织陈列的,每行代表独一的一条记录,而每列代表记录中的一个域。每列代表记录中的一个域。5.2.1 创建表创建表 5.2.2 创建约束创建约束5.2.3 修正表修正表5.2.4 查看表查看表 5.2.5 删除表删除表 5.2.1 创建表利用利用SQL Server管理平台创建表管理平台创建表在在SQL Server管理平台中,展开指定的效力器和数据库,翻开想管理平台中,展开指定的效力器和数据库,翻开想要创建新
29、表的数据库,右击表对象,并从弹出的快捷菜单中选择要创建新表的数据库,右击表对象,并从弹出的快捷菜单中选择“新建表选项,如图新建表选项,如图5-4所示。在图所示。在图5-4的对话框中,可以对表的的对话框中,可以对表的构造进展更改,设置主键及字段属性,运用构造进展更改,设置主键及字段属性,运用SQL Server管理平台管理平台可以非常直观地修正数据库构造和添加数据。在表中恣意行上右击,可以非常直观地修正数据库构造和添加数据。在表中恣意行上右击,那么弹出一个快捷菜单,如图那么弹出一个快捷菜单,如图5-6所示。所示。 图5-4 新建表对话框 图5-6 设置字段属性对话框 5.2.1 创建表2. 利用
30、利用create命令创建表命令创建表 运用运用create命令创建表非常灵敏,它允许对表设置几种不同的选项,命令创建表非常灵敏,它允许对表设置几种不同的选项,包括表名、存放位置和列的属性等。包括表名、存放位置和列的属性等。其完好语法方式如下:其完好语法方式如下: CREATE TABLE database_name.owner.|owner.table_name |column_name AS computed_column_expression| ,nON filegroup|DEFAULT TEXTIMAGE_ON filegroup|DEFAULT :=column_name data_
31、type COLLATE DEFAULT constant_expression |IDENTITYseed,increment NOT FOR REPLICATION ROWGUIDCOL .n 5.2.1 创建表2. 利用利用create命令创建表命令创建表 其中,各参数的阐明如下:其中,各参数的阐明如下:database_name:用于指定所创建表的数据库称号。:用于指定所创建表的数据库称号。owner:用于指定新建表的一切者的用户名。:用于指定新建表的一切者的用户名。table_name:用于指定新建表的称号。:用于指定新建表的称号。column_name:用于指定新建表的列名。:用于
32、指定新建表的列名。computed_column_expression:用于指定计算列的列值表达式。:用于指定计算列的列值表达式。ON filegroup | DEFAULT:用于指定存储表的文件组名。:用于指定存储表的文件组名。TEXTIMAGE_ON:用于指定:用于指定 text、ntext 和和 image 列的数据存储列的数据存储的文件组。的文件组。data_type:用于指定列的数据类型。:用于指定列的数据类型。DEFAULT:用于指定列的默许值。:用于指定列的默许值。constant_expression:用于指定列的默许值的常量表达式、可以:用于指定列的默许值的常量表达式、可以为
33、一个常量或为一个常量或NULL或系统函数。或系统函数。IDENTITY:用于将列指定为标识列。:用于将列指定为标识列。Seed:用于指定标识列的初:用于指定标识列的初始值。始值。Increment:用于指定标识列的增量值。:用于指定标识列的增量值。NOT FOR REPLICATION:用于指定列的:用于指定列的IDENTITY属性,在把从属性,在把从其他表中复制的数据插入到表中时不发生作用,即不生成列值,其他表中复制的数据插入到表中时不发生作用,即不生成列值,使得复制的数据行坚持原来的列值。使得复制的数据行坚持原来的列值。ROWGUIDCOL:用于将列指定为全局独一标识行号列:用于将列指定为
34、全局独一标识行号列row global unique identifier column。COLLATE:用于指定表的校验方式。:用于指定表的校验方式。column_constraint和和table_constraint:用于指定列约束和表约:用于指定列约束和表约束。束。 5.2.1 创建表2. 利用利用create命令创建表命令创建表 例例5-3创建了一个工人信息表,它包括工人编号、姓名、性别、创建了一个工人信息表,它包括工人编号、姓名、性别、出生日期、职位、工资和备注信息。出生日期、职位、工资和备注信息。SQL语句的程序清单如下:语句的程序清单如下: CREATE TABLE worke
35、r number char(8) not null, name char8 NOT NULL, sex char2 NULL, birthday datetime null, job_title varchar10 null, salary money null, memo ntext null 5.2.2 创建约束 约束是约束是SQL Server提供的自动坚持数据库完好性的一种方法,它经过提供的自动坚持数据库完好性的一种方法,它经过限制字段中数据、记录中数据和表之间的数据来保证数据的完好性。在限制字段中数据、记录中数据和表之间的数据来保证数据的完好性。在SQL SERVER中,对于根本表的
36、约束分为列约束和表约束。中,对于根本表的约束分为列约束和表约束。 列约束是对某一个特定列的约束,包含在列定义中,直接跟在该列的其列约束是对某一个特定列的约束,包含在列定义中,直接跟在该列的其他定义之后,用空格分隔,不用指定列名;表约束与列定义相互独立,他定义之后,用空格分隔,不用指定列名;表约束与列定义相互独立,不包括在列定义中,通常用于对多个列一同进展约束,与列定义用不包括在列定义中,通常用于对多个列一同进展约束,与列定义用,分分隔,定义表约束时必需指出要约束的那些列的称号。隔,定义表约束时必需指出要约束的那些列的称号。 完好性约束的根本语法格式为:完好性约束的根本语法格式为: CONSTR
37、AINT constraint_name约束名约束名 约束不指定称号时,系统会给定一个称号。约束不指定称号时,系统会给定一个称号。 在在SQL Server 2005中有中有6种约束:主键约束种约束:主键约束primary key constraint、独一性约束、独一性约束unique constraint、检查约束、检查约束check constraint、默许约束、默许约束default constraint、外部键约束、外部键约束foreign key constraint和空值和空值NULL约束。约束。 5.2.2 创建约束 主键主键PRIMARY KEY约束约束 PRIMARY K
38、EY约束用于定义根本表的主键,它是独一确定表约束用于定义根本表的主键,它是独一确定表中每一条记录的标识符,其值不能为中每一条记录的标识符,其值不能为NULL,也不能反复,以,也不能反复,以此来保证明体的完好性。此来保证明体的完好性。PRIMARY KEY与与UNIQUE约束类似,约束类似,经过建立独一索引来保证根本表在主键列取值的独一性,但它经过建立独一索引来保证根本表在主键列取值的独一性,但它们之间存在着很大的区别:们之间存在着很大的区别: 在一个根本表中只能定义一个在一个根本表中只能定义一个PRIMARY KEY约束,但可定约束,但可定义多个义多个UNIQUE约束;约束; 对于指定为对于指
39、定为PRIMARY KEY的一个列或多个列的组合,其中的一个列或多个列的组合,其中任何一个列都不能出现空值,而对于任何一个列都不能出现空值,而对于UNIQUE所约束的独一键,所约束的独一键,那么允许为空。那么允许为空。 留意:不能为同一个列或一组列既定义留意:不能为同一个列或一组列既定义UNIQUE约束,又定义约束,又定义PRIMARY KEY约束。约束。 PRIMARY KEY既可用于列约束,也可用于表约束。既可用于列约束,也可用于表约束。5.2.2 创建约束 主键主键PRIMARY KEY约束约束 主键的创建操作方法有两种:主键的创建操作方法有两种:SQL Server管理平台操作法管理平
40、台操作法和和Transact-SQL语句操作法。语句操作法。 1 SQL Server管理平台操作法,如图管理平台操作法,如图5-7所示。所示。图5-7 选择多个字段共同做为主键对话框 5.2.2 创建约束 主键主键PRIMARY KEY约束约束 2运用运用Transact-SQL语句操作法设置主键约束,其语法方语句操作法设置主键约束,其语法方式如下:式如下: CONSTRAINT constraint_name PRIMARY KEY CLUSTERED|NONCLUSTERED column_namePRIMARY KEY用于定义表约束时,即将某些列的组合定义为用于定义表约束时,即将某些列
41、的组合定义为主键,其语法格式如下:主键,其语法格式如下: CONSTRAINT constraint_name PRIMARY KEY CLUSTERED|NONCLUSTERED column_name,n 5.2.2 创建约束 主键主键PRIMARY KEY约束约束 例例5-5 建立一个建立一个SC表,定义表,定义SNO,CNO共同组成共同组成SC的主键的主键程序清单如下:程序清单如下:CREATE TABLE SC(SNO CHAR(5) NOT NULL,CNO CHAR(5) NOT NULL,SCORE NUMERIC(3),CONSTRAINT SC_PRIM PRIMARY K
42、EY(SNO,CNO) 5.2.2 创建约束 2. 独一性约束独一性约束 独一性约束用于指定一个或者多个列的组合值具有独一性,以防独一性约束用于指定一个或者多个列的组合值具有独一性,以防止在列中输入反复的值。定义了止在列中输入反复的值。定义了UNIQUE约束的那些列称为独一约束的那些列称为独一键,系统自动为独一键建立独一索引,从而保证了独一键的独一键,系统自动为独一键建立独一索引,从而保证了独一键的独一性。性。 当运用独一性约束时,需求思索以下几个要素:当运用独一性约束时,需求思索以下几个要素:运用独一性约束的字段允许为空值;运用独一性约束的字段允许为空值;一个表中可以允许有多个独一性约束;一
43、个表中可以允许有多个独一性约束;可以把独一性约束定义在多个字段上;可以把独一性约束定义在多个字段上;独一性约束用于强迫在指定字段上创建一个独一性索引;独一性约束用于强迫在指定字段上创建一个独一性索引;默许情况下,创建的索引类型为非聚集索引。默许情况下,创建的索引类型为非聚集索引。 5.2.2 创建约束 2. 独一性约束独一性约束 创建独一性约束的方法有两种:经过创建独一性约束的方法有两种:经过SQL Server管理平台可以完管理平台可以完成创建和修正独一性约束的操作;运用成创建和修正独一性约束的操作;运用Transact-SQL语句完成独语句完成独一性约束的操作。一性约束的操作。 1经过经过
44、SQL Server管理平台可以完成创建和修正独一性约束管理平台可以完成创建和修正独一性约束的操作,如图的操作,如图5-8所示。所示。 图5-8 创建独一性约束对话框 5.2.2 创建约束 2. 独一性约束独一性约束 2运用运用Transact-SQL语句完成独一性约束的操作,其语法方语句完成独一性约束的操作,其语法方式如下:式如下:CONSTRAINT constraint_name UNIQUE CLUSTERED|NONCLUSTEREDcolumn_name,n 例例5-6创建一个学生信息表,其中创建一个学生信息表,其中name字段具有独一性。字段具有独一性。程序清单如下:程序清单如下
45、:Create table studentid char8,name char10,sex char2, constraint pk_id primary keyid, constraint uk_identity uniquename 5.2.2 创建约束 3. 检查约束检查约束 检查约束对输入列或者整个表中的值设置检查条检查约束对输入列或者整个表中的值设置检查条件,以限制输入值,保证数据库数据的完好性。件,以限制输入值,保证数据库数据的完好性。 当运用检查约束时,应该思索和留意以下几点:当运用检查约束时,应该思索和留意以下几点:一个列级检查约束只能与限制的字段有关;一个表级一个列级检查约束
46、只能与限制的字段有关;一个表级检查约束只能与限制的表中字段有关;检查约束只能与限制的表中字段有关;一个表中可以定义多个检查约束;一个表中可以定义多个检查约束;每个每个CREATE TABLE语句中每个字段只能定义一个检语句中每个字段只能定义一个检查约束;查约束;在多个字段上定义检查约束,那么必需将检查约束定在多个字段上定义检查约束,那么必需将检查约束定义为表级约束;义为表级约束;当执行当执行INSERT语句或者语句或者UPDATE语句时,检查约束语句时,检查约束将验证数据;将验证数据;检查约束中不能包含子查询。检查约束中不能包含子查询。 5.2.2 创建约束 3. 检查约束检查约束 创建检查约
47、束常用的操作方法有如下两种创建检查约束常用的操作方法有如下两种 :运用:运用SQL Server管理平台创建检查约束;用管理平台创建检查约束;用Transact-SQL语句语句创建检查约束。创建检查约束。1运用运用SQL Server管理平台创建检查约束,如图管理平台创建检查约束,如图5-9所示。所示。图5-9 创建检查约束对话框 5.2.2 创建约束 3. 检查约束检查约束 2用用Transact-SQL语句创建检查约束。语句创建检查约束。 用用Transact-SQL语句创建检查约束。其语法方式如语句创建检查约束。其语法方式如下:下: CONSTRAINT constraint_name
48、CHECK NOT FOR REPLICATION (logical_expression) 例例5-8 建立一个建立一个SC表,定义表,定义SCORE 的取值范围为的取值范围为0到到100之间。之间。程序清单如下:程序清单如下: CREATE TABLE SC (SNO CHAR(5), CNO CHAR(5), SCORE NUMERIC(5,1) CONSTRAINT SCORE_CHK CHECK(SCORE=0 AND SCORE =100) 5.2.2 创建约束 4. 默许默许DEFAULT约束约束 默许约束指定在插入操作中假设没有提供输入值时,默许约束指定在插入操作中假设没有提供
49、输入值时,那么系统自动指定值。默许约束可以包括常量、函数、那么系统自动指定值。默许约束可以包括常量、函数、不带变元的内建函数或者空值。不带变元的内建函数或者空值。 运用默许约束时,应该留意以下几点:运用默许约束时,应该留意以下几点:1每个字段只能定义一个默许约束;每个字段只能定义一个默许约束;2假设定义的默许值长于其对应字段的允许长度,假设定义的默许值长于其对应字段的允许长度,那么输入到表中的默许值将被截断;那么输入到表中的默许值将被截断;3不能参与到带有不能参与到带有IDENTITY属性或者数据类型为属性或者数据类型为timestamp的字段上;的字段上;4假设字段定义为用户定义的数据类型,
50、而且有一假设字段定义为用户定义的数据类型,而且有一个默许绑定到这个数据类型上,那么不允许该字段有个默许绑定到这个数据类型上,那么不允许该字段有默许约束。默许约束。 5.2.2 创建约束 4. 默许默许DEFAULT约束约束 创建默许约束常用的操作方法有如下两种:运用创建默许约束常用的操作方法有如下两种:运用SQL Server管理平台创建默许约束;创建默许约束的管理平台创建默许约束;创建默许约束的Transact-SQL语句操作法。语句操作法。1运用运用SQL Server管理平台创建默许约束,如图管理平台创建默许约束,如图5-10所示。所示。图5-10 创建默许约束对话框 5.2.2 创建约
51、束 4. 默许默许DEFAULT约束约束 2创建默许约束的创建默许约束的Transact-SQL语句操作语句操作法。其语法方式如下:法。其语法方式如下: CONSTRAINT constraint_name DEFAULT constraint_expression FOR column_name例例5-10为为 dept字段创建默许约束。字段创建默许约束。程序清单如下:程序清单如下:constraint con_dept default 计算机计算机 for dept 5.2.2 创建约束 5. 外部键约束外部键约束 外键外键 (FOREIGN KEY) 是用于建立和加强两是用于建立和加强两
52、个表数据之间的链接的一列或多列。外部键约个表数据之间的链接的一列或多列。外部键约束用于强迫参照完好性。束用于强迫参照完好性。 当运用外部键约束时,应该思索以下几个要当运用外部键约束时,应该思索以下几个要素:素:外部键约束提供了字段参照完好性;外部键约束提供了字段参照完好性;外部键从句中的字段数目和每个字段指定的数外部键从句中的字段数目和每个字段指定的数据类型都必需和据类型都必需和REFERENCES从句中的字段从句中的字段相匹配;相匹配;外部键约束不能自动创建索引,需求用户手动外部键约束不能自动创建索引,需求用户手动创建;创建;用户想要修正外部键约束的数据,必需有对外用户想要修正外部键约束的数
53、据,必需有对外部键约束所参考表的部键约束所参考表的SELECT权限或者权限或者REFERENCES权限;权限;参考同一表中的字段时,必需只运用参考同一表中的字段时,必需只运用REFERENCES子句,不能运用外部键子句;子句,不能运用外部键子句;一个表中最多可以有一个表中最多可以有31个外部键约束;个外部键约束;在暂时表中,不能运用外部键约束;在暂时表中,不能运用外部键约束;主键和外部键的数据类型必需严厉匹配主键和外部键的数据类型必需严厉匹配 5.2.2 创建约束 5. 外部键约束外部键约束 创建外部键约束常用的操作方法有如下两种:创建外部键约束常用的操作方法有如下两种:在在SQL Serve
54、r管理平台中添加外部键约束;运管理平台中添加外部键约束;运用用Transact-SQL语句设置外部键约束。语句设置外部键约束。1在在SQL Server管理平台中添加外部键约管理平台中添加外部键约束,在束,在SQL Server管理平台中添加外部键约束。管理平台中添加外部键约束。如图如图5-11,5-12所示。所示。 图5-11 选择创建外键约束的字段 图5-12 创建外键约束对话框 5.2.2 创建约束 5. 外部键约束外部键约束 2运用运用Transact-SQL语句设置外部键约束语句设置外部键约束 ,其语法方式如下:其语法方式如下: CONSTRAINT constraint_name
55、FOREIGN KEY column_name,n REFERENCES ref_table ref_column,n 例例5-11 建立一个建立一个SC表,定义表,定义SNO,CNO为为SC的的外部键。外部键。程序清单如下:程序清单如下: CREATE TABLE SC (SNO CHAR(5) NOT NULL CONSTRAINT S_FORE FOREIGN KEY REFERENCES S(SNO), CNO CHAR(5) NOT NULL CONSTRAINT C_FORE FOREIGN KEY REFERENCES C(CNO), SCORE NUMERIC(3), CONS
56、TRAINT S_C_PRIM PRIMARY KEY (SNO,CNO) 5.2.2 创建约束 6. 空值空值NULL约束约束 空值空值NULL约束用来控制能否允许该字段的约束用来控制能否允许该字段的值为值为NULL。NULL值不是值不是0也不是空白,更不也不是空白,更不是填入字符串的是填入字符串的“NULL字符串,而是表示字符串,而是表示“不不知道、知道、“ 不确定或不确定或“没有数据的意思。没有数据的意思。当某一字段的值一定要输入才有意义的时候,当某一字段的值一定要输入才有意义的时候,那么可以设置为那么可以设置为NOT NULL。如主键列就不允。如主键列就不允许出现空值,否那么就失去了独
57、一标识一条记许出现空值,否那么就失去了独一标识一条记录的作用。空值录的作用。空值NULL约束只能用于定义列约束只能用于定义列约束。约束。 创建空值创建空值NULL约束常用的操作方法有如下约束常用的操作方法有如下两种:两种: 1在在SQL Server管理平台中添加空值管理平台中添加空值NULL约束;约束; 2运用运用Transact-SQL语句设置空值语句设置空值NULL约束。约束。 5.2.2 创建约束 6. 空值空值NULL约束约束 1在在SQL Server管理平台中添加空值管理平台中添加空值NULL约束。如图约束。如图5-14所示。所示。图5-14设置空值NULL约束对话框 5.2.2
58、 创建约束 6. 空值空值NULL约束约束 2运用运用Transact-SQL语句设置空值语句设置空值NULL约束,约束, 其语法方式如下:其语法方式如下: CONSTRAINT NULL|NOT NULL 例例5-13 建立一个建立一个S表,对表,对SNO字段进展字段进展NOT NULL约束。约束。程序清单如下:程序清单如下: CREATE TABLE S (SNO CHAR(10) CONSTRAINT S_CONS NOT NULL, SN VARCHAR(20), AGE INT, SEX CHAR(2) DEFAULT 男男 , DEPT VARCHAR(20) 5.2.3 修正表
59、当数据库中的表创建完成后,可以根据需求改动表中原先定义的许多项选择项,以更改表的构造。用户可以添加、删除和修正列,添加、删除和修正约束,更改表名以及改动表的一切者等。1、修正列属性 修正列属性包括以下一些内容:1修正列的数据类型;2修正列的数据长度;3修正列的精度;4修正列的小数位数;5修正列的为空性。 5.2.3 修正表 2、添加和删除列 在SQL Server 2005中,假设列允许空值或对列创建 DEFAULT 约束,那么可以将列添加到现有表中。将新列添加到表时,SQL Server 2005数据库引擎在该列为表中的每个现有数据行插入一个值。因此,在向表中添加列时向列添加DEFAULT定
60、义会很有用。假设新列没有 DEFAULT定义,那么必需指定该列允许空值。数据库引擎将空值插入该列,假设新列不允许空值,那么前往错误。 反之,可以删除现有表中的列,但具有以下特征的列不能被删除: 1用于索引;2用于CHECK、FOREIGN KEY、UNIQUE 或PRIMARY KEY约束;3与DEFAULT 定义关联或绑定到某一默许对象;4绑定到规那么;5已注册支持全文;6用作表的全文键。 5.2.3 修正表 3、添加、修正和删除约束 1添加、修正和删除PRIMARY KEY 约束。 2添加、修正和删除UNIQUE约束。 3添加、修正和删除CHECK约束。 4添加、修正和删除DEFAULT约
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年监理考试各科复习试题及答案
- 电商设计师情境模拟试题及答案
- 投资咨询工程师如何处理客户关系试题及答案
- 信息化物流师行业机会试题及答案
- 全媒体运营师的持续学习计划试题及答案
- 小刘固农场农产品网络营销方案设计
- 2024监理工程师考试复习建议试题及答案
- 2025年二月份跨国宠物监护权在邴雅薛含协议中的体现
- 黑龙江民族职业学院《数学模型及应用》2023-2024学年第二学期期末试卷
- 黑龙江省伊春市五营区2024-2025学年数学三下期末考试试题含解析
- 紧急采购申请单
- 小学道德与法治学科高级(一级)教师职称考试试题(有答案)
- 复旦大学英语水平测试大纲9300词汇表讲义
- (课件)肝性脑病
- DB63-T 1675-2018+建筑消防设施维护保养技术规范
- 西师版数学四年级下册全册教案
- DB11T 1894-2021 10kV及以下配电网设施配置技术规范
- 零星材料明细单
- 施工现场安全检查记录表(周)以及详细记录
- 2022专升本无机化学试卷答案
- 电子课件《英语(第一册)(第三版)》A013820英语第一册第三版Unit6
评论
0/150
提交评论