第3章表的创建_第1页
第3章表的创建_第2页
第3章表的创建_第3页
第3章表的创建_第4页
第3章表的创建_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

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

文档简介

1、南昌工程学院计算机系第第3章章 表的创建表的创建报告报告 人:谭德坤人:谭德坤Email:3.1 主要内容主要内容表的概念SQL Server 2000数据类型创建表修改表删除表查看和编辑表中的数据3.2 表的概念表的概念 数据库中包含一个或多个表。数据库中包含一个或多个表。表是数据的集合,是用来存储数据和操作数据的逻表是数据的集合,是用来存储数据和操作数据的逻辑结构。辑结构。表是由行和列组成的,行被称为记录,是组织数据表是由行和列组成的,行被称为记录,是组织数据的单位;列被称为字段,每一列表示记录的一个属的单位;列被称为字段,每一列表示记录的一个属性。性。在特定表中,列名必须是唯一的,但相同

2、的列名可在特定表中,列名必须是唯一的,但相同的列名可以在数据库中的不同表中使用。以在数据库中的不同表中使用。SQL ServerSQL Server中的每个表中最多允许有中的每个表中最多允许有10241024列,每行列,每行最多允许有最多允许有80608060字节的用户数据。行和列的次序是字节的用户数据。行和列的次序是任意的。任意的。3.2.1 表的概念表的概念表是数据库存储数据的主要对象。SQL Server数据库的表由行和列组成。 永久表和临时表永久表和临时表u 在SQL Server中,表分为永久表和临时表两种。数据通常存储在永久表中,如果用户不手动删除,永久表和其中的数据将永久存在。临

3、时表存储在tempdb数据库中,当不再使用时系统会自动删除临时表。u 临时表可以分为本地临时表和全局临时表。u 本地临时表以#符号开头,例如#tmptable1。u 本地临时表仅对当前连接数据库的用户有效,而其他用户则看不到本地临时表,当用户断开与数据库的连接时,本地临时表被自动删除。全局暧昧表以#符号开头,例如#tmptable2。全局临时表对所有连接数据库的用户都有效,当所有引用该表的用户从SQL Server断开连接时全局临时表被删除。3.2.2 SQL Server 2000数据类型数据类型1二进制数据数据类型数据类型描述描述binary固定长度的二进制数据类型,固定长度的二进制数据类

4、型,binary ( n ) 表示固表示固定长度的定长度的n个字节二进制数据。个字节二进制数据。n必须从必须从18 000,存,存储空间大小为储空间大小为n+4字节字节varbinary变长的二进制数据类型,变长的二进制数据类型,varbinary ( n ) 表示表示n个个字节变长二进制数据。字节变长二进制数据。n必须从必须从18 000。存储空间大。存储空间大小为实际输入数据长度小为实际输入数据长度+4个字节,而不是个字节,而不是n个字节。个字节。输入的数据长度可能为输入的数据长度可能为 0 字节字节image可以用来存储超过可以用来存储超过8 KB的可变长度的二进制数据,的可变长度的二进

5、制数据,如如Microsoft Word文档、文档、Microsoft Excel电子表格、电子表格、包含位图的图像、包含位图的图像、GIF文件和文件和JPEG文件文件SQL Server 2000数据类型数据类型2字符数据数据类型数据类型描述描述char固定长度的字符数据类型。固定长度的字符数据类型。char(n)表示长度为表示长度为n个字节的固定长度且非个字节的固定长度且非Unicode 的字符数据。的字符数据。n必须必须是一个介于是一个介于18 000之间的数值。存储大小为之间的数值。存储大小为n个字节个字节varchar是非固定长度的字符数据类型。是非固定长度的字符数据类型。varch

6、ar(n)表示表示长度为长度为n个字节的可变长度且非个字节的可变长度且非Unicode的字符数据。的字符数据。n必须是一个介于必须是一个介于18 000之间的数值。存储大小为输之间的数值。存储大小为输入数据的字节的实际长度,而不是入数据的字节的实际长度,而不是n个字节。所输入个字节。所输入的数据字符长度可以为的数据字符长度可以为0text数据类型的列可用于存储大于数据类型的列可用于存储大于8KB的的ASCII字符。字符。例如,由于例如,由于HTML文档均由文档均由ASCII字符组成且一般长字符组成且一般长于于8KB,所以用浏览器查看之前应在,所以用浏览器查看之前应在SQL Server中存中存

7、储在储在text列中列中SQL Server 2000数据类型数据类型3Unicode 数据 数据类型数据类型描述描述ncharnchar是固定长度是固定长度Unicode数据的数据类型,数据的数据类型,nchar(n)表示包含表示包含n个字符的固定长度个字符的固定长度Unicode字符数据。字符数据。n的值的值必须介于必须介于14 000之间。存储大小为之间。存储大小为n字节的两倍字节的两倍nvarcharnvarchar是可变长度是可变长度 Unicode 数据的数据类型,数据的数据类型,nvarchar(n)表示包含表示包含n个字符的可变长度个字符的可变长度Unicode字符数字符数据。

8、据。n的值必须介于的值必须介于14 000之间。字节的存储大小是所之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零输入字符个数的两倍。所输入的数据字符长度可以为零ntext可变长度可变长度Unicode数据的最大长度为数据的最大长度为230 - 1 (1 073 741 823) 个字符。存储大小是所输入字符个数的两倍(以字个字符。存储大小是所输入字符个数的两倍(以字节为单位)节为单位)SQL Server 2000数据类型数据类型4日期和时间数据数据类型数据类型描述描述datetime从从 1753 年年 1 月月 1 日到日到 9999 年年 12 月月 31 日的

9、日期和日的日期和时间数据,精确度为百分之三秒(等于时间数据,精确度为百分之三秒(等于 3.33 毫秒或毫秒或 0.00333 秒)秒)smalldatetime从从 1900 年年 1 月月 1 日到日到 2079 年年 6 月月 6 日的日期和时日的日期和时间数据精确到分钟。间数据精确到分钟。29.998 秒或更低的秒或更低的 smalldatetime 值向下舍入为最接近的分钟,值向下舍入为最接近的分钟,29.999 秒或更高的秒或更高的 smalldatetime 值向上舍入为最接近的分钟值向上舍入为最接近的分钟SQL Server 2000数据类型数据类型5数字数据数据类型数据类型描述

10、描述整整型 数型 数据据bigint从从 -263 (-9 223 372 036 854 775 808) 263-1(9 223 372 036 854 775 807)的整型数据(所有数字)。存储大小为)的整型数据(所有数字)。存储大小为 8 个字节个字节int从从 -231 (-2 147 483 648) 231 - 1(2,147,483,647)的整型数据)的整型数据(所有数字)。存储大小为(所有数字)。存储大小为 4 个字节个字节smallint从从 -215 (-32 768) 215 - 1 (32 767)的整型数据。存储大小为)的整型数据。存储大小为 2 个字节。个字节

11、。tinyint从从 0 255 的整型数据。存储大小为的整型数据。存储大小为 1 字节字节小小数 数数 数据据Decimal和和numeric带定点精度和小数位数的带定点精度和小数位数的numeric数据类型。数据类型。decimal(p, s) 和和 numeric(p, s) 表示定点精度和小数位数。使用最大精度时,有效表示定点精度和小数位数。使用最大精度时,有效值从值从 - 1038 +1 1038 - 1。p表示精度,指定小数点左边和右边可以存表示精度,指定小数点左边和右边可以存储的十进制数字的最大个数。精度必须是从储的十进制数字的最大个数。精度必须是从 1 到最大精度之间的值。到最

12、大精度之间的值。最大精度为最大精度为38。s表示小数位数,指定小数点右边可以存储的十进制表示小数位数,指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从数字的最大个数。小数位数必须是从0 p之间的值。默认小数位数之间的值。默认小数位数是是0,因而,因而 0 s p。最大存储大小基于精度而变化。最大存储大小基于精度而变化。近近似 数似 数字 数字 数据据float ( n ) 从从 - 1.79E + 308 1.79E + 308 之间的浮点数字数据。之间的浮点数字数据。n 为用于存为用于存储科学记数法储科学记数法float数尾数的位数,同时指示其精度和存储大小。数尾数的位数,同时

13、指示其精度和存储大小。n 必须为从必须为从 1 53 之间的值。之间的值。real从从 -3.40E + 38 3.40E + 38 之间的浮点数字数据。存储大小为之间的浮点数字数据。存储大小为 4 字节字节SQL Server 2000数据类型数据类型6货币数据数据类型数据类型描述描述Money货币数据值介于货币数据值介于 -263 (-922 337 203 685 477.5808) 263 1 (+922 337 203 685 477.5807) 之间,精确到货币之间,精确到货币单位的千分之十。存储大小为单位的千分之十。存储大小为 8 个字节个字节smallmoney货币数据值介于货

14、币数据值介于 -214 748.3648 +214 748.3647 之之间,精确到货币单位的千分之十。存储大小为间,精确到货币单位的千分之十。存储大小为 4 个个字节字节SQL Server 2000数据类型数据类型7特殊数据 数据类型数据类型描述描述table一种特殊的数据类型,存储供以后处理的结果集。一种特殊的数据类型,存储供以后处理的结果集。table数据类型只能用数据类型只能用于定义于定义table类型的局部变量或用户定义函数的返回值类型的局部变量或用户定义函数的返回值bitbit 数据类型只能包括数据类型只能包括 0 或或 1。可以用。可以用bit数据类型代表数据类型代表TRUE或

15、或FALSE、YES或或NO。例如,询问客户是否为初次访问的问题可存储在。例如,询问客户是否为初次访问的问题可存储在bit列中,类似列中,类似于其他数据类型中的布尔型于其他数据类型中的布尔型timestamp用于表示用于表示SQL Server在一行上的活动顺序,按二进制格式以递增的数字在一行上的活动顺序,按二进制格式以递增的数字来表示。当表中的行发生变动时,用从来表示。当表中的行发生变动时,用从DBTS函数获得的当前数据库的函数获得的当前数据库的时间戮值来更新时间戮。时间戮值来更新时间戮。timestamp数据与插入或修改数据的日期和时间无数据与插入或修改数据的日期和时间无关。若要自动记录表

16、中数据更改的时间,使用关。若要自动记录表中数据更改的时间,使用datetime或或smalldatetime数据数据类型记录事件或触发器类型记录事件或触发器uniqueidentifier以一个以一个16位的十六进制数表示全局唯一标识符位的十六进制数表示全局唯一标识符 (GUID)。当需要在多)。当需要在多行中唯一标识某一行时可使用行中唯一标识某一行时可使用GUID。例如,可使用。例如,可使用uniqueidentifier 数据类数据类型定义一个客户标识代码列,以编辑公司来自多个国家型定义一个客户标识代码列,以编辑公司来自多个国家/地区的总的客户名地区的总的客户名录录sql_variant一

17、种存储一种存储SQL Server所支持的各种数据类型所支持的各种数据类型 (text、ntext、timestamp和和sql_variant除外)值的数据类型除外)值的数据类型用户定义的数据类型用户定义的数据类型 创建用户定义的数据类型时必须提供以下三个参数: (1)名称。(2)新数据类型所依据的系统数据类型。(3)为空性(数据类型是否允许空值)。【例例3.1】按照以下步骤创建用户自定义数据类型postcode,用于表示邮政编码。(1)在)在SQL Server 2000企业管理器中,展开服务器组,然后展开服务器实例企业管理器中,展开服务器组,然后展开服务器实例。(2)展开)展开“数据库数

18、据库”文件夹,再展开要在其中创建用户定义的数据类型的数据文件夹,再展开要在其中创建用户定义的数据类型的数据库,例如库,例如HrSystem。(3)右击)右击“用户定义数据类型用户定义数据类型”,然后单击,然后单击“新建用户定义数据类型新建用户定义数据类型”命令,命令,打开打开“用户定义的数据类型属性用户定义的数据类型属性”对话框,如图对话框,如图3.11所示。所示。(4)输入新建数据类型的名称)输入新建数据类型的名称postcode。(5)在)在“数据类型数据类型”列表中,选择基数据类型,列表中,选择基数据类型,postcode的基数据类型为的基数据类型为char。(6)如果)如果“长度长度”

19、字段处于活动状态,可以在此处输入此数据类型可存储的最字段处于活动状态,可以在此处输入此数据类型可存储的最大数据长度。可以设置可变长度的数据类型包括大数据长度。可以设置可变长度的数据类型包括binary、char、nchar、nvarchar、varbinary和和varchar。这里设置。这里设置postal code的最大长度为的最大长度为6。(7)若要允许此数据类型接受空值,请选择)若要允许此数据类型接受空值,请选择“允许空值允许空值”命令。命令。(8)在)在“规则规则”和和“默认值默认值”列表中选择一个规则或默认值,以将其绑定到用列表中选择一个规则或默认值,以将其绑定到用户定义数据类型上

20、。户定义数据类型上。(9)单击)单击“确定确定”按钮,完成设置。按钮,完成设置。3.3 表结构的创建、修改和删除表结构的创建、修改和删除3.3.1 3.3.1 表结构的创建表结构的创建 1用企业管理器用企业管理器表结构表结构 2 2使用使用T-SQLT-SQL语句创建表结构语句创建表结构3.2.2 表的创建、修改和删除表的创建、修改和删除 第第1步步 启动SQL Server 企业管理器,用鼠标右键单击选择数据库(这里是数据库XSCJ),将出现如图3.25所示的快捷菜单,选择“新建(N)”“表(T)”。图图3.25新建表新建表3.2.2 表的创建、修改和删除表的创建、修改和删除 第第2步步 在

21、所弹出的编辑窗口中分别输入或选择各列的名称、数据类型、是否允许为空值等属性,在“学号”列上单击鼠标右键,选择“设置主键”菜单项,将学号列设置为主键,将“性别”列的缺省值设置为1。如图3.26所示。 第第3步步 在表的各列的属性均编辑完成后,单击“保存”图形按钮,出现如图2.27所示的“选择表名”对话框。 第第4步步 在“选择表名”对话框中输入表名XS,单击“确定”,XS表就创建好了,如图3.28所示。图图3.26创建创建XS表的各列表的各列3.2.2 表的创建、修改和删除表的创建、修改和删除图图2.27选择表名对话框选择表名对话框图图3.28新创建的表新创建的表XS3.2.2 表的创建、修改和

22、删除表的创建、修改和删除 同样,创建课程表,名称为KC, 表结构如表2.4所示。KC表创建后的界面,如图3.29所示。表表2.4 课程表课程表(表名表名KC)结构结构列列 名名数据类型数据类型长度长度是否允许为空是否允许为空值值默认值默认值说明说明课程号定长字符型(char)3无主键课程名定长字符型(char)16无开课学期整数型(tinyint)11只能为18学时整数型(tinyint)1无学分整数型(tinyint)1无3.2.2 表的创建、修改和删除表的创建、修改和删除图图3.29创建表创建表KC3.2.2 表的创建、修改和删除表的创建、修改和删除创建成绩表,名称为XS_KC, 表结构如

23、表2.5所示。KC表创建后的界面,如图3.30所示。表表2.5成绩表成绩表(表名表名XS_KC)结构结构列名列名数据类型数据类型长度长度是否允许为空值是否允许为空值默认默认值值说明说明学号定长字符型(char)6无主键课程号定长字符型(char)3无主键成绩整数型(tinyint)1无 学分整数型(tinyint)1无图图3.30创建表创建表XS_KC3.2.2 表的创建、修改和删除表的创建、修改和删除 3. 修改表修改表 在创建了一个表之后,使用过程中可能对表结构、约束或其它列的属性需要进行修改。表的修改与表的创建一样,也可以通过SQL Server企业管理器和T-SQL两种方法来进行,本节

24、讨论在企业管理器中修改表的方法。 对一个已存在的表可以进行的修改操作包括: 更改表名 增加列 删除列 修改已有列的属性(列名、数据类型、是否为空值) (1) 更改表名 更改表名的操作步骤: 第第1步步 在SQL Server企业管理器中展开需更名的表,在其上单击鼠标右键,在弹出的快捷菜单上选择“重命名”,如图3.31所示。图图3.31 修改表名修改表名第第2步步 在表名位置上输入新的表名,如图3.32所示,按下回车键。图图3.32 输入新表名输入新表名在此输入新表名 第第3步步 系统弹出对话框,提示用户若更改了表名,那么将引起引用该表的存储过程、视图或触发器无效,要求用户对更名操作予以确认。点

25、击“是”按钮确认该操作。 第第4步步 第3步操作完成后,系统弹出完成对话框,提示用户表更名操作已经完成。点击“确定”。 (2) 增加列 当原来所创建的表中需要增加项目时,就要向表中增加列。例如若在表中需要登记其籍贯、获奖情况等,就要用到增加列的操作。 在SQL Server企业管理器中展开需进行操作的表XS,在其上单击鼠标右键,在弹出的快捷菜单上选择“设计表”,如图3.34所示。图图3.34设计表设计表3.2.2 表的创建、修改和删除表的创建、修改和删除 在SQL Server Enterprise Manager的设计表“XS ”窗口中点击第一个空白行,输入列名“奖学金等级”,选择数据类型“

26、tinyint”,如图3.35所示。 当需向表中添加的列均输入完毕后,点击关闭设计表“XS”窗口按钮,此时将弹出确认对话框,单击“是”,保存修改后的表。图图3.35增加新列增加新列3.2.2 表的创建、修改和删除表的创建、修改和删除 在SQL Server Enterprise Manager的设计表“XS ”窗口中点击第一个空白行,输入列名“奖学金等级”,选择数据类型“tinyint”,如图3.35所示。 当需向表中添加的列均输入完毕后,点击关闭设计表“XS”窗口按钮,此时将弹出确认对话框,单击“是”,保存修改后的表。图图3.35增加新列增加新列3.2.2 表的创建、修改和删除表的创建、修改

27、和删除 (3) 删除列 在SQL Server企业管理器中展开需进行操作的表XS,在其上单击鼠标右键,在弹出的快捷菜单上选择“设计表”。在SQL Server企业管理器的设计表“XS ”窗口中点击需删除的列(例如XS表中删除“奖学金等级”列),此时箭头指在该列上,点击鼠标右键,在弹 出的快捷菜单上选择“删除列”,如图3.36所示,该列即被删除。图图3.36删除列删除列3.2.2 表的创建、修改和删除表的创建、修改和删除 (4) 修改已有列的属性 在表中尚未有记录值时,可以修改表结构,如更改列名、列的数据类型、长度和是否允许空值等属性。但当表中有了记录后,建议不要轻易改变表结构,特别不要改变数据

28、类型,以免产生错误。 具有以下特性的列不能被修改: 具有text、ntext、image或timestamp数据类型的列 计算列 全局标识符列 复制列 用于索引的列(但若用于索引的列为varchar、nvarchar或varbinary数据类型时,可以增加列的长度) 用于由CREATE STATISTICS生成统计的列。若需修改这样的列,必须先用DROP STATISTICS语句删除统计 用于主键或外键约束的列 用于CHECK或UNIQUE约束的列 关联有默认值的列3.2.2 表的创建、修改和删除表的创建、修改和删除 10,允许为空值;将“出生时间”列的列名改为“birthday”,数据类型由

29、“smalldatetime”改为“datetime”。 因尚未输入记录值,所以可以改变XS表的结构,在“企业管理器”中修改表中已有列的属性的操作步骤是: 第第1步步 在SQL Server企业管理器中展开需进行操作的表XS,在其上单击鼠标右键,在弹出的快捷菜单上选择“设计表”。 第第2步步 在SQL Server 企业管理器的设计表“XS ”窗口中点击需修改的列(本例中是“姓名”和“出生时间”),修改相应的属性,如图3.36所示。图图3.36修改列的属性修改列的属性2.2.2 表的创建、修改和删除表的创建、修改和删除 第第3步步 当需修改的列均修改完毕后,点击关闭设计表“XS”窗口按钮,此时

30、将弹出对话框,单击“是”保存修改后的表。 4. 表的删除表的删除 删除一个表时,表的定义、表中的所有数据以及表的索引、触发器、约束等均被删除。注意,不能删除系统表和有外键约束所参照的表。 设需将XSCJ数据库中的表test删除,操作过程为: 第第1步步 在“企业管理器”中展开数据库XSCJ,再展开表,在表test上点击鼠标右键,在弹出的快捷菜单上选择“删除”,如图3.37所示。图图3.37删除表删除表3.2.2 表的创建、修改和删除表的创建、修改和删除 第第2步步 上一步操作结束后,系统弹出如图3.38所示的“除去对象”对话框,点击“全部除去”按钮,即可删除选择的表。图图3.38确定需删除表确

31、定需删除表3.3 表结构的创建、修改和删除表结构的创建、修改和删除CREATE TABLE table_nameCREATE TABLE table_name( column_name1 data_type( column_name1 data_type DEFAULTconstant_expression DEFAULTconstant_expression IDENTITY ( SEED, INCREMENT ) IDENTITY ( SEED, INCREMENT ) NULL | NOT NULL NULL | NOT NULL ,n ,n)ON filegroup | DEFAULT

32、 )ON filegroup | DEFAULT table_name:是表的名字。:是表的名字。column_name1:表中列的名字。列名在表中必须唯一:表中列的名字。列名在表中必须唯一,列的命名必须遵循数据库对象的命名规则。,列的命名必须遵循数据库对象的命名规则。data_type:列的数据类型和宽度。:列的数据类型和宽度。DEFAULT constant_expression:指定所定义的列的:指定所定义的列的默认值,默认值由常量表达式确定。默认值,默认值由常量表达式确定。IDENTITY:定义该列是一个标识列。:定义该列是一个标识列。SEED:标识列的起始值,即插入表的第一行数据的标

33、:标识列的起始值,即插入表的第一行数据的标识列的值。识列的值。INCREMENT:标识列的增值,即插入表的最近一行相:标识列的增值,即插入表的最近一行相对于前一行标识列数据值的增量。对于前一行标识列数据值的增量。NULL | NOT NULL:指出该列是否允许为空:指出该列是否允许为空,默认为,默认为NULL。ON filegroup | DEFAULT:指定在哪个文:指定在哪个文件组上创建表。件组上创建表。DEFAULT表示将表存储在默表示将表存储在默认文件组中。认文件组中。例3-4 为sales数据库创建一个销售人员表Salers,它包含SaleID、姓名、性别、出生日期、雇用日期、地址、

34、电话和备注字段,其中SaleID、姓名这两列不允许为空。CREATE TABLE salers(SaleID char(3) NOT NULL, SaleName char(8) NOT NULL, Sex char(2), Birthday datetime, HireDate datetime, Address char(60), Telephone char(13), Note char(200)例3-5 为sales数据库创建订单表Orders,包括OrderID、CustomerID、SaleID和OrderDate字段,其中OrderID为标识列,起始值为10248,增值为1;Cu

35、stomerID和SaleID字段不允许为空值;OrderDate字段的默认值为当前日期。 CREATE TABLE Orders(OrderID int IDENTITY(10248,1), CustomerID char(3) NOT NULL, SaleID char(3) NOT NULL, OrderDate datetime DEFAULT getdate()例例3-6 为为sales数据库在文件组数据库在文件组USER1上创建类上创建类别别Categories表。表。CREATE TABLE Categories(CategoryID int NOT NULL, Category

36、Name nvarchar(15), Description nvarchar(200) )ON USER1注意:文件组USER1必须已经定义。在例3-4和例3-5中,没有使用ON关键字指出文件组,则表存储在缺省的文件组中。 3.3.2 表结构的修改 修改的操作包括:增加或删除列、修改列的名称修改的操作包括:增加或删除列、修改列的名称、数据类型、数据长度、改变表的名称等。、数据类型、数据长度、改变表的名称等。 1使用企业管理器修改表结构使用企业管理器修改表结构 2使用使用T-SQL语句修改表结构语句修改表结构 语法形式为:语法形式为:ALTER TABLE table_name A D D c

37、 o l u m n _ n a m e d a t e _ t y p e D E FA U LT contant_expression IDENTITY(SEED,INCREMENT)NULL | NOT NULL| DROP COLUMN column_name| ALTER COLUMN column_name new_datetype NULL | NOT NULL 例例3-7 sales数据库中的数据库中的Customers表包含表包含CustomerID、ConpanyName和和ConnectName三三个字段,现为该表添加地址、邮政编码和电话号码字个字段,现为该表添加地址、邮

38、政编码和电话号码字段。段。EXEC sp_addtype telephone_code,varchar(15),NULLEXEC sp_addtype zip,char(6),NOT NULLGOALTER TABLE CustomersADD Address char(40),ZipCode zip,Telephone telephone_code在该列中,添加的在该列中,添加的ZipCode和和Telephone字段的数据字段的数据类型为用户自定义数据类型。类型为用户自定义数据类型。 例例3-8 将表将表salers中的中的Sex列删除列删除ALTER TABLE salersDROP C

39、OLUMN Sex例例3-9 将将salers表中的表中的Address字段的长度改为字段的长度改为30,并且不能为空。,并且不能为空。ALTER TABLE salersALTER COLUMN Address varchar(30) NOT NULL注意:只能修改列的数据类型,以及列值是否为空。3.3.3 表结构的删除 1 1使用企业管理器删除表格使用企业管理器删除表格 2 2使用的使用的DROP TABLEDROP TABLE命令删除表格命令删除表格其语法形式为:其语法形式为:DROP TABLE table_name1,nDROP TABLE table_name1,n例例3-10 3

40、-10 删除当前数据库中一个名为删除当前数据库中一个名为example1example1的的表表DROP TABLE example1DROP TABLE example13.4 向表中插入、修改和删除数据向表中插入、修改和删除数据3.4.1 插入数据 向表中插入数据使用的向表中插入数据使用的T-SQL语句是语句是INSERT INTO语句,其语法形式为:语句,其语法形式为:INSERT INTO table_name ( column_name ,n ) VALUES ( expression | NULL | DEFAULT ,n ) table_name:要插入数据的表名。:要插入数据的

41、表名。 column_name:要插入数据的列名。:要插入数据的列名。 expression:与:与column_name相对应的字段的值相对应的字段的值,字符型和日期型值插入时要加单引号。,字符型和日期型值插入时要加单引号。 例例3-11 向向categories表中添加三行数据。表中添加三行数据。INSERT INTO Categories(CategoryID,CategoryName,Description)VALUES(1,饮料饮料,软饮料、咖啡、茶、啤酒和淡啤酒软饮料、咖啡、茶、啤酒和淡啤酒)INSERT INTO Categories(CategoryID,CategoryNam

42、e,Description)VALUES(2,调味品调味品,香甜可口的果酱、调料、酱汁和调味香甜可口的果酱、调料、酱汁和调味品品)INSERT INTO Categories(CategoryID,CategoryName,Description)VALUES(3,点心点心,甜点、糖和面包甜点、糖和面包) 例例3-12 向向Salers表中插入一行数据,其中表中插入一行数据,其中Sex字段字段使用默认值为使用默认值为男男,HireDate等字段均取空值。等字段均取空值。在插入数据时,对于允许为空的列可使用NULL插入空值;对于具有默认值的列可使用DEFAULT插入默认值 。INSERT INT

43、O Salers(SaleID,SaleName,Sex,Birthday,HireDate,Address,Telephone,Notes)VALUES(s11,赵宇飞,DEFAULT,1974-07-25,NULL,NULL,NULL,NULL)或INSERT INTO Salers(SaleID,SaleName,Birthday)VALUES(s11,赵宇飞,1974-07-25) 例例3-13 在例在例3-11和例和例3-12中,由于是对表中所中,由于是对表中所有列插入数据,则可省略列名表,写成如下形式有列插入数据,则可省略列名表,写成如下形式:INSERT INTO Categor

44、iesVALUES(1,饮料饮料,软饮料、咖啡、茶、啤酒和淡软饮料、咖啡、茶、啤酒和淡啤酒啤酒) INSERT INTO SalersVALUES(s11,赵宇飞赵宇飞,DEFAULT,1974-07-25,NULL,NULL,NULL,NULL) 注意:当向表中所有列都插入新数据时,可以省略列名表,但必须保证VALUES后的各数据项位置同表定义时的顺序一致,否则系统会报错。 例例3-14 向向OrderDetails表中插入一行数据。表中插入一行数据。INSERT INTO OrderDetailsVALUES(10254,P01003)OrderDetails表中有三列数据,而插入的数据只

45、有两表中有三列数据,而插入的数据只有两列,这是列,这是系统会报错系统会报错。正确形式为:正确形式为:INSERT INTO OrderDetails VALUES(10254,P01003,NULL)或或 INSERT INTO OrderDetails (OrderID,ProductID) VALUES(10254,P01003)在后一种形式中,系统将在后一种形式中,系统将Quantity字段的值自动设为字段的值自动设为空值。空值。 例例3-15 3-15 向向OrdersOrders表中插入一行数据。表中插入一行数据。OrdersOrders表表的定义如例的定义如例3-53-5。INSE

46、RT INTO Orders (CustomerID,SaleID)INSERT INTO Orders (CustomerID,SaleID)Values(c01,s11)Values(c01,s11) 在例在例3-53-5的定义中的定义中OrdersOrders包括四个字段,其包括四个字段,其中中OrderIDOrderID是标识列,是标识列,OrderDateOrderDate是带有默认值的是带有默认值的列,因此用户在插入数据时不必提供这两列的值列,因此用户在插入数据时不必提供这两列的值,SQL ServerSQL Server自动填充。自动填充。 注意:具有IDENTITY属性的列,其

47、值由系统给出,用户不必向表中插入数据。 使用使用INSERT INTO语句一次只能插入一行数据,语句一次只能插入一行数据,若想一次插入多行数据,则需在若想一次插入多行数据,则需在INSERT INTO语句语句中加入查询子句中加入查询子句SELECT,通过,通过SELECT子句从其子句从其它表中选出符合条件的数据,再将其插入到指定的它表中选出符合条件的数据,再将其插入到指定的表中。语法形式如下:表中。语法形式如下:INSERT INTO dest_table_name ( column_name ,n ) SELECT column_name ,nFROM source_table_name W

48、HERE search_conditions 功能:先从功能:先从source_table_name表中找出符合条表中找出符合条件的所有数据,从中选择所需要的列,将其插入到件的所有数据,从中选择所需要的列,将其插入到dest_table_name中。中。例例3-16 创建创建employee表,包含三个字段表,包含三个字段EmployeeID、EmployeeName和和Address。将。将Salers表中的女销售人员的数据插入到表中的女销售人员的数据插入到employee表中。表中。 注意:v要插入数据的表dest_table_name必须是已经存在的,不能向不存在的表中插入数据。v要插入

49、数据的表dest_table_name中的列和SELECT子句中的列的数量、顺序必须相同,列的数据类型也要相同。 CREATE TABLE Employee(EmployeeID char(3),EmployeeName char(8),Address char(60)GO INSERT INTO EmployeeSELECT SaleID,SaleName,AddressFROM SalersWHERE Sex=女3.4.2 修改数据其语法形式为:其语法形式为:UPDATE table_nameSET column_name=expression ,n WHERE search_condit

50、ions table_name:要更新数据的表名。:要更新数据的表名。 column_name:要更新数据的列名。:要更新数据的列名。 expression:更新后的数据值。:更新后的数据值。 search_conditions:更新条件,只对表中满:更新条件,只对表中满足该条件的记录进行更新。足该条件的记录进行更新。例例3-17 将将Products表中表中啤酒啤酒的价格改为的价格改为4元元。UPDATE ProductsSET Price=4WHERE ProductName=啤酒啤酒例例3-18 将例将例3-12插入的一行数据中赵宇飞的地插入的一行数据中赵宇飞的地址改为址改为东直门外大街

51、东直门外大街108号号,电话改为,电话改为(010)60486658。UPDATE SalersS E T A d d r e s s = 东 直 门 外 大 街东 直 门 外 大 街 1 0 8 号号,Telephone=(010)60486658WHERE SaleID=s11例例3-19 将将Products表中表中CategoryID为为2的所有的所有产品的价格下调产品的价格下调10。UPDATE ProductsSET Price=Price*(1-0.1)WHERE CategoryID=2注意:使用UPDATE语句可以一次修改一行数据,也可以一次修改多行数据,甚至时整张表的数据。

52、但是无论那种修改,都要求修改前后的数据类型和数据个数相同。3.4.3 删除数据删除表中数据使用的是删除表中数据使用的是DELETE语句,其语法形语句,其语法形式为:式为:DELETE FROM table_name WHERE search_conditions功能:删除表中符合功能:删除表中符合search_conditions的数据的数据;缺省;缺省WHERE子句时,表示删除表中所有数据子句时,表示删除表中所有数据。例例3-20 将例将例3-12插入的数据从插入的数据从salers表中删除表中删除。DELETE FROM SalersWHERE SaleID=s113.4.4 在企业管理器

53、下插入、更新、删除表中数据 在企业管理器下同样可以完成插入、更新和删除在企业管理器下同样可以完成插入、更新和删除数据的操作。数据的操作。 只需进入企业管理器,选中要进行插入、更新只需进入企业管理器,选中要进行插入、更新或删除数据操作的表,单击右键,弹出的快捷菜单或删除数据操作的表,单击右键,弹出的快捷菜单,将鼠标指向,将鼠标指向“打开表打开表”命令,选择级联子菜单中命令,选择级联子菜单中的的“所有行所有行”命令,系统会弹出数据记录窗口命令,系统会弹出数据记录窗口,在,在该窗口中就可完成插入、更新和删除操作。该窗口中就可完成插入、更新和删除操作。3.5 约束约束 约束定义了必须遵循的用于维护数据

54、一致性和约束定义了必须遵循的用于维护数据一致性和正确性的规则,是强制实现数据完整性的主要途径正确性的规则,是强制实现数据完整性的主要途径。约束有。约束有5种类型,包括:主键约束、唯一性约束种类型,包括:主键约束、唯一性约束、检查约束、默认约束、外键约束(参照约束)。、检查约束、默认约束、外键约束(参照约束)。 约束可以在两个层次上实施:约束可以在两个层次上实施: 列级:用户定义的约束只对表中的一列起作用;表级:用户定义的约束对表中的多列起作用。 1 1约束的创建、修改约束的创建、修改 (1)使用)使用CREATE TABLE语句创建约束语句创建约束 使用使用CREATE TABLE语句创建约束

55、是在创语句创建约束是在创建表时定义约束,约束是表格定义的一部分。其建表时定义约束,约束是表格定义的一部分。其语法形式为:语法形式为:CREATE TABLE table_name( column_name data_type CONSTRAINT constraint_name constraint_type ,n ) constraint_name:要创建的约束的名字。若:要创建的约束的名字。若缺省约束名,则缺省约束名,则SQL Server会自动为约束提供一会自动为约束提供一个名字。个名字。 constraint_type:要创建的约束类型。:要创建的约束类型。 (2)使用)使用ALTER

56、 TABLE语句创建约束语句创建约束 在已有的表上创建、修改约束可以使用在已有的表上创建、修改约束可以使用ALTER TABLE命令。其语法形式为:命令。其语法形式为:ALTER TABLE table_name WITH CHECK | WITH NOCHECK ADD CONSTRAINT constraint_name constraint_type WITH CHECK | WITH NOCHECK:新加入的约束对:新加入的约束对表中现有的数据是否进行检查。表中现有的数据是否进行检查。 2 2约束的删除约束的删除 语法形式为:语法形式为:ALTER TABLE table_name D

57、ROP CONSTRAINT constraint_name3.5.1 主键约束(PRIMARY KEY) 主键用于唯一地标识表中每一条记录。我们主键用于唯一地标识表中每一条记录。我们可以定义表中的一列或多列为主键,则主键列上可以定义表中的一列或多列为主键,则主键列上没有两行具有相同值,也不能为空值。没有两行具有相同值,也不能为空值。 1 1使用使用T-SQLT-SQL语句创建主键约束语句创建主键约束 创建主键约束的语法形式:创建主键约束的语法形式: CONSTRAINT constraint_name PRIMARY KEY CLUSTERED | NONCLUSTERED ( col_na

58、me ,n)例例3-21 创建创建Orders表,包括表,包括OrderID、CustomerID、SaleID和和OrderDate四个字段,其中四个字段,其中OrderID字段设为主键字段设为主键。CREATE TABLE Orders(OrderID int CONSTRAINT pk_orderid PRIMARY KEY, CustomerID char(3), SaleID char(3), OrderDate datetime)或或 CREATE TABLE Orders ( OrderID int PRIMARY KEY, CustomerID char(3), SaleID

59、char(3), OrderDate datetime) 例例3-21 已有已有Salers表,包含表,包含SaleID、SaleName、Sex等字段,将该表中等字段,将该表中SaleID字段字段设为主键。设为主键。注意:即使在创建主键约束时带有WITH NOCHECK选项,系统总要对现存数据进行检查,若现有数据在该列上出现重复或空值,SQL Server会提示错误信息,并拒绝执行创建主键约束操作。 ALTER TABLE Salers ADD CONSTRAINT pk_saleid PRIMARY KEY(Saleid)例3-22 OrderDetails表包含OrderID、Produ

60、ctID和Quantity三个字段,在OrderID和ProductID上创建主键。ALTER TABLE OrderDetailsADD CONSTRAINT pk_order_product PRIMARY KEY(orderid,productid) 主键约束定义在不止一列上时,一列中的值可以重复,但主键约束定义中的所有列的组合值必须唯一。 例例3-23 删除例删除例3-21中创建的主键约束。中创建的主键约束。ALTER TABLE SalersDROP CONSTRAINT pk_saleid 2使用企业管理器创建主键约束使用企业管理器创建主键约束 在企业管理器下也可创建、修改、删除主

温馨提示

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

评论

0/150

提交评论