第03章 表与数据完整性_第1页
第03章 表与数据完整性_第2页
第03章 表与数据完整性_第3页
第03章 表与数据完整性_第4页
第03章 表与数据完整性_第5页
已阅读5页,还剩112页未读 继续免费阅读

下载本文档

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

文档简介

1、清华大学出版社. SQL Server 2005数据库应用与开发 清华大学出版社. SQL Server 2005数据库应用与开发 清华大学出版社. SQL Server 2005数据库应用与开发 n数据库中的所有数据都存放在按行与列格式组织数据库中的所有数据都存放在按行与列格式组织的表中的表中,数据类型是数据的一种属性,决定数据存数据类型是数据的一种属性,决定数据存储的空间和格式储的空间和格式.n数据类型可以为对象定义数据类型可以为对象定义4个属性:个属性:n对象包含的数据种类。对象包含的数据种类。n所存储值占有的空间(字节数)和数值范围。所存储值占有的空间(字节数)和数值范围。n数值的精度

2、(仅适用于数值类型)。数值的精度(仅适用于数值类型)。n数值的小数位数(仅适用于数值类型)。数值的小数位数(仅适用于数值类型)。nSQL server 2005提供的数据类型可以归纳为:数提供的数据类型可以归纳为:数值类型、字符类型、日期时间类型、货币类型和值类型、字符类型、日期时间类型、货币类型和其他数据类型。其他数据类型。清华大学出版社. SQL Server 2005数据库应用与开发 3.1.1 数值类型数值类型 1. 精确数值类型精确数值类型精确数值类型用来存储没有小数位的整精确数值类型用来存储没有小数位的整数或定点小数。使用任何算术运算符数或定点小数。使用任何算术运算符都可以操作这些

3、数据类型中存储的数都可以操作这些数据类型中存储的数值,而不需要任何特殊处理。下表列值,而不需要任何特殊处理。下表列出了出了SQL Server支持的精确数值类型。支持的精确数值类型。类别类别数据类型数据类型字 节字 节数数取值范围取值范围Integerbigint8- -2E632E63- -1int4- -2E312E31- -1smallint2- -32 76832 767tinyint10255Exact numricdecimal(p,s) 517- -10E38+110E38- -1numeric(p,s)517- -10E38+110E38- -1清华大学出版社. SQL Ser

4、ver 2005数据库应用与开发 其中:其中:p指定精度,即可存储的十进制数字的最大位数,即指定精度,即可存储的十进制数字的最大位数,即除小数点之外的位数。除小数点之外的位数。s指定小数位数,即小数点右边可以存储的十进制数指定小数位数,即小数点右边可以存储的十进制数字的最大位数。字的最大位数。 清华大学出版社. SQL Server 2005数据库应用与开发 3.1.1 数值类型数值类型 2. 近似数值类型近似数值类型n 近似数字数据类型可以存储十进制值,用于表示近似数字数据类型可以存储十进制值,用于表示浮点数据。此类型的数据不一定有精确的表示,浮点数据。此类型的数据不一定有精确的表示,可具体

5、分为可具体分为float和和real两种。两种。n SQL Server 2005存储数据时对小数点右边的数进行四舍五存储数据时对小数点右边的数进行四舍五入。只有在精确数据类型不够大,不能存储数值时,才考入。只有在精确数据类型不够大,不能存储数值时,才考虑使用虑使用float。下表列出了。下表列出了SQL Server支持的近似数字数据支持的近似数字数据类型类型 数据类型数据类型字节数字节数取值范围取值范围float(p)4/8- -2.23E3082.23E308real4- -3.4E383.4E38清华大学出版社. SQL Server 2005数据库应用与开发 3.1.2 字符类型字符

6、类型 字符类型用于存储由字母、数字和符号组成的字符串。该数字符类型用于存储由字母、数字和符号组成的字符串。该数 据类型可以使用据类型可以使用ASC编码或编码或Unicode编码:编码: ASC编码要求用编码要求用1个字节来表示一个字符。个字节来表示一个字符。 Unicode标准使用标准使用2个字节来表示个字节来表示1个字符。在个字符。在 Unicode标标 准中,包括了以各种字符集定义的全部字符。准中,包括了以各种字符集定义的全部字符。下表列出了下表列出了SQL Server支持的字符数据类型。支持的字符数据类型。 清华大学出版社. SQL Server 2005数据库应用与开发 最多最多53

7、6 870 912个字符个字符最大最大2 GNtext最多最多536 870 912个字符个字符最大最大2 Gnvarchar(max)最多最多4 000个字符个字符28 000nvarchar(n)最多最多4 000个字符个字符28 000nchar(n)最多最多1 073 741 824个字符个字符最大最大2 Gtext最多最多1 073 741 824个字符个字符最大最大2 Gvarchar(max)最多最多8 000个字符个字符18 000varchar(n)最多最多8 000个字符个字符18 000char(n)字符数字符数字节数字节数数据类型数据类型ASCUNICODE清华大学出版

8、社. SQL Server 2005数据库应用与开发 char(n),固定长度固定长度的字符串,长度从的字符串,长度从1到到8000,如果省,如果省略了长度,则缺省值为略了长度,则缺省值为1。若实际输入的字符个数不足。若实际输入的字符个数不足N个,个,在输入的数据后面填充空格补足到在输入的数据后面填充空格补足到N个个 varchar(n),可变长度可变长度的字符串,如果省略了长度,则缺省的字符串,如果省略了长度,则缺省值为值为1。存储字节数为输入的实际字符长度,不会填充额外的。存储字节数为输入的实际字符长度,不会填充额外的空格。空格。 text数据类型用于存储数据量庞大且变长的字符文本数据,数

9、据类型用于存储数据量庞大且变长的字符文本数据,如如简历信息简历信息等。等。 最多达到最多达到2GB,行中存储指向第一个数据页,行中存储指向第一个数据页的指针,实际文本以的指针,实际文本以b-树数据页来存储。不能使用树数据页来存储。不能使用”=”运算,运算,也不能使用很多系统函数。也不能使用很多系统函数。 Varchar(Max):SQL Server2005引入代替引入代替text数据类数据类型,最多可存储型,最多可存储2GB数据,对使用数据,对使用Varchar(Max)数据)数据类型的操作或函数没有限制类型的操作或函数没有限制清华大学出版社. SQL Server 2005数据库应用与开发

10、 Unicode字符型是基于字符型是基于SQL-92标准中的标准中的National Character数据类型的。数据类型的。 SQL Server 允许使用多国允许使用多国语言,可采用语言,可采用Unicode 标准字符集。标准字符集。Unicode字符字符串常量的前面有一个大写串常量的前面有一个大写N ,例如,例如,Student,是字符串常量,而是字符串常量,而NStudent,则是,则是Unicode字符字符型常量。型常量。 Unicode字符型有字符型有nchar、nvarchar和和ntext三种,三种,用法分别与用法分别与char、varchar和和text相同相同Unicod

11、e清华大学出版社. SQL Server 2005数据库应用与开发 3.1.3 日期时间类型日期时间类型 n日期时间类型数据,可具体分为日期时间类型数据,可具体分为datetime与与smalldatetime两种类型。两种类型。datetime和和smalldatetime数据类型在计算机内部是作为整数存储的。数据类型在计算机内部是作为整数存储的。ndatetime类型存储为一对类型存储为一对4字节整数,它们一起表字节整数,它们一起表示自示自1753年年1月月1日午夜日午夜12点钟经过的毫秒数。点钟经过的毫秒数。nsmalldatetime类型存储为一对类型存储为一对2字节整数,它们一字节整

12、数,它们一起表示自起表示自1900年年1月月1日午夜日午夜12点钟经过的分钟数。点钟经过的分钟数。n下表列出了下表列出了SQL Server2005支持的日期和时间数据支持的日期和时间数据类型。类型。日期类型日期类型字节数字节数取值范围取值范围datetime8从从1753-1-1到到9999-12-31,精度为,精度为3.33毫秒毫秒smalldatetime 4从从1900-1-1到到2079-12-31,精度为,精度为1分钟分钟清华大学出版社. SQL Server 2005数据库应用与开发 SQL SERVER 2005中没有单独的日期或时间类中没有单独的日期或时间类型,可将日期时间省

13、略其中的一个。型,可将日期时间省略其中的一个。如果只指定如果只指定时间时间,则日期默认为,则日期默认为1900年年1月月1日;日;如果只指定如果只指定日期日期,则时间默认为,则时间默认为12:00AM 默认情况下,日期型数据的格式是按照默认情况下,日期型数据的格式是按照“月月/日日/年年”的顺序来设定的。的顺序来设定的。“4/01/98 12:15:00.000”日期时间型日期时间型清华大学出版社. SQL Server 2005数据库应用与开发 英文英文+数字:月份可用英文命名或缩写,不区分大数字:月份可用英文命名或缩写,不区分大小写,年月日之间可不用逗号。年份可小写,年月日之间可不用逗号。

14、年份可4位或两位。位或两位。若为两位,小于若为两位,小于50为为2000年后的年份,大于或等年后的年份,大于或等于于50则为则为1900年后的年份,若日部分省略,则为年后的年份,若日部分省略,则为当月当月1日。日。如:如:1980mar5 数字数字+分隔符分隔符 可使用斜杠可使用斜杠(/)、连字符、连字符(-)或句号或句号(.)作为分隔符来指定月、日、年作为分隔符来指定月、日、年 。 如:如:4/15/1998, 1978-04-15, 1998.04.15、清华大学出版社. SQL Server 2005数据库应用与开发 3.1.4货币类型货币类型 n货币数据类型旨在存储精确到货币数据类型旨

15、在存储精确到4个小数位个小数位的货币值。下表列出了的货币值。下表列出了SQL Server支持的支持的货币数据类型。货币数据类型。数据类型数据类型 字节数字节数 取值范围取值范围money8 - -922 337 203 685 477.5808922 337 203 685 477.5807smallmoney4 - -214 748.3648214 748.3647清华大学出版社. SQL Server 2005数据库应用与开发 3.1.5 其他数据类型其他数据类型 1. 二进制数据类型二进制数据类型 SQL Server 2005提供了提供了3种二进制数据类型,种二进制数据类型,允许在一

16、个表中存储各种数量的二进制数允许在一个表中存储各种数量的二进制数据。下表列出了据。下表列出了SQL Server支持二进制数支持二进制数据类型。据类型。数据类型字节数binary(n)18 000 varbinary(n)18 000 varbinary(max)最多2 Gimage最多2 G清华大学出版社. SQL Server 2005数据库应用与开发 3.1.5 其他数据类型其他数据类型 2. 特殊数据类型特殊数据类型 nSQL Server 2005还提供了还提供了7种特殊数据类型,包括种特殊数据类型,包括bit、cursor、sql_variant、timestamp、table、u

17、niqueidentifier与与xml。nbit位数据类型,其数据有两种取值:位数据类型,其数据有两种取值:0和和1,长度,长度为为1字节。在输入字节。在输入0以外的其他值时,系统均把它以外的其他值时,系统均把它们当们当1看待。适用于判断真看待。适用于判断真/假的场合,通常用来存假的场合,通常用来存放布尔数据。放布尔数据。 具体作用参看表具体作用参看表3.7清华大学出版社. SQL Server 2005数据库应用与开发 Uniqueidentifier用于存储一个用于存储一个16字节长的二进制数据类字节长的二进制数据类型,它是型,它是SQL Server根据计算机网卡地址和根据计算机网卡地

18、址和CPU时钟使时钟使用用NewId()函数产生的全局惟一标识符代码()函数产生的全局惟一标识符代码(Globally Unique Identifier,简写为,简写为GUID) Timestamp时间戳数据类型,它提供数据库范围内的惟时间戳数据类型,它提供数据库范围内的惟一值,反应数据库中数据活动的先后顺序,相当于一个单一值,反应数据库中数据活动的先后顺序,相当于一个单调上升的计数器。当它所定义的列在更新或插入数据时,调上升的计数器。当它所定义的列在更新或插入数据时,一个计数值将自动地添加到此一个计数值将自动地添加到此Timestamp数据列中,该数据列中,该值大于以前的值。用户不能直接设

19、置值大于以前的值。用户不能直接设置timestamp列的值,列的值,一个表只能有一个一个表只能有一个timestamp列。可以使用列。可以使用timestamp列列的值判断自从上次检索之后是否有其他进程修改数据行。的值判断自从上次检索之后是否有其他进程修改数据行。特殊数据类型特殊数据类型清华大学出版社. SQL Server 2005数据库应用与开发 Table用于存储对表或者视图处理后的临时结果集。用于存储对表或者视图处理后的临时结果集。 Sql_variant(可变数据类型):通配符数据类型,(可变数据类型):通配符数据类型,用于存储除文本、图形数据和用于存储除文本、图形数据和Timest

20、amp类型数据类型数据外的其他外的其他SQL Server数据。数据。 XML可以存储可扩展标记文本数据的数据类型。利可以存储可扩展标记文本数据的数据类型。利用它可以将用它可以将XML实例存储在表列中或者实例存储在表列中或者XML类型的类型的变量中。变量中。 Cursor这是变量或存储过程这是变量或存储过程OUTPUT参数的一种数参数的一种数据类型,表示对游标的引用,不能用于列定义。据类型,表示对游标的引用,不能用于列定义。 特殊数据类型特殊数据类型清华大学出版社. SQL Server 2005数据库应用与开发 3.1.5 其他数据类型其他数据类型 3. 自定义数据类型自定义数据类型 nSQ

21、L Server 2005允许用户根据自己的需要自定义允许用户根据自己的需要自定义数据类型(数据类型(UDT),并可以用此数据类型来声明),并可以用此数据类型来声明变量或列。变量或列。n自定义类型提供了一种可以将更能清楚地说明对自定义类型提供了一种可以将更能清楚地说明对象中值的类型的名称应用于数据类型的机制,这象中值的类型的名称应用于数据类型的机制,这使程序员或数据库管理员能够更容易地理解用该使程序员或数据库管理员能够更容易地理解用该数据类型定义的对象的用途。数据类型定义的对象的用途。清华大学出版社. SQL Server 2005数据库应用与开发 3. 用户自定义数据类型用户自定义数据类型

22、用户自定义数据类型是建立在用户自定义数据类型是建立在 SQL Server 系统数系统数据类型基础上的。当多个表的若干列要存储同样类据类型基础上的。当多个表的若干列要存储同样类型的数据,且想确保这些列具有完全相同的数据类型的数据,且想确保这些列具有完全相同的数据类型、长度和为空性时,可使用用户定义数据类型。型、长度和为空性时,可使用用户定义数据类型。例如,可以基于例如,可以基于smalldatetime 数据类型创建名为数据类型创建名为birthday的用户定义数据类型,用来刻画的用户定义数据类型,用来刻画“出生日出生日期期”字段。定义用户自定义数据类型时,需要指定字段。定义用户自定义数据类型

23、时,需要指定该类型的名称,依赖的系统数据类型,及是否允许该类型的名称,依赖的系统数据类型,及是否允许为空值。为空值。清华大学出版社. SQL Server 2005数据库应用与开发 用户自定义数据类型用户自定义数据类型 创建用户定义的数据类型的方法有两种:创建用户定义的数据类型的方法有两种:(1)使用对象资源管理器)使用对象资源管理器(2)使用系统存储过程)使用系统存储过程sp_addtype 清华大学出版社. SQL Server 2005数据库应用与开发 通过对象资源管理器创建用户定义的数据类型通过对象资源管理器创建用户定义的数据类型在在“对象资源管理器对象资源管理器”窗口中,选择窗口中,

24、选择“数据库数据库”节点节点在选在选择择要在其中创建用户定义数据类型的数据要在其中创建用户定义数据类型的数据库库”studentCourse”“可编程性可编程性”节点节点“类型类型”节点节点“用户定义数据类型用户定义数据类型”节点,节点,右击右击“用户定义数据类型用户定义数据类型”,在弹出的快捷菜单中选择在弹出的快捷菜单中选择 “新建用户定义数据类型新建用户定义数据类型命令。命令。输入新建数据类型的名称,在输入新建数据类型的名称,在“数据类型数据类型”列表中,选择基列表中,选择基础数据类型。础数据类型。如如“精度精度”处于活动状态,若要更改此数据类型可存储的最处于活动状态,若要更改此数据类型可

25、存储的最大数据长度,请键入另外的值。若要允许此数据类型接受空大数据长度,请键入另外的值。若要允许此数据类型接受空值,请选择值,请选择“允许空值允许空值”命令。命令。在在规则规则和和默认值默认值列表中选择一个规则或默认值(若有)列表中选择一个规则或默认值(若有)以将其绑定到用户定义数据类型上。以将其绑定到用户定义数据类型上。清华大学出版社. SQL Server 2005数据库应用与开发 语法如下:语法如下:sp_addtype type_name , phystype(length)|(precision,scale), null | not null | identity其中:其中:type

26、_name,用户定义的数据类型的名字;用户定义的数据类型的名字;Phystype,用户用户自定义数据类型所基于的系统数据类型,可以包括长度、精度、自定义数据类型所基于的系统数据类型,可以包括长度、精度、标度;标度;null | not null | identity,用户自定义数据类型的性质,分别用户自定义数据类型的性质,分别为允许空值、不允许为空值、具有标识列性质。默认为为允许空值、不允许为空值、具有标识列性质。默认为not null。利用利用sp_addtype创建用户定义数据类型创建用户定义数据类型清华大学出版社. SQL Server 2005数据库应用与开发 下面创建一个名为下面创建

27、一个名为 birthday 的用户定义数据类型,的用户定义数据类型,不允许取空值。不允许取空值。 EXEC sp_addtype birthday, datetime, NOT NULL 下面的示例为国内及国际电话和传真号码分别创建下面的示例为国内及国际电话和传真号码分别创建两个用户定义的数据类型两个用户定义的数据类型 telephone 和和 fax。 EXEC sp_addtype telephone, varchar(24), NOT NULL EXEC sp_addtype fax, varchar(24), NULL 清华大学出版社. SQL Server 2005数据库应用与开发

28、注意注意 用户定义的数据类型名称在数据库中必须是唯一的,用户定义的数据类型名称在数据库中必须是唯一的,但是名称不同的用户定义的数据类型可以有相同的但是名称不同的用户定义的数据类型可以有相同的定义定义,例如上例中的例如上例中的telephone及及fax。 如果想在所有新建的数据库中都可使用某一用户定如果想在所有新建的数据库中都可使用某一用户定义的数据类型,可将其添加到义的数据类型,可将其添加到 model数据库中。不数据库中。不能使用能使用 timestamp 数据类型来定义用户定义的数数据类型来定义用户定义的数据类型。据类型。清华大学出版社. SQL Server 2005数据库应用与开发

29、管理用户定义的数据类型管理用户定义的数据类型用户可对自定义的数据类型进行相应的管理,包用户可对自定义的数据类型进行相应的管理,包括:查看、重命名、删除用户定义的数据类型括:查看、重命名、删除用户定义的数据类型 (1)使用对象资源管理器)使用对象资源管理器 “数据库数据库”节点节点在选择在选择要在其中删除用户定义数要在其中删除用户定义数据类型的数据库据类型的数据库”studentCourse”“可编程性可编程性”节点节点“类型类型”节点节点“用户定义数据类型用户定义数据类型”节点,节点,选中要删除的用户定义数据类型,选中要删除的用户定义数据类型,右击在弹出的右击在弹出的快捷菜单中选择快捷菜单中选

30、择 “删除删除命令。命令。清华大学出版社. SQL Server 2005数据库应用与开发 (2)使用系统存储过程)使用系统存储过程 sp_help 类型名类型名 查看用户自定义数据类型的特征;查看用户自定义数据类型的特征; sp_rename 旧名旧名,新名新名 重新命名自定义数据类型;重新命名自定义数据类型; sp_droptype 类型名类型名删除一个已经定义且未被使用删除一个已经定义且未被使用的用户自定义数据类型。的用户自定义数据类型。 如果没有任何表或其它数据库对象引用某用户定义如果没有任何表或其它数据库对象引用某用户定义数据类型时,可除去这种数据类型。数据类型时,可除去这种数据类型

31、。例如例如:USE StudentCourse EXEC sp_droptype birthday 清华大学出版社. SQL Server 2005数据库应用与开发 字段数据类型的确定原则字段数据类型的确定原则 为一个字段选择数据类型时,应选择能支持用户可为一个字段选择数据类型时,应选择能支持用户可能在该字段存储的所有数据的数据类型,同时所需能在该字段存储的所有数据的数据类型,同时所需的空间量最小。可参照以下原则:的空间量最小。可参照以下原则: 为字段选择一个合适的长度,如果字段值的长度不为字段选择一个合适的长度,如果字段值的长度不需要大幅改变,就使用固定长度数据类型(需要大幅改变,就使用固定

32、长度数据类型(char和和Nchar),例如学号、课程号等。如果字段值的长),例如学号、课程号等。如果字段值的长度需要大幅改变,就使用可变长度数据类型度需要大幅改变,就使用可变长度数据类型(Varchar和和Nvarchar),例如学生简历等。),例如学生简历等。 如果用户存储的字符串来源于不同的国家,就使用如果用户存储的字符串来源于不同的国家,就使用Unicode数据类型。数据类型。清华大学出版社. SQL Server 2005数据库应用与开发 3.2.1表的类型表的类型 1. 按照表的用途分类按照表的用途分类(1)系统表:用于维护)系统表:用于维护SQL Server 2005服务器和数

33、据库正服务器和数据库正常工作的只读数据表。系统表存在于各个数据库中,由常工作的只读数据表。系统表存在于各个数据库中,由DBMS系统自动维护。系统自动维护。(2)用户表:由用户自己创建的、用于各种数据库应用系统)用户表:由用户自己创建的、用于各种数据库应用系统开发的表。开发的表。(3)已分区表:已分区表是将数据水平划分为多个单元的表,)已分区表:已分区表是将数据水平划分为多个单元的表,这些单元可以分布到数据库中的多个文件组中。在维护整这些单元可以分布到数据库中的多个文件组中。在维护整个集合的完整性时,使用分区可以快速而有效地访问或管个集合的完整性时,使用分区可以快速而有效地访问或管理数据子集,从

34、而使大型表或索引更易于管理。理数据子集,从而使大型表或索引更易于管理。清华大学出版社. SQL Server 2005数据库应用与开发 3.2.1表的类型表的类型 2. 按照表的存储时间分类按照表的存储时间分类(1)永久表:包括)永久表:包括SQL Server 2005的系统表和用户数据库的系统表和用户数据库中创建的数据表,该类表除非人工删除,否则一直存储在中创建的数据表,该类表除非人工删除,否则一直存储在介质中。介质中。(2)临时表:临时表是临时使用的表结构。临时表分为全局)临时表:临时表是临时使用的表结构。临时表分为全局的临时表和局部临时表,并且可以由任何用户创建。所有的临时表和局部临时

35、表,并且可以由任何用户创建。所有的临时表都是在的临时表都是在tempdb数据库中创建的。数据库中创建的。n如果服务器关闭,则所有临时表会被清空、关闭。如果服务器关闭,则所有临时表会被清空、关闭。n通过使用通过使用CREATE TABLE命令并在表名前添加一个字命令并在表名前添加一个字符符(#),可以创建局部临时表。,可以创建局部临时表。清华大学出版社. SQL Server 2005数据库应用与开发 3.2.2 表的创建表的创建 1表的创建思路及准备表的创建思路及准备 创建一个表最有效的方法是将表中所需的信息一次创建一个表最有效的方法是将表中所需的信息一次定义完成,包括数据约束和附加成份。也可

36、以先创建定义完成,包括数据约束和附加成份。也可以先创建一个基础表,向其中添加一些数据并使用一段时间,一个基础表,向其中添加一些数据并使用一段时间,再根据应用情况定义其它成份。再根据应用情况定义其它成份。 清华大学出版社. SQL Server 2005数据库应用与开发 2、创建表的步骤:、创建表的步骤: (1)定义表结构:)定义表结构:确定表的各字段的名称、数据类确定表的各字段的名称、数据类型、数据长度、是否可以为空等。型、数据长度、是否可以为空等。 (2)设置约束:)设置约束:设置约束是为了限制字段输入值的设置约束是为了限制字段输入值的取值范围,以保证数据的完整性。取值范围,以保证数据的完整

37、性。(3)添加数据)添加数据清华大学出版社. SQL Server 2005数据库应用与开发 3.2.3 约束的类型约束的类型 (1)非空值约束()非空值约束(Not Null):):限制字段不接受限制字段不接受NULL值,即当对表进行插入(值,即当对表进行插入(INSERT)操作时,)操作时,非空值约束的字段必须给出确定的值。空值是指未非空值约束的字段必须给出确定的值。空值是指未填写、未知、不可用或将在以后添加的数据,并不填写、未知、不可用或将在以后添加的数据,并不等价于空字符串或数值等价于空字符串或数值0。 (2)默认约束()默认约束(Default):):为字段定义一个默认为字段定义一个

38、默认值,输入数据时若没有为该字段提供值,则将所定值,输入数据时若没有为该字段提供值,则将所定义的默认值提供给该列。默认值可是常量,也可是义的默认值提供给该列。默认值可是常量,也可是表达式。表达式。 清华大学出版社. SQL Server 2005数据库应用与开发 (3)惟一性约束()惟一性约束(Unique):):限制约束的字段,不限制约束的字段,不允许有两条记录具有相同的非空值。但该字段可以允许有两条记录具有相同的非空值。但该字段可以出现多个空值出现多个空值 。 (4)主键约束()主键约束(PrimaryKey):):标识字段或字段的标识字段或字段的组合为主键,主键的值惟一标识表中的每一条记

39、录。组合为主键,主键的值惟一标识表中的每一条记录。在一个表中,不能有两条记录包含相同的主键值,在一个表中,不能有两条记录包含相同的主键值,主键的各组成字段的值也不能为主键的各组成字段的值也不能为NULL。3.2.3 约束的类型约束的类型清华大学出版社. SQL Server 2005数据库应用与开发 (5 5)外键约束()外键约束(ForeignKeyForeignKey):):外键常用来标识表外键常用来标识表与表之间的关系,与表之间的关系,根据从另一个表中某字段(通常是根据从另一个表中某字段(通常是主键)获得的数据集合来进行有效性判定。这时,被主键)获得的数据集合来进行有效性判定。这时,被约

40、束字段所在的表称为外键表,提供数据的表称为主约束字段所在的表称为外键表,提供数据的表称为主键表或引用表,提供数据的字段称为引用字段,所提键表或引用表,提供数据的字段称为引用字段,所提供的数据称为键值。供的数据称为键值。(6) (6) 检查约束(检查约束(checkcheck):):一个检查约束由一个关键一个检查约束由一个关键字字 CHECK CHECK 后面跟着一个放在圆括弧里的布尔表达式后面跟着一个放在圆括弧里的布尔表达式组成。检查约束允许用户声明该字段里的数值必须满组成。检查约束允许用户声明该字段里的数值必须满足该布尔表达式。足该布尔表达式。3.2.3 约束的类型约束的类型清华大学出版社.

41、 SQL Server 2005数据库应用与开发 3.2.4 创建表的两种方法:创建表的两种方法:1使用对象资源管理器创建表使用对象资源管理器创建表2. 使用使用CREATE TABLE语句创建表语句创建表清华大学出版社. SQL Server 2005数据库应用与开发 3.2.4 表的创建表的创建 1.在在SQL Server Management Studio中创建数中创建数据表据表 首先以创建如表所示的学生信息表首先以创建如表所示的学生信息表student表表结构为例,说明如何为数据库结构为例,说明如何为数据库teaching创建创建表,具体步骤如下。表,具体步骤如下。列序号列名类型取值

42、说明1studentnonchar(10)主键2snamenchar(8)否3sexnchar(1)否4birthdaydatetime否5classnonchar(6)否6pointsmallint否7phonenchar(12)否8Emailnchar(20)否清华大学出版社. SQL Server 2005数据库应用与开发 3.2.4 表的创建表的创建 1.在在SQL Server Management Studio中创建数中创建数据表据表 (1)启动)启动SQL Server Management Studio,在,在“对对象资源管理器象资源管理器”中,展开要新建表的数据库中,展开要新

43、建表的数据库teaching。(2)右击)右击“表表”项,在快捷菜单里选择项,在快捷菜单里选择“新建表新建表”项,项,(3)在弹出的如图所示的)在弹出的如图所示的“表设计器表设计器”窗口中,依窗口中,依次输入列名、数据类型及允许空否等选项。次输入列名、数据类型及允许空否等选项。列名列名数据类型与列长度数据类型与列长度允许空允许空 清华大学出版社. SQL Server 2005数据库应用与开发 3.2.4 表的创建表的创建1.在在SQL Server Management Studio中创建中创建数据表数据表 (4)依次类推,设置其他列的名称、数据类型、列长度和)依次类推,设置其他列的名称、数

44、据类型、列长度和允许空等选项,并单击允许空等选项,并单击“保存保存”按钮。按钮。(5)右击)右击studentno列,在弹出的快捷菜单中选择列,在弹出的快捷菜单中选择“设置主设置主键键”命令,或者使用命令,或者使用“设置主键设置主键”按钮来设置主键,如按钮来设置主键,如图所示,设置主键为图所示,设置主键为studentno。(6)设置完毕后,单击)设置完毕后,单击“保存保存”按钮。在弹出的对话框中按钮。在弹出的对话框中输入表名输入表名student后,单击后,单击“确定确定”按钮,即完成了创建按钮,即完成了创建表的操作。表的操作。清华大学出版社. SQL Server 2005数据库应用与开发

45、 3.2.4 表的创建表的创建2.利用利用Transact-SQL语句创建数据表语句创建数据表 CREATE TABLE的语法格式如下:的语法格式如下:CREATE TABLE database_name. schema_name.|schema_name. table_name ( | computed_column_definition ,.n ) ON filegroup | default TEXTIMAGE_ON filegroup |default ;清华大学出版社. SQL Server 2005数据库应用与开发 定义基本表定义基本表列定义列定义column_definition

46、定义每个列的名称、类型、缺省值和列上定义每个列的名称、类型、缺省值和列上的约束条件:的约束条件: := DEFAULT , , n可选短语可选短语“DEFAULT ”定义列上的缺省值,定义列上的缺省值,是一个特定值或是一个特定值或NULL;n每个列上可定义零个或或多个约束条件,约束列的取值每个列上可定义零个或或多个约束条件,约束列的取值清华大学出版社. SQL Server 2005数据库应用与开发 定义基本表定义基本表列约束定义列约束定义 := CONSTRAINT :=NOT NULL | PRIMARY KEY | UNIQUE | CHECK () 其中:其中:nNOT NULL:该列

47、不允许取空值,不加该列不允许取空值,不加NOT NULL限制时,限制时,该列可以取空值。该列可以取空值。nPRIMARY KEY:指明该列是主码,其值非空、惟一。指明该列是主码,其值非空、惟一。nUNIQUE:该列上的值必须惟一,相当于说明该列为候选码该列上的值必须惟一,相当于说明该列为候选码nCHECK ():是一个涉及该列的布尔表达式,是一个涉及该列的布尔表达式, 指明该列的值必须满足的条件指明该列的值必须满足的条件清华大学出版社. SQL Server 2005数据库应用与开发 定义基本表定义基本表table_constraintn 一个表可包含零个或多个一个表可包含零个或多个,用于定义

48、主码、,用于定义主码、候选码、外码和表上的其它约束。表约束定义定义形式如下:候选码、外码和表上的其它约束。表约束定义定义形式如下:CONSTRAINT n := PRIMARY KEY (A1, , Ak) | UNIQUE (A1, , Ak) | CHECK () | FOREIGN KEY (A1, , Ak) REFERENCES () 清华大学出版社. SQL Server 2005数据库应用与开发 表约束定义说明表约束定义说明nPRIMARY KEY (A1, , Ak):说明属性列:说明属性列A1, , Ak构成该构成该关系的主码。当主码只包含一个属性时,通常用列约束定关系的主码

49、。当主码只包含一个属性时,通常用列约束定义主码。义主码。nUNIQUE (A1, , Ak):说明属性列:说明属性列A1, , Ak上的值必须惟上的值必须惟一;相当于说明一;相当于说明A1, , Ak构成该关系的候选码。当候选码构成该关系的候选码。当候选码只包含一个属性时,通常用列约束定义候选码。只包含一个属性时,通常用列约束定义候选码。nCHECK ():说明该表上的一个完整性约束条件。:说明该表上的一个完整性约束条件。通常通常是涉及该表一个或多个列的布尔表达式是涉及该表一个或多个列的布尔表达式清华大学出版社. SQL Server 2005数据库应用与开发 表约束定义说明表约束定义说明n外

50、码比较复杂:外码比较复杂: FOREIGN KEY (A1, , Ak) REFERENCES () n:DBMS对参照关系对参照关系(子表子表SC)上的上的insert、update操作引起的违约一般直接拒绝执行操作引起的违约一般直接拒绝执行nDBMS对被参照关系对被参照关系(主表主表S)上的上的delete、update操作引起操作引起的违约可采取的措施是:的违约可采取的措施是:CASCADE、SET NULL、SET DEFAULT和和NO ACTION 之一之一清华大学出版社. SQL Server 2005数据库应用与开发 3.2.4 表的创建表的创建例例3.1 利用利用CREATE

51、 TABLE命令建立课程信息表命令建立课程信息表course,表结构如表所示。,表结构如表所示。列序号列名类型取值说明1courseno nchar(6)主键2cnamenchar(20)否3typenchar(8)否4period tinyint否5creditnumeric(4,1) 否清华大学出版社. SQL Server 2005数据库应用与开发 3.2.4 表的创建表的创建例例3.1 利用利用CREATE TABLE命令建立课程信息表命令建立课程信息表course,表结构如表所示。,表结构如表所示。利用利用CREATE TABLE语句在数据库语句在数据库teaching建立课建立课程

52、信息表程信息表course的程序代码如下:的程序代码如下:CREATE TABLE teaching.dbo.course(courseno nchar(6) NOT NULL,cname nchar(20) NULL,type nchar(8) NULL,period tinyint NULL,credit numeric(4, 1) NULL, CONSTRAINT PK_course PRIMARY KEY CLUSTERED (Courseno ASC ) ON PRIMARY其中:其中:nPK_course 表示创建主键时的索引名称,可以是任意标识符。表示创建主键时的索引名称,可以是

53、任意标识符。nCLUSTERED项表示聚集索引类型。项表示聚集索引类型。nASC表示按表示按courseno值升序方式排列数据,若是值升序方式排列数据,若是DESC则表示则表示降序。降序。清华大学出版社. SQL Server 2005数据库应用与开发 3.2.4 表的创建表的创建例例3.2利用利用CREATE TABLE命令建立学生分数表命令建立学生分数表score,表结构如表所示。该表中主键由两个列构,表结构如表所示。该表中主键由两个列构成。成。 列序号列名类型取值说明1studentnonchar(10)主键2coursenonchar(6)3usuallynumeric(6,2)否4f

54、inalnumeric(6,2)否程序代码如下:程序代码如下:CREATE TABLE dbo.score(studentno nchar(10) NOT NULL,courseno nchar(6) NOT NULL,usually numeric(6, 2) NULL,final numeric(6, 2) NULL, CONSTRAINT PK_score PRIMARY KEY CLUSTERED (studentno ASC,courseno ASC ) ) 清华大学出版社. SQL Server 2005数据库应用与开发 3.2.4 表的创建表的创建例例3.3 利用利用CREATE

55、 TABLE命令建立教师信息表命令建立教师信息表teacher,表结构如表所示。,表结构如表所示。 列序号列名类型取值说明1teachernonchar(6)主键2tnamenchar(8)否3majornchar(10)否4profnchar(10)是5departmentnchar(12)否建立教师信息表teacher的程序代码如下:CREATE TABLE dbo.teacher(teacherno nchar(6) NOT NULL,tname nchar(8) NULL,major nchar(10) NULL,prof nchar(10) NOT NULL,department n

56、char(12) NULL, CONSTRAINT PK_teacher PRIMARY KEY CLUSTERED (teacherno ASC ) 清华大学出版社. SQL Server 2005数据库应用与开发 3.2.4 表的创建表的创建3创建数据表的脚本代码创建数据表的脚本代码利用利用CREATE TABLE命令创建表,和利用可视化命令创建表,和利用可视化方式创建表,实现的功能基本是一样的。只要表方式创建表,实现的功能基本是一样的。只要表结构创建完成,就可以查看表的脚本代码。结构创建完成,就可以查看表的脚本代码。例例3.4 利用利用CREATE TABLE命令建立班级信息表命令建立班

57、级信息表class,表结构如表所示。然后查看该表有关,表结构如表所示。然后查看该表有关create table 命令的脚本信息。命令的脚本信息。列序号列名类型取值说明1classnonchar(6)主键2classnamenchar(12)否3departmentnchar(12)否清华大学出版社. SQL Server 2005数据库应用与开发 3.2.4 表的创建表的创建3创建数据表的脚本代码创建数据表的脚本代码n在在SQL Server Management Studio中右击中右击“资源管理器资源管理器”|“数据库数据库”|teaching|class表表。n在弹出的菜单中,选择在弹出

58、的菜单中,选择“编写表脚本为编写表脚本为(S)”|“CREATE到(到(C)”|“新查询编新查询编辑器窗口辑器窗口”在在“查询编辑器窗口查询编辑器窗口”可以显可以显示如下代码。示如下代码。SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE dbo. class(classno nchar(6) COLLATE Chinese_PRC_CI_AS NOT NULL,classname nchar(12) COLLATE Chinese_PRC_CI_AS NULL,department nchar(12) COLLATE Chine

59、se_PRC_CI_AS NULL,monitor nchar(8) COLLATE Chinese_PRC_CI_AS NULL, CONSTRAINT PK_class PRIMARY KEY CLUSTERED (classno ASC)WITH (IGNORE_DUP_KEY = OFF) ON PRIMARY) ON PRIMARY清华大学出版社. SQL Server 2005数据库应用与开发 3.2.4 表的创建表的创建例例3.5 为了完善为了完善teaching数据库的表间联系,创建表数据库的表间联系,创建表结构如所示的纽带表结构如所示的纽带表teach_class。然后查看该

60、表的。然后查看该表的有关有关CREATE TABLE命令脚本信息。命令脚本信息。(代码从略)(代码从略)列序号列名类型取值说明1teachernonchar(6)主键2classnonchar(6)3coursenonchar(6)清华大学出版社. SQL Server 2005数据库应用与开发 CREATE TABLE语句的较完整格式语句的较完整格式CREATE TABLE 数据据库名数据据库名. 表名表名 (列名列名 数据类型数据类型 NOT NULL identity(初值初值,步长步长) DEFAULT 默认值默认值 UNIQUE PRIMARY KEY CLUSTERED | NON

温馨提示

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

评论

0/150

提交评论