版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库对象的操作数据库对象的操作目标目标 主要对主要对SQL Server2000的数据类型、的数据类型、数据表的操作、视图的操作,要求能够根数据表的操作、视图的操作,要求能够根据设计需求完成相应表和视图的设计。据设计需求完成相应表和视图的设计。1 、 数据类型数据类型 SQL Server 2000中定义了中定义了25种数据类型,同种数据类型,同时允许用户自己定义数据类型。时允许用户自己定义数据类型。 系统定义的数据类型有系统定义的数据类型有: binary(n) 、varbinary(n)、char(n)、varchar(n)、nchar(n)、nvarchar(n)、datetime、s
2、malldatetime、decimalp(,s)、numericp(,s)、float(n)、real、int 、smallint、tinyint 、money、smallymoney、 bit、cursor、sysname、timestamp、uniqueidentifier、 text、image 和和ntext1 、 数据类型数据类型 1.1 系统数据类型系统数据类型q 整型数据类型整型数据类型 整型数据类型是最常用的数据类型之一,它主要用来整型数据类型是最常用的数据类型之一,它主要用来存储数值,可以直接进行数据运算,而不必使用函数转换。存储数值,可以直接进行数据运算,而不必使用函数转
3、换。 Int ( integer ):int(或(或integer)数据类型可以存储从)数据类型可以存储从-231 (-2,147,483,648)到)到 231-1 (2,147,483,647)范)范围之间的所有正负整数。围之间的所有正负整数。存储大小为存储大小为4个字节。个字节。 Smallint:可以存储从可以存储从-215(-32,768)到)到215-1范围之间范围之间的所有正负整数的所有正负整数 。 Tinyint:可以存储从可以存储从0到到255范围之间的所有正整数。范围之间的所有正整数。 q 浮点数据类型浮点数据类型 浮点数据类型用于存储十进制小数。浮点数值的数浮点数据类型用
4、于存储十进制小数。浮点数值的数据在据在SQL Server中采用只入不舍的方式进行存储。中采用只入不舍的方式进行存储。 Real:可以存储正的或者负的十进制数值,最大可以有可以存储正的或者负的十进制数值,最大可以有7位精确位数。位精确位数。 Float:可以精确到第可以精确到第15位小数,其范围从位小数,其范围从-1.79E-308到到1.79E+308。 Decimal和和numeric:Decimal数据类型和数据类型和numeric数据类数据类型完全相同,它们可以提供小数所需要的实际存储空间,型完全相同,它们可以提供小数所需要的实际存储空间,但也有一定的限制,可以用但也有一定的限制,可以
5、用2到到17个字节来存储从个字节来存储从-1038-1到到1038-1之间的数值。之间的数值。q 字符数据类型字符数据类型 字符数据类型可以用来存储各种字母、数字符号字符数据类型可以用来存储各种字母、数字符号和特殊符号。和特殊符号。 Char:其定义形式为其定义形式为char ( n ),每个字符和符号占用,每个字符和符号占用一个字节的存储空间。一个字节的存储空间。 Varchar:其定义形式为其定义形式为varchar ( n )。用。用char数据类数据类型可以存储长达型可以存储长达255个字符的可变长度字符串个字符的可变长度字符串 。 Nchar:其定义形式为其定义形式为nchar (
6、n )。 Nvarchar:其定义形式为其定义形式为nvarchar ( n )。q 日期和时间数据类型日期和时间数据类型 Datetime:用于存储日期和时间的结合体用于存储日期和时间的结合体 。它可。它可以存储从公元以存储从公元1753年年1月月1日零时起到公元日零时起到公元9999年年12月月31日日23时时59分分59秒之间的所有日期和时间秒之间的所有日期和时间 。 Smalldatetime:与与datetime数据类型类似,但其日数据类型类似,但其日期时间范围较小,它存储从期时间范围较小,它存储从1900年年1月月1日到日到2079年年6月月6日内的日期。日内的日期。q 文本和图形
7、数据类型文本和图形数据类型 Text:用于存储大量文本数据,其容量理论上为用于存储大量文本数据,其容量理论上为1到到231-1(2,147,483,647)个字节,但实际应用时)个字节,但实际应用时要根据硬盘的存储空间而定。要根据硬盘的存储空间而定。 Ntext:与与text数据类型类似,存储在其中的数据通数据类型类似,存储在其中的数据通常是直接能输出到显示设备上的字符,显示设备可常是直接能输出到显示设备上的字符,显示设备可以是显示器、窗口或者打印机。以是显示器、窗口或者打印机。 Image:用于存储照片、目录图片或者图画,其理用于存储照片、目录图片或者图画,其理论容量为论容量为231-1(2
8、,147,483,647)个字节。)个字节。q 货币数据类型货币数据类型 Money:用于存储货币值,存储在用于存储货币值,存储在money数据类型数据类型中的数值以一个正数部分和一个小数部分存储在两中的数值以一个正数部分和一个小数部分存储在两个个4字节的整型值中,存储范围为字节的整型值中,存储范围为-922337213685477.5808到到922337213685477.5808,精度为货币单位的万分之一。精度为货币单位的万分之一。 Smallmoney:与与money数据类型类似,但其存储数据类型类似,但其存储的货币值范围比的货币值范围比money数据类型小,其存储范围为数据类型小,其
9、存储范围为-214748.3468到到214748.3467。q 位数据类型位数据类型 Bit:称为位数据类型,其数据有两种取值:称为位数据类型,其数据有两种取值:0和和1,长度为,长度为1字节。字节。q 二进制数据类型二进制数据类型 Binary:其定义形式为其定义形式为binary(n),数据的存储长度是,数据的存储长度是固定的,即固定的,即n+4字节,当输入的二进制数据长度小于字节,当输入的二进制数据长度小于n时,余下部分填充时,余下部分填充0。 Varbinary:其定义形式为其定义形式为varbinary(n),数据的存储,数据的存储长度是变化的,它为实际所输入数据的长度加上长度是变
10、化的,它为实际所输入数据的长度加上4字字节。其它含义同节。其它含义同binary。q 特殊数据类型特殊数据类型 Timestamp:亦称时间戳数据类型,它提供数据库范亦称时间戳数据类型,它提供数据库范围内的唯一值,反应数据库中数据修改的相对顺序,围内的唯一值,反应数据库中数据修改的相对顺序,相当于一个单调上升的计数器。相当于一个单调上升的计数器。 Uniqueidentifier:用:用于存储一个于存储一个16字节长的二进制数据类型,它是字节长的二进制数据类型,它是SQL Server根据计算机网络适配器地址和根据计算机网络适配器地址和CPU时钟产生的时钟产生的唯一号码而生成的全局唯一标识符代
11、码(唯一号码而生成的全局唯一标识符代码(Globally Unique Identifier,简写为,简写为GUID)。)。q 新增数据类型新增数据类型 Bigint:用于存储从用于存储从-263(-9,223,372,036,854,775,807)到)到263-1(9,223,372,036,854,775,807)之间的所有正负整数。)之间的所有正负整数。 sql_variant:用于存储除文本、图形数据和用于存储除文本、图形数据和timestamp类型数据外的其它任何合法的类型数据外的其它任何合法的SQL Server数据。数据。 table:用于存储对表或者视图处理后的结果集。这种用
12、于存储对表或者视图处理后的结果集。这种新的数据类型使得变量可以存储一个表,从而使函数新的数据类型使得变量可以存储一个表,从而使函数或过程返回查询结果更加方便、快捷。或过程返回查询结果更加方便、快捷。1 1 二进制数据类型二进制数据类型 二进制数据类型包括三种:二进制数据类型包括三种: binary (n):固定长度的:固定长度的n个字节二进制数据。个字节二进制数据。n必须是必须是1到到8000。存储空间大小为。存储空间大小为n+4字节。字节。 varbinary(n):n个字节可变长二进制数据。个字节可变长二进制数据。n必须从必须从1到到8000。存储空间大小为实际数据长度。存储空间大小为实际
13、数据长度+4个字节,而不是个字节,而不是n个字节。个字节。 image:可变长度的二进制,其最大长度为可变长度的二进制,其最大长度为231-1个字节。个字节。2 2 数字数据类型数字数据类型 数字数据类型包括精确数字、近似数字两种。数字数据类型包括精确数字、近似数字两种。 精确数字又分为精确整数和精确小数。精确数字又分为精确整数和精确小数。 1.精确整数精确整数 bigint:从:从-263到到263-1的整型数据。的整型数据。8个字节。个字节。 int:从从-231到到231-1的整型数据。的整型数据。4个字节。个字节。 smallint:从从-215到到215-1的整数数据。的整数数据。2
14、个字节。个字节。 tinyint:从从0到到255的整数数据。的整数数据。1个字节。个字节。 2.精确小数精确小数 decimal :带定点精度和小数位数的带定点精度和小数位数的numeric数据数据类型,从类型,从-1038+1到到1038-1。 numeric:功能上等同功能上等同decimal。 3.近似数字近似数字 float:从从-1.79E+308到到1.79E+308的浮点精度数字。的浮点精度数字。 real:从从-3.04E+38到到3.04E+38的浮点精度数字。的浮点精度数字。 字符数据用字符数据用单引号单引号括起来括起来,由字母、数字、和符号组由字母、数字、和符号组合而成
15、合而成,在内存中占用一个字节在内存中占用一个字节。例例Nanjing、3.23、&*op都是合法的字符都是合法的字符数据。数据。 char:固定长度的非固定长度的非unicode字符数据,最大长度字符数据,最大长度为为8000个字符;个字符; varchar:可变长度的非可变长度的非unicode 字符数据,最大字符数据,最大长度为长度为8000个字符;个字符; text:可变长度的非可变长度的非unicode 字符数据,最大长度字符数据,最大长度为为231-1个字符;个字符;3 3 字符数据类型字符数据类型 对于用单个字节编码每个字符的数据类型,存在的问题就对于用单个字节编码每个字符
16、的数据类型,存在的问题就是此数据类型只能表示是此数据类型只能表示256个不同的字符。象汉字、日文个不同的字符。象汉字、日文或韩国文字这样具有数千个字符的字母表就不可能处理了。或韩国文字这样具有数千个字符的字母表就不可能处理了。 unicode标准标准每个字符用两个字节来编码,所以在系统中使来编码,所以在系统中使用用unicode数据类型,就可以解决大字母表的字符问题了。数据类型,就可以解决大字母表的字符问题了。 unicode数据类型包括数据类型包括nchar、nvarchar和和ntext。 nchar:固定长度的:固定长度的unicode 数据,最大长度为数据,最大长度为4000个字符。个
17、字符。 nvarchar:可变长度的:可变长度的unicode数据,其最大长度为数据,其最大长度为4000字符。字符。 ntext:可娈长度的:可娈长度的unicoce数据,其最大长度为数据,其最大长度为230-1个字符。个字符。 当列的长度固定不变时,使用当列的长度固定不变时,使用nchar数据类型;当列的长数据类型;当列的长度变化时,使用度变化时,使用nvarchar数据类型;如果需要存储的字符数据类型;如果需要存储的字符数多于数多于4000个时,应使用个时,应使用ntext数据类型存储。数据类型存储。4 unicode 数据类型3.2.5 日期和时间数据类型 日期和时间数据类型包括日期和
18、时间数据类型包括datetime 和和smalldatetime两种数据两种数据类型。类型。 datetime:存储从:存储从1753年年1月月1日到日到9999年年12月月31日的日期和时间数据,日的日期和时间数据,每一个值要求每一个值要求8个字节,个字节,精确到百分之三秒精确到百分之三秒(或(或3.33毫秒)。毫秒)。 smalldatime:存储从:存储从1900年年1月月1日到日到2079年年12月月31日的日期和时间日的日期和时间数据,每一个值要求数据,每一个值要求4个字节,个字节,精确到分钟精确到分钟。 设置日期格式的命令如下:设置日期格式的命令如下: set dateformat
19、 format |format_var其中其中,format | format 是日期的格式。有效参数包括是日期的格式。有效参数包括MDY、DMY、YMD、YDM、MYD、DYM。默认格式为。默认格式为MDY。例3-1 设置日期格式设置日期格式set dateformat mdygodeclare datevar datetimeset datevar =06/03/2006select datevar3.2.6货币数据类型 货币数据类型表示货币数量,货币数据类型包括货币数据类型表示货币数量,货币数据类型包括money和和smallmoney。 money: 货币数值介于货币数值介于-263与
20、与263-1之间,精确到货币单位的千分之十,之间,精确到货币单位的千分之十,money数据类型要求个存储字节。数据类型要求个存储字节。 smallmoney:货币数值介于:货币数值介于-214748.3648与与+214748.3647之间,精确到之间,精确到货币单位的千分之十,货币单位的千分之十,smallmoney数据类型要求数据类型要求4个存储字节。个存储字节。3.2.7特殊数据类型 在在SQL中特殊的数据类型有三种:中特殊的数据类型有三种:bit、timestamp和和uniqueidentifier。 bit:由:由1和和0组成,使用组成,使用bit数据类型可以表示真、假或数据类型可
21、以表示真、假或on、off,不能对,不能对bit的列使用索引。的列使用索引。 timestamp:以二进制格式表示:以二进制格式表示SQL Server活动的先后顺序。在数据库活动的先后顺序。在数据库范围内,范围内,timestamp是唯一的,每次更新行时进行更新。是唯一的,每次更新行时进行更新。 uniqueidentifer:全局唯一标识符(:全局唯一标识符(GUID),以十六进制数字表示一个),以十六进制数字表示一个全局惟一的标识。全局惟一的标识。3.2.8 用户自定义数据类型 在在SQL Server中中,用户可以根据需要自定义数据类型。用户可以根据需要自定义数据类型。用户可以用户可以
22、用用SQL语言语言或或企业管理器企业管理器来自定义数据类型。来自定义数据类型。 自定义数据类型定义后,与系统数据类型一样使用。自定义数据类型定义后,与系统数据类型一样使用。 创建自定义数据类型的好处:创建自定义数据类型的好处: 利用自定义数据类型可使不同表不重复出现的各列数据具有利用自定义数据类型可使不同表不重复出现的各列数据具有相同的特性。相同的特性。 1.创建用户自定义数据类型 ()使用使用SQL 语句创建语句创建使用系统存储过程使用系统存储过程sp_addtype创建,语法如下:创建,语法如下:sp_addtype type_name ,phystype(length)|(precisi
23、on,scale),null | not null | identity2、 自定义数据类型自定义数据类型 1.使用企业管理器(使用企业管理器(Enterprise Manager)创建用户自)创建用户自定义数据类型。定义数据类型。2.利用系统存储过程创建用户自定义数据类型。利用系统存储过程创建用户自定义数据类型。v系统存储过程系统存储过程sp_addtype为用户提供了为用户提供了T_SQL语句语句创建自定义数据类型的途径,其语法形式如下:创建自定义数据类型的途径,其语法形式如下:sp_addtype typename= type, phystype= system_data_type ,
24、nulltype= null_type , owner= owner_namev 自定义一个地址数据类型自定义一个地址数据类型exec sp_addtype address, varchar ( 80 ), not null 其运行结果如下:其运行结果如下: ( 1 row ( s ) affected ) type added.v 删除自定义的生日数据类型删除自定义的生日数据类型exec sp_droptype birthday 其运行结果如下:其运行结果如下: ( 1 row ( s ) affected ) ( 0 row ( s ) affected ) Type has been d
25、ropped2 表操作表操作2.1 创建表创建表 在在SQL Server 2000中,每个数据库中最多可以创建中,每个数据库中最多可以创建200万个表,用户创建数据库表时,最多可以定义万个表,用户创建数据库表时,最多可以定义1024列,也就是可以定义列,也就是可以定义1024个字段。个字段。 SQL Server 2000提供了两种方法创建数据库表,第一提供了两种方法创建数据库表,第一种方法是利用种方法是利用企业管理器(企业管理器(Enterprise Manager)创创建表;另一种方法是利用建表;另一种方法是利用Transact-SQL语句中的语句中的create命令命令创建表。创建表。
26、q 利用利用Enterprise Manager创建表创建表 在在Enterprise Manager中,展开指定的服务器和中,展开指定的服务器和数据库,打开想要创建新表的数据库,用右键单击表数据库,打开想要创建新表的数据库,用右键单击表对象,从弹出的快捷菜单中选择新建表选项,或者在对象,从弹出的快捷菜单中选择新建表选项,或者在工具栏中选择图标,就会出现新建表对话框,工具栏中选择图标,就会出现新建表对话框, 在该对话框中,可以定义列的以下属性:在该对话框中,可以定义列的以下属性:列名称、列名称、数据类型、长度、精度、小数位数、是否允许为空、数据类型、长度、精度、小数位数、是否允许为空、缺省值、
27、标识列、标识列的初始值、标识列的增量值缺省值、标识列、标识列的初始值、标识列的增量值和是否有行的标识。和是否有行的标识。 然后根据提示进行设置。然后根据提示进行设置。q 利用利用create命令创建命令创建表表v 其语法形式如下:其语法形式如下: CREATE TABLE database_name. owner .| owner. table_name ( | column_name AS computed_column_expression| ,n ) ON filegroup | DEFAULT 创建表的各参数的说明如下:创建表的各参数的说明如下: database_name:用于指定在
28、其中创建表的数据库名用于指定在其中创建表的数据库名称。称。 owner:用于指定新建表的所有者的用户名。用于指定新建表的所有者的用户名。 table_name:用于指定新建的表的名称。用于指定新建的表的名称。 column_name:用于指定新建表的列的名称。用于指定新建表的列的名称。 computed_column_expression:用于指定计算列的列用于指定计算列的列值的表达式。值的表达式。 ON filegroup | DEFAULT:用于指定存储表的文件组用于指定存储表的文件组名。名。 TEXTIMAGE_ON:用于指定用于指定 text、ntext 和和 image 列列的数据存
29、储的文件组。的数据存储的文件组。 data_type:用于指定列的数据类型。用于指定列的数据类型。 DEFAULT:用于指定列的缺省值。用于指定列的缺省值。 constant_expression:用于指定列的缺省值的常量表达用于指定列的缺省值的常量表达式式 。 IDENTITY:用于指定列为标识列。用于指定列为标识列。 Seed:用于指定标识列的初始值。用于指定标识列的初始值。 Increment:用于指定标识列的增量值。用于指定标识列的增量值。 NOT FOR REPLICATION:用于指定列的用于指定列的IDENTITY属性在把从其它表中复制的数据插入到属性在把从其它表中复制的数据插入
30、到表中时不发生作用,即不足的生成列值,使得复制表中时不发生作用,即不足的生成列值,使得复制的数据行保持原来的列值。的数据行保持原来的列值。 ROWGUIDCOL:用于指定列为全球唯一鉴别行号用于指定列为全球唯一鉴别行号列列 。 COLLATE:用于指定表使用的校验方式。用于指定表使用的校验方式。 column_constraint和和table_constraint:用于指定列用于指定列约束和表约束。约束和表约束。vCREATE TABLE employee ( number int not null, name varchar(20) NOT NULL, sex char(2) NULL,
31、birthday datetime null, hire_date datetime NOT NULLDEFAULT (getdate() , professional_title varchar(10) null, salary money null, memo ntext null ) 创建一个雇员信息表创建一个雇员信息表 6.1 创建表 表是存储各种数据的载体,具有以下特点:表是存储各种数据的载体,具有以下特点:l l在特定的数据库中表名是唯一的,在特定的表中,列名是唯一的,但不同在特定的数据库中表名是唯一的,在特定的表中,列名是唯一的,但不同的表可以有相同的列名。两者的唯一性都是由的表
32、可以有相同的列名。两者的唯一性都是由SQL Server强制实现的;强制实现的;l l表是由行和列组成的,行又称为记录,列被称为字段。行和列的次序表是由行和列组成的,行又称为记录,列被称为字段。行和列的次序是任意的;是任意的;l l每个表最多每个表最多1024列,每行最多列,每行最多8060字节的用户数据;字节的用户数据;l l数据行在表中是唯一的,行的唯一性可以通过定义主键来实现。在一数据行在表中是唯一的,行的唯一性可以通过定义主键来实现。在一个表中,不允许有两个完全相同的行存在。个表中,不允许有两个完全相同的行存在。 6.1.1 设计表的结构定义表中的列(字段)的名称、每列的数据类型和宽度
33、。定义表中的列(字段)的名称、每列的数据类型和宽度。数据类型指定了在每列中存储的数据的类型,例如文本、数字、日期等数据类型指定了在每列中存储的数据的类型,例如文本、数字、日期等等。宽度指定了可以向列中输入多少个字符或数字,也可以使用用户自等。宽度指定了可以向列中输入多少个字符或数字,也可以使用用户自定义型数据。除此之外,还需要设定表中列是否允许为空,是否有缺省定义型数据。除此之外,还需要设定表中列是否允许为空,是否有缺省值,是否设置为标识列。值,是否设置为标识列。 1. 几个与表结构设计相关的概念 NULL与 NOT NULL 在数据库中在数据库中NULL是一个特殊值,表示数值未知。是一个特殊
34、值,表示数值未知。 NULL不同于空字符或数字不同于空字符或数字0,也不同于零长度字符串。,也不同于零长度字符串。 比较两个空值或将空值与任何其它数值相比均返回未知,比较两个空值或将空值与任何其它数值相比均返回未知, 如果某个列上的空值属性为如果某个列上的空值属性为NULL,表示接受空值;空值,表示接受空值;空值属性为属性为NOT NULL,表示拒绝空值。,表示拒绝空值。 在程序代码中,要检查空值以便只在具有有效(或非空)在程序代码中,要检查空值以便只在具有有效(或非空)数据的行上进行某些计算。执行计算时消除空值很重要,数据的行上进行某些计算。执行计算时消除空值很重要,因为如果包含空值列,某些
35、计算(如平均值)会不准确。因为如果包含空值列,某些计算(如平均值)会不准确。若要测试数据列中的空值,可在若要测试数据列中的空值,可在WHERE子句中使用子句中使用IS NULL 或或 IS NOT NULL。 注意:注意:为了减少对已有查询或报表的维护和可能的影响,为了减少对已有查询或报表的维护和可能的影响,建议尽量少使用空值。建议尽量少使用空值。 缺省值(DEFAULT) 缺省值表示在用户未输入数据时列的取值。缺省值表示在用户未输入数据时列的取值。 计算列(CALCULATED COLUMN) 一个表的某些列的取值是由基于定义该列的表达式计算一个表的某些列的取值是由基于定义该列的表达式计算得
36、到的。该列不是存储数据的列,是表的虚拟列,该列得到的。该列不是存储数据的列,是表的虚拟列,该列中的值并未存储在表中,而是在运行时经过计算而得到中的值并未存储在表中,而是在运行时经过计算而得到的。的。 标识列(IDENTITY) IDENTITY属性使得某一列的取值是基于上一行的列值属性使得某一列的取值是基于上一行的列值和为该列定义的步长自动生成的。和为该列定义的步长自动生成的。IDENTITY列的值可列的值可以唯一地标识表中的一行。以唯一地标识表中的一行。 定义一个定义一个IDENTITY列,必须给出一个种子值(初始列,必须给出一个种子值(初始值),一个步长值(增量)。在一个值),一个步长值(
37、增量)。在一个IDENTITY列定义列定义后,每当向表中插入一行数据时,后,每当向表中插入一行数据时,IDENTITY列就会自列就会自动产生下一个值。在插入数据行的语句中,不应包含动产生下一个值。在插入数据行的语句中,不应包含IDENTITY列的值,该列的值由系统自动给出。列的值,该列的值由系统自动给出。 定义IDENTITY列时,应注意如下几点: 每张表只允许有一个每张表只允许有一个IDENTITY列。列。 IDENTITY列不能被更新。列不能被更新。 IDENTITY列不允许有列不允许有NULL值。值。 IDENTITY列只能用于具有下列数据类型之一的列:列只能用于具有下列数据类型之一的列
38、:INT、SMALLINT、TINYINT、NUMERIC(小数部分为小数部分为0)、DECIMAL(小数部分为(小数部分为0)。)。 通过函数通过函数ident_seed (table_name) 可获得可获得seed值,通过值,通过ident_incr(table_name)可获得步长值,使用全局变量)可获得步长值,使用全局变量identity可以返回标识列的数据。可以返回标识列的数据。 2. 表结构设计示例 以以 teacher 表结构设计为例,表结构设计为例,teacher表有表有9个列,个列,其中,其中,teacher_id 为主键,性别采用为主键,性别采用BIT数据类数据类型,型,
39、0表示女教师,表示女教师,1表示男教师,默认值为表示男教师,默认值为1,邮政编码使用前面第三章定义过的用户自定义的邮政编码使用前面第三章定义过的用户自定义的数据类型数据类型postalcode。整个表的列性质如表。整个表的列性质如表6-1:(P91)2.2 增加、删除和修改字段增加、删除和修改字段 利用利用企业管理器企业管理器增加、删除和修改字段增加、删除和修改字段 。在企业管。在企业管理器中,打开指定的服务器中要修改表的数据库,理器中,打开指定的服务器中要修改表的数据库,用右键单击要进行修改的表,从弹出的快捷菜单中用右键单击要进行修改的表,从弹出的快捷菜单中选择设计表选项,则会出现设计表对话
40、框,在该对选择设计表选项,则会出现设计表对话框,在该对话框中,可以利用图形化工具完成增加、删除和修话框中,可以利用图形化工具完成增加、删除和修改字段的操作。改字段的操作。 利用利用Transact-SQL语言中的语言中的alter table命令命令增加、删增加、删除和修改字段。除和修改字段。 参数说明参数说明 table:用于指定要修改的表的名称。用于指定要修改的表的名称。 ALTER COLUMN:用于指定要变更或者修改数据类用于指定要变更或者修改数据类型的列。型的列。 column_name:用于指定要更改、添加或删除的列的用于指定要更改、添加或删除的列的名称。名称。 new_data_
41、type:用于指定新的数据类型的名称。用于指定新的数据类型的名称。 precision:用于指定新的数据类型的精度。用于指定新的数据类型的精度。 scale:用于指定新的数据类型的小数位数。用于指定新的数据类型的小数位数。 NULL | NOT NULL:用于指定该列是否可以接受空值。用于指定该列是否可以接受空值。 ADD | DROP ROWGUIDCOL :用于指定在某列上添用于指定在某列上添加或删除加或删除 ROWGUIDCOL 属性。属性。 ADD:用于指定要添加一个或多个列定义、计算列定义用于指定要添加一个或多个列定义、计算列定义或者表约束。或者表约束。 computed_colum
42、n_expression:用于指定一个计算列的用于指定一个计算列的计算表达式。计算表达式。 WITH CHECK | WITH NOCHECK:用于指定已经存用于指定已经存在于表中的数据是否需要使用新添加的或者刚启用的在于表中的数据是否需要使用新添加的或者刚启用的 FOREIGN KEY 或或 CHECK 约束进行验证。约束进行验证。 DROP CONSTRAINT constraint_name | COLUMN column_name :用于指定从表中删除的约束或者列的名用于指定从表中删除的约束或者列的名称。称。 CHECK | NOCHECK CONSTRAINT:用于指定启用用于指定启
43、用或禁用或禁用FOREIGN KEY或者或者CHECK约束。约束。 ALL :用于指定使用用于指定使用 NOCHECK 选项禁用所有的约束,选项禁用所有的约束,或者使用或者使用 CHECK 选项启用所有约束。选项启用所有约束。 ENABLE | DISABLE TRIGGER:用于指定启用或禁用用于指定启用或禁用触发器。当一个触发器被禁用时,它对表的定义依然存触发器。当一个触发器被禁用时,它对表的定义依然存在;然而,当在表上执行在;然而,当在表上执行 INSERT、UPDATE 或或 DELETE 语句时,触发器中的操作将不执行,除非重新语句时,触发器中的操作将不执行,除非重新启用该触发器。启
44、用该触发器。 ALL :用于指定启用或禁用表中所有的触发器。用于指定启用或禁用表中所有的触发器。 trigger_name :指定要启用或禁用的触发器名称。指定要启用或禁用的触发器名称。创建一个雇员信息表创建一个雇员信息表 create table employees( id char(8) primary key, name char(20) not null, department char(20) null, memo char(30) null , age int null) alter table employees add salary int null alter table e
45、mployees drop column age alter table employees alter column memo varchar(200) null2.3 创建、删除和修改约束创建、删除和修改约束 约束是约束是SQL Server提供的自动强制数据完整性的提供的自动强制数据完整性的一种方法,它是通过定义列的取值规则来维护数一种方法,它是通过定义列的取值规则来维护数据的完整性。在据的完整性。在SQL Server 2000中有中有5种约束:种约束: 主键约束(主键约束(primary key constraint) 唯一性约束(唯一性约束(unique constraint) 检
46、查约束(检查约束(check constraint) 缺省约束(缺省约束(default constraint) 外部键约束(外部键约束(foreign key constraintq 主键约束主键约束vPRIMARY KEY约束标识列或列集,这些列或列集的值约束标识列或列集,这些列或列集的值惟一地标识表中的行。在一个表中,不能有两行包含相惟一地标识表中的行。在一个表中,不能有两行包含相同的主键值。不能在主键内的任何列中输入同的主键值。不能在主键内的任何列中输入NULL值。值。每个表都应有一个主键。每个表都应有一个主键。v企业管理器操作法企业管理器操作法,在企业管理器中,用右键单击要操,在企业
47、管理器中,用右键单击要操作的数据库表,从弹出的快捷菜单中选择设计表选项,作的数据库表,从弹出的快捷菜单中选择设计表选项,然后根据提示操作。然后根据提示操作。 语法形式如下:语法形式如下: CONSTRAINT constraint_name PRIMARY KEY CLUSTERED|NONCLUSTERED ( column_name,n )参数说明参数说明 constraint_name:用于指定约束的名称,约束的名用于指定约束的名称,约束的名称在数据库中应该是唯一的。如果不指定,则系统称在数据库中应该是唯一的。如果不指定,则系统会自动生成一个约束名。会自动生成一个约束名。 LUSTERE
48、D|NONCLUSTERED:用于指定索引的用于指定索引的类型,即聚簇索引或者非聚簇索引,类型,即聚簇索引或者非聚簇索引,CLUSTERED为默认值。为默认值。 column_name:用于指定主键的列名。主键最多由用于指定主键的列名。主键最多由16个列组成。个列组成。 在执行创建产品信息表的操作时,指定产品在执行创建产品信息表的操作时,指定产品编号为主键值,并且创建一个聚簇索引。编号为主键值,并且创建一个聚簇索引。 create table products( id char(10) not null, name char(20) not null, price money default
49、0.01, quantity smallint null, constraint pk_id primary key clustered (id) )q唯一性约束唯一性约束 唯一性约束用于指定一个或者多个列的组合的唯一性约束用于指定一个或者多个列的组合的值具有唯一性,以防止在列中输入重复的值。当使值具有唯一性,以防止在列中输入重复的值。当使用唯一性约束时,需要考虑以下几个因素:用唯一性约束时,需要考虑以下几个因素:1.使用唯一性约束的字段允许为空值。使用唯一性约束的字段允许为空值。2.一个表中可以允许有多个唯一性约束。一个表中可以允许有多个唯一性约束。3.可以把唯一性约束定义在多个字段上。可以
50、把唯一性约束定义在多个字段上。4.唯一性约束用于强制在指定字段上创建一个唯一性唯一性约束用于强制在指定字段上创建一个唯一性索引。索引。5.缺省情况下,创建的索引类型为非聚簇索引。缺省情况下,创建的索引类型为非聚簇索引。 UNIQUE约束约束 在列集内强制执行值的惟一性。对于在列集内强制执行值的惟一性。对于UNIQUE约束中的列,表中不允许有两行包约束中的列,表中不允许有两行包含相同的非空值。主键也强制执行惟一性,含相同的非空值。主键也强制执行惟一性,但主键不允许有空值。但主键不允许有空值。UNIQUE约束优于惟约束优于惟一索引。一索引。 CHECK约束约束CHECK约束对可以放入列中的值进行限
51、制,约束对可以放入列中的值进行限制,以强制执行域的完整性。以强制执行域的完整性。4DEFAULT约束约束DEFAULT约束用来强制数据的域完整性,约束用来强制数据的域完整性,它为表中某列建立一个默认值,当用户插入记它为表中某列建立一个默认值,当用户插入记录时,如果没有为该列提供输入值,则系统会录时,如果没有为该列提供输入值,则系统会自动将默认值赋给该列。自动将默认值赋给该列。5FOREIGN KEY约束约束FOREIGN KEY约束标识表之间的关系。约束标识表之间的关系。通过外键约束可以为相关联的两个表建立联系,通过外键约束可以为相关联的两个表建立联系,实现数据的参照完整性,维护两表之间数据的
52、实现数据的参照完整性,维护两表之间数据的一致性关系。一致性关系。v 创建和修改唯一性约束的操作方法有两种:创建和修改唯一性约束的操作方法有两种: 企业管理器操作法,企业管理器操作法,通过企业管理器可以完成通过企业管理器可以完成创建和修改唯一性约束的操作。创建和修改唯一性约束的操作。 Transact-SQL语句操作法语句操作法 CONSTRAINT constraint_name UNIQUE CLUSTERED|NONCLUSTERED ( column_name,n ) q 检查约束检查约束一个列级检查约束只能与限制的字段有关;一个一个列级检查约束只能与限制的字段有关;一个表级检查约束只能
53、与限制的表中字段有关。表级检查约束只能与限制的表中字段有关。一个表中可以定义多个检查约束。一个表中可以定义多个检查约束。每个每个CREATE TABLE语句中每个字段只能定义语句中每个字段只能定义一个检查约束。一个检查约束。在多个字段上定义检查约束,则必须将检查约束在多个字段上定义检查约束,则必须将检查约束定义为表级约束。定义为表级约束。当执行当执行INSERT语句或者语句或者UPDATE语句时,检查语句时,检查约束将验证数据。约束将验证数据。检查约束中不能包含子查询。检查约束中不能包含子查询。v创建检查约束常用的操作方法有两种:创建检查约束常用的操作方法有两种: 企业管理器操作法企业管理器操
54、作法。使用企业管理器创建检查约束,使用企业管理器创建检查约束,与创建唯一性约束类似与创建唯一性约束类似 。 Transact-SQL语句操作法语句操作法。检查约束的检查约束的Transact-SQL语句操作法,其语法形式如下语句操作法,其语法形式如下: CONSTRAINT constraint_name CHECK NOT FOR REPLICATION ( logical_expression ) 创建了一个学生信息表,其中输入性别字段值时,创建了一个学生信息表,其中输入性别字段值时,只能接受只能接受“F”或者或者“M”,并且为,并且为phonenum字段创建字段创建检查约束,限制只能输入
55、类似检查约束,限制只能输入类似01080798654之类的数据,之类的数据,而不能随意输入其他数据。而不能随意输入其他数据。 create table student( Id char(8), name char(8), sex char(2), phonenum int constraint chk_sex check(sex in ( F , M) Constraint chk_phonenum check ( phonenum like (010)0-90-90-90-90-90-90-90-9) )q 缺省约束缺省约束v使用缺省约束时,应该注意以下几点:使用缺省约束时,应该注意以下几点
56、: 每个字段只能定义一个缺省约束。每个字段只能定义一个缺省约束。 如果定义的缺省值长于其对应字段的允许长度,那如果定义的缺省值长于其对应字段的允许长度,那么输入到表中的缺省值将被截断。么输入到表中的缺省值将被截断。 不能加入到带有不能加入到带有IDENTITY属性或者数据类型为属性或者数据类型为timestamp的字段上。的字段上。 如果字段定义为用户定义的数据类型,而且有一个如果字段定义为用户定义的数据类型,而且有一个缺省绑定到这个数据类型上,则不允许该字段有缺缺省绑定到这个数据类型上,则不允许该字段有缺省约束。省约束。q外部键约束外部键约束 外部键约束用于强制参照完整性,提供单个外部键约束
57、用于强制参照完整性,提供单个字段或者多个字段的参照完整性。当使用外部键字段或者多个字段的参照完整性。当使用外部键约束时,应该考虑以下几个因素:约束时,应该考虑以下几个因素:1.外部键约束提供了字段参照完整性。外部键约束提供了字段参照完整性。2.外部键从句中的字段数目和每个字段指定的数据外部键从句中的字段数目和每个字段指定的数据类型必须和类型必须和REFERENCES从句中的字段相匹配。从句中的字段相匹配。3.外部键约束不能自动创建索引,需要用户手动创外部键约束不能自动创建索引,需要用户手动创建。建。 4.用户想要修改外部键约束的数据,必须有对外部键约用户想要修改外部键约束的数据,必须有对外部键
58、约束所参考表的束所参考表的SELECT权限或者权限或者REFERENCES权限。权限。5.参考同一表中的字段时,必须只使用参考同一表中的字段时,必须只使用REFERENCES子句,不能使用外部键子句。子句,不能使用外部键子句。6.一个表中最多可以有一个表中最多可以有31个外部键约束。个外部键约束。7.在临时表中,不能使用外部键约束。在临时表中,不能使用外部键约束。8.主键和外部键的数据类型必须严格匹配。主键和外部键的数据类型必须严格匹配。2.4 查看表格查看表格 查看表格的定义;查看表格的定义;查看表格中的数据;查看表格中的数据; 查看表格与其它数据库对象的依赖关系。查看表格与其它数据库对象的
59、依赖关系。v利用系统存储过程利用系统存储过程Sp_help查看表的信息查看表的信息1.显示当前数据库中所有对象的信息;显示当前数据库中所有对象的信息;2.显示表显示表word的信息。在查询分析器(的信息。在查询分析器(Query Analyzer)中它们对应的语句和运行结果如下)中它们对应的语句和运行结果如下图所示。图所示。 当前数据库对象显示窗口当前数据库对象显示窗口 表表word显示窗口显示窗口2.5 删除表删除表 利用企业管理器删除表利用企业管理器删除表在企业管理器中,展开指定的数据库和表格项,用右键在企业管理器中,展开指定的数据库和表格项,用右键单击要删除的表,从快捷菜单中选择单击要删
60、除的表,从快捷菜单中选择“除去表除去表”选项,选项,则会出现除去对象对话框。单击则会出现除去对象对话框。单击“全部删除全部删除”按钮,即按钮,即可删除表。可删除表。 利用利用DROP TABLE语句删除表语句删除表DROP TABLE语句可以删除一个表和表中的数据及其与语句可以删除一个表和表中的数据及其与表有关的所有索引、触发器、约束、许可对象。表有关的所有索引、触发器、约束、许可对象。DROP TABLE语句的语法形式如下:语句的语法形式如下:DROP TABLE table_name 8.3 视图操作视图操作 视图是从一个或者多个表或视图中导出的表,视图是从一个或者多个表或视图中导出的表,其结构和
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗机构多学科会诊制度及流程
- 介入治疗技术试题及答案
- 医疗器械企业成本核算制度(试行)
- 气瓶充装运输安全管理制度培训
- 安全环境职业健康目标管理制度培训课件
- 2026年数字孪生城市规划服务合同
- 2026年国际交换生项目合同
- 学校安全管理职责培训:分管领导与部门负责人工作实务
- 2026年315消费者权益日答题题目及答案
- 2026年智慧城市平台开发合同
- 【2026春】部编版八年级下册语文读读写写(注音+解释)
- 第二单元+新音乐启蒙+课件【高效课堂精研】高中音乐粤教花城版必修音乐鉴赏
- 上海2025年上海交通大学医学院招聘72人笔试历年参考题库附带答案详解
- 全国美容院质量与服务调查报告(2023-2024)
- 部编2023版道德与法治六年级下册活动园问题及答案
- 离职证明模板电子版
- GB/T 4308-1984金属陶瓷热挤压模坯
- GB/T 38603-2020燃气燃烧器和燃烧器具用安全和控制装置特殊要求电子控制器
- GB/T 18983-2017淬火-回火弹簧钢丝
- 高效课堂学习小组建设课件
- (新版)中国移动认证L1、L2、L3等级考试总题库-单选题库(共12部分-2)
评论
0/150
提交评论