数据库-表和数据的管理

上传人:无*** 文档编号:163585317 上传时间:2022-10-22 格式:PPT 页数:83 大小:602.50KB
收藏 版权申诉 举报 下载
数据库-表和数据的管理_第1页
第1页 / 共83页
数据库-表和数据的管理_第2页
第2页 / 共83页
数据库-表和数据的管理_第3页
第3页 / 共83页
资源描述:

《数据库-表和数据的管理》由会员分享,可在线阅读,更多相关《数据库-表和数据的管理(83页珍藏版)》请在装配图网上搜索。

1、第五章 表和数据的管理学习要点表和数据的管理SQL Server 2005的数据类型的数据类型创建表创建表修改表修改表数据管理数据管理插入数据插入数据修改数据修改数据删除数据删除数据删除表删除表数据的完整性数据的完整性数据完整性类型数据完整性类型约束约束默认默认规则规则SQL Server 2005的数据类型SQL Server 2005的数据类型数据库中的所有数据都存放在按行与列格式组织数据库中的所有数据都存放在按行与列格式组织的表中,数据类型是数据的一种属性,决定数据的表中,数据类型是数据的一种属性,决定数据存储的空间和格式。存储的空间和格式。数据类型可以为对象定义数据类型可以为对象定义4

2、个属性:个属性:对象包含的数据种类。对象包含的数据种类。所存储值占有的空间(字节数)和数值范围。所存储值占有的空间(字节数)和数值范围。数值的精度(仅适用于数值类型)。数值的精度(仅适用于数值类型)。数值的小数位数(仅适用于数值类型)。数值的小数位数(仅适用于数值类型)。SQL server 2005提供的数据类型可以归纳为:提供的数据类型可以归纳为:数值类型、字符类型、日期时间类型、货币类型数值类型、字符类型、日期时间类型、货币类型和其他数据类型。和其他数据类型。SQL Server 2005的数据类型数值类型数值类型根据其所存储数据的精确与否,分为精数值类型根据其所存储数据的精确与否,分为

3、精确数值类型和近似数值类型。确数值类型和近似数值类型。1.精确数值类型精确数值类型精确数值类型用来存储没有小数位的整数或定精确数值类型用来存储没有小数位的整数或定点小数。点小数。类别数据类型字节数取值范围Integerbigint8-263263-1int4-231231-1smallint2-32 76832 767tinyint10255Exact numricdecimal(p,s)517-1038+11038-1numeric(p,s)517-1038+11038-1SQL Server 2005的数据类型数值类型定义定义decimal和和numeric数据类型时需要提供两个数据类型时

4、需要提供两个参数,第参数,第1个参数说明数据类型的精度,即数字的个参数说明数据类型的精度,即数字的个数,第个数,第2个参数说明数据类型的小数位数,例如个参数说明数据类型的小数位数,例如decimal(12,4),定义一个数据类型,其中可以存,定义一个数据类型,其中可以存放放12位数字,其中小数点后面有位数字,其中小数点后面有4位数字。位数字。在在SQL Server中中decimal和和numeric两者唯一的两者唯一的区别在于区别在于decimal不能用于带有不能用于带有identity关键字的关键字的列。列。数据类型数据类型bigint,int,smallint和和tinyint数据类型数

5、据类型只能用于存储整数。只能用于存储整数。decimal和和numeric数据类型数据类型既可以存放小数数值,也可以存放整数,当参数既可以存放小数数值,也可以存放整数,当参数s的值取的值取0时,表示这两种数据类型中存放的是整数时,表示这两种数据类型中存放的是整数。SQL Server 2005的数据类型数值类型2.近似数值类型近似数值类型近似数字数据类型可以存储十进制值,用于表示浮点数近似数字数据类型可以存储十进制值,用于表示浮点数据。此类型的数据不一定有精确的表示。据。此类型的数据不一定有精确的表示。SQL Server 2005存储数据时对小数点右边的数进行四存储数据时对小数点右边的数进行

6、四舍五入。只有在精确数据类型不够大,不能存储数值时,舍五入。只有在精确数据类型不够大,不能存储数值时,才考虑使用才考虑使用float。float(n)中中n的取值范围为的取值范围为153。当。当1n 24时,占用时,占用4字节,精度为字节,精度为7;当;当25n 53时,占用时,占用8字节,精度为字节,精度为15。数据类型字节数取值范围float(n)4或8-2.23E3082.23E308real4-3.4E383.4E38SQL Server 2005的数据类型 字符类型字符类型是用于存储字符型数据的。该数据类型字符类型是用于存储字符型数据的。该数据类型可以使用可以使用ASCII编码或编码

7、或Unicode编码。编码。ASCII编码要求用编码要求用8个二进制位来表示字母的范围。具体个二进制位来表示字母的范围。具体分为分为char、varchar、text等等3种,其中种,其中char为固定长度。为固定长度。Unicode标准使用标准使用2个字节来表示每个字符。在个字节来表示每个字符。在 Unicode标准中,包括了以各种字符集定义的全部字符。标准中,包括了以各种字符集定义的全部字符。在在SQL server 2005中,中,Unicode数据以数据以 nchar、nvarchar 和和 ntext 数据类型存储。定义一个字符数据类型存储。定义一个字符数据类型时,指定该列允许存储的

8、最大字节数。数据类型时,指定该列允许存储的最大字节数。字符类型常量应该用单引号括起来。字符类型常量应该用单引号括起来。下表列出了下表列出了SQL Server支持的字符数据类型。支持的字符数据类型。数据类型数据类型字节数字节数字符数字符数作用作用char(n)18000最多最多8 000个字符个字符固定宽度的固定宽度的ASCII数据类型数据类型varchar(n)18000最多最多8 000个字符个字符可变宽度的可变宽度的ASCII数据类型数据类型varchar(max)最大最大2 G最多最多1 073 741 824个字符个字符可变宽度的可变宽度的ASCII数据类型数据类型text最大最大2

9、 G最多最多1 073 741 824个字符个字符可变宽度的可变宽度的ASCII数据类型数据类型nchar(n)28000最多最多4 000个字符个字符固定宽度的固定宽度的Unicode数据类型数据类型nvarchar(n)28000最多最多4 000个字符个字符可变宽度的可变宽度的Unicode数据类型数据类型nvarchar(max)最大最大2 G最多最多536 870 912个字符个字符固定宽度的固定宽度的Unicode数据类型数据类型ntext最大最大2 G最多最多536 870 912个字符个字符固定宽度的固定宽度的Unicode数据类型数据类型SQL Server 2005的数据类

10、型日期时间类型日期时间类型数据,可具体分为日期时间类型数据,可具体分为datetime与与smalldatetime两种类型。两种类型。datetime和和smalldatetime数据类型在计算机内部是作为整数数据类型在计算机内部是作为整数存储的。存储的。datetime类型存储为类型存储为1对对4字节整数,前字节整数,前4字节存字节存储日期值,后储日期值,后4字节存储时间值。它们一起表示自字节存储时间值。它们一起表示自1753年年1月月1日午夜日午夜12点钟经过的毫秒数。点钟经过的毫秒数。smalldatetime类型存储为一对类型存储为一对2字节整数,前字节整数,前2字节存储日期值,后字

11、节存储日期值,后2字节存储时间值,它们一起字节存储时间值,它们一起表示自表示自1900年年1月月1日午夜日午夜12点钟经过的分钟数。点钟经过的分钟数。SQL Server 2005的数据类型日期时间类型日期时间数据类型由有效的日期和时间组成。如日期时间数据类型由有效的日期和时间组成。如有下列日期和时间数据有下列日期和时间数据“12/05/98 12:26:00:00:00 PM”和和“2:38:29:15:01 AM 6/15/98”。前一个数据是日期在前,时间在后。前一个数据是日期在前,时间在后。SQL Server中常用的日期和时间表示格式如下:中常用的日期和时间表示格式如下:分隔符可用分

12、隔符可用/、-或或.,例如,例如4/15/2005、4-15-05或或4.15.2005;字母日期格式:字母日期格式:April 15,2005;不用分隔符:不用分隔符:20050501;时时:分分:秒秒:毫秒:毫秒:08:05:25:28时时:分分 AM|PM:05:08AM、08:05PM日期类型字节数取值范围datetime8从1753-1-1到9999-12-31,精度为3.33毫秒smalldatetime4从1900-1-1到2079-12-31,精度为1分钟日期时间类型SQL Server 2005的数据类型货币类型货币数据类型可用于存储精确到小数点后货币数据类型可用于存储精确到

13、小数点后4个小数个小数位的货币值。位的货币值。货币数据类型的特点是小数点后存储货币数据类型的特点是小数点后存储4位小数,所位小数,所以在金融应用程序中很少使用这种数据类型。通常以在金融应用程序中很少使用这种数据类型。通常使用使用decimal数据类型代替货币数据类型,因为使用数据类型代替货币数据类型,因为使用decimal数据类型可以更灵活地指定小数点后多位数。数据类型可以更灵活地指定小数点后多位数。货币类型常量应以货币单位符号做前缀,默认货币类型常量应以货币单位符号做前缀,默认“¥”数据类型 字节数 取值范围money8-922 337 203 685 477.5808922 337 203

14、 685 477.5807smallmoney4-214 748.3648214 748.3647SQL Server 2005的数据类型二进制数据类型SQL Server 2005提供了提供了3种二进制数据类型,允种二进制数据类型,允许在一个表中存储各种数量的二进制数据。许在一个表中存储各种数量的二进制数据。数据类型数据类型字节数字节数作用作用binary(n)18 000 存储固定大小的二进制数据存储固定大小的二进制数据varbinary(n)18 000 存储可变大小的二进制数据存储可变大小的二进制数据varbinary(max)最多最多2 G存储可变大小的二进制数据存储可变大小的二进制

15、数据image最多最多2 G存储可变大小的二进制数据存储可变大小的二进制数据SQL Server 2005的数据类型二进制数据类型二进制数据类型用于存储二进制数据类型用于存储SQL Server中的文件,中的文件,如如Word、Excel、PDF、Visio以及图像等文件。以及图像等文件。image数据类型除了可以存储图像文件以外,也数据类型除了可以存储图像文件以外,也可以存储其他二进制文件。可以存储其他二进制文件。varbinary(max)数据数据类型是类型是SQL Server 2005新增的一种数据类型,新增的一种数据类型,它可以存储与它可以存储与image数据类型相同大小的数据,数据

16、类型相同大小的数据,并且所有能够在并且所有能够在binary/varbinary数据类型上执数据类型上执行的操作和函数都可以在行的操作和函数都可以在varbinary(max)数据类数据类型上使用,这是型上使用,这是image数据类型不能做到的。数据类型不能做到的。二进制类型常量应以二进制类型常量应以0 x作前缀。作前缀。创建表创建表在数据库中,表是由数据按一定的顺序和格式构在数据库中,表是由数据按一定的顺序和格式构成的数据集合,是数据库的主要对象。每一行代成的数据集合,是数据库的主要对象。每一行代表一条记录,每一列代表记录的一个字段。表一条记录,每一列代表记录的一个字段。没有记录的表称为空表

17、。没有记录的表称为空表。在在 SQL Server 2005 中,每个数据库最多可包含中,每个数据库最多可包含 20 亿个表,每个表可包含亿个表,每个表可包含 1,024 个字段。每个表个字段。每个表通常都有一个主关键字(又称为主码),用于唯通常都有一个主关键字(又称为主码),用于唯一地确定一条记录。在同一个表中不允许有相同一地确定一条记录。在同一个表中不允许有相同名称的字段。名称的字段。创建表创建表对于具体的某一个表,在创建之前,需要确定表对于具体的某一个表,在创建之前,需要确定表的下列特征:的下列特征:表要包含的数据的类型;表要包含的数据的类型;表中的列数,每一列中数据的类型和长度(如果必

18、要);表中的列数,每一列中数据的类型和长度(如果必要);哪些列允许空值;哪些列允许空值;是否要使用以及何处使用约束、默认设置和规则;是否要使用以及何处使用约束、默认设置和规则;所需索引的类型,哪里需要索引,哪些列是主键,哪些所需索引的类型,哪里需要索引,哪些列是主键,哪些是外键。是外键。创建表有两种方法:一种是在创建表有两种方法:一种是在SQL Server Management Studio中创建表,另一种是利用中创建表,另一种是利用Transact-SQL语句创建表。语句创建表。创建表利用SQL Server Management Studio创建表以下表所示的学生信息表结构为例,说明如何

19、利以下表所示的学生信息表结构为例,说明如何利用用SSMS在数据库在数据库TEACHINGDB中创建表。中创建表。列名数据类型长度是否为空说明学号char10否主码姓名char8否性别char2否出生日期datetime是专业varchar30是电话char15是电子邮箱varchar30是创建表利用SQL Server Management Studio创建表(1)启动启动SQL Server Management Studio,连接到服务,连接到服务器。在器。在“对象资源管理器对象资源管理器”中,展开要新建表的数据库中,展开要新建表的数据库TEACHINGDB。(2)右击右击“表表”项,在快

20、捷菜单里选择项,在快捷菜单里选择“新建表新建表”命令。命令。创建表利用SQL Server Management Studio创建表(3)弹出如图弹出如图5.1所示的所示的“表设计器表设计器”窗口。在其上半部分窗口。在其上半部分对每一列依次输入列名、数据类型对每一列依次输入列名、数据类型(包括列长包括列长)及允许空否及允许空否等基本属性,在表设计器窗口下半部分的列属性,指定列等基本属性,在表设计器窗口下半部分的列属性,指定列的详细属性。的详细属性。(4)选中要设置为主键的列选中要设置为主键的列(如学号如学号),右击。在弹出的快捷,右击。在弹出的快捷菜单中选择菜单中选择“设置主键设置主键”命令,

21、或单击表设计工具栏上的命令,或单击表设计工具栏上的“设置主键设置主键”按钮按钮 ,或执行,或执行“表设计器表设计器”菜单下的菜单下的“设置主键设置主键”命令,将其设置为主键。命令,将其设置为主键。(5)定义好表中的所有列后,单击保存按钮或定义好表中的所有列后,单击保存按钮或“文件文件”菜单菜单中的中的“保存表名保存表名”命令,在弹出的命令,在弹出的“选择名称选择名称”对话框中,对话框中,为该表键入一个名称,单击为该表键入一个名称,单击“确定确定”按钮。按钮。图5.1 表设计器创建表利用Transact-SQL语句创建数据表CREATE TABLE的语法格式如下:的语法格式如下:CREATE T

22、ABLE database_name.owner .|owner.table_name(|column_name AS computed_column_expression|,n)ON filegroup|“default”TEXTIMAGE_ON filegroup|“default”创建表利用Transact-SQL语句创建数据表参数说明:参数说明:database_name:用于指定所创建表的数据库名称。:用于指定所创建表的数据库名称。database_name 必须是现有数据库的名称。如果不指定数据必须是现有数据库的名称。如果不指定数据库,库,database_name 默认为当前数据

23、库。默认为当前数据库。owner:用于指定新建表的所有者的用户名,:用于指定新建表的所有者的用户名,owner 必须是必须是 database_name 所指定的数据库中的现有用户名,所指定的数据库中的现有用户名,owner 默默认为当前注册用户名。认为当前注册用户名。table_name:用于指定新建表的名称。表名必须符合标识符:用于指定新建表的名称。表名必须符合标识符规则。表名最多不能超过规则。表名最多不能超过 128 个字符。个字符。column_name:用于指定新建表的列名。:用于指定新建表的列名。computed_column_expression:用于指定计算列的列值表:用于指定

24、计算列的列值表达式。表达式可以是列名、常量、变量、函数等或它们的组合,达式。表达式可以是列名、常量、变量、函数等或它们的组合,所谓计算列是一个虚拟的列它的值并不实际存储在表中而是通所谓计算列是一个虚拟的列它的值并不实际存储在表中而是通过对同一个表中其它列进行某种计算而得到的结果。过对同一个表中其它列进行某种计算而得到的结果。创建表利用Transact-SQL语句创建数据表ON filegroup|“default”:用于指定存储表的文件组:用于指定存储表的文件组名。如果指定名。如果指定 filegroup,则表将存储在指定的文件组,则表将存储在指定的文件组中。数据库中必须存在该文件组。如果使用

25、了中。数据库中必须存在该文件组。如果使用了DEFAULT选项,或者省略了选项,或者省略了ON子句,则新建的表会存子句,则新建的表会存储在默认的文件组中。储在默认的文件组中。TEXTIMAGE_ON:用于指定:用于指定text、ntext和和image列的列的数据存储的文件组。如果表中没有数据存储的文件组。如果表中没有text、ntext或或image列,则不能使用列,则不能使用TEXTIMAGE_ON。如果没有指定。如果没有指定TEXTIMAGE_ON子句,则子句,则text、ntext和和image列的数列的数据将与数据表存储在相同的文件组中。据将与数据表存储在相同的文件组中。创建表利用Tr

26、ansact-SQL语句创建数据表包含的内容如下:包含的内容如下::=column_name data_type CONSTRAINT constraint_name NULL|NOT NULL PRIMARY KEY|UNIQUE FOREIGN KEY(column)REFERENCES ref_table(ref_column)DEFAULT constant_expression|IDENTITY (seed,increment)CHECK(check_expression)n创建表利用Transact-SQL语句创建数据表包含的内容如下:包含的内容如下::=CONSTRAINT co

27、nstraint_name PRIMARY KEY|UNIQUE (column ASC|DESC ,.n )|FOREIGN KEY (column)REFERENCES ref_table(ref_column),n 注意:使用Transact-SQL语句创建表时,如果不在语句中指明owner,应先打开其所在的数据库。打开方式如下:USE 数据库名称创建表利用Transact-SQL语句创建数据表【例【例5-2】在】在TEACHINGDB数据库中建立数据库中建立“课程课程”表,表结构如下表所示。表,表结构如下表所示。列名数据类型长度是否为空说明课号char8否主码课程名varchar30否

28、类别char8否先行课char8是学时tinyint是创建表利用Transact-SQL语句创建数据表CREATE TABLE TEACHINGDB.DBO.课程课程(课号课号 CHAR(8)CONSTRAINT C1 PRIMARY KEY,课程名课程名 VARCHAR(30)CONSTRAINT C2 NOT NULL,类别类别 CHAR(8)NOT NULL,先行课先行课 CHAR(8)CONSTRAINT C3 REFERENCES 课程课程(课号课号),学时学时 TINYINT CONSTRAINT C4 check(学时学时=100)GO说明说明:“TEACHINGDB.DBO.课

29、程课程”可以写成:可以写成:TEACHINGDB.课程。课程。如果表名前不加数据库名限定,则需要用如果表名前不加数据库名限定,则需要用USE将数据库将数据库TEACHINGDB指定为当前数据库。如下所示:指定为当前数据库。如下所示:创建表利用Transact-SQL语句创建数据表USE TEACHINGDBGOCREATE TABLE 课程课程(课号课号 CHAR(8)PRIMARY KEY,课程名课程名 VARCHAR(30)NOT NULL,类别类别 CHAR(8)NOT NULL,先行课先行课 CHAR(8)REFERENCES 课程课程(课号课号),学时学时 TINYINT check

30、(学时学时=100)GO修改表修改表当数据表的结构创建完成后,用户还可以根据实当数据表的结构创建完成后,用户还可以根据实际需要随时更改表结构。用户可以增加、删除和际需要随时更改表结构。用户可以增加、删除和修改字段,更改数据表名称等。修改字段,更改数据表名称等。修改表结构有两种方法:一是在修改表结构有两种方法:一是在SQL Server Management Studio中进行修改,另一种是利用中进行修改,另一种是利用T-SQL语句进行表结构修改。语句进行表结构修改。修改表在SQL Server Management Studio中修改表(1)启动启动SQL Server Management

31、Studio后,在对象资后,在对象资源管理器中展开其中的树形目录,找到要修改结构的数源管理器中展开其中的树形目录,找到要修改结构的数据表。据表。(2)若要修改数据表名,可右击数据表,在弹出的快捷菜单若要修改数据表名,可右击数据表,在弹出的快捷菜单中选择中选择“重命名重命名”命令。如图命令。如图5.2所示。所示。(3)若要对表中的列进行插入、删除等操作,右击数据表的若要对表中的列进行插入、删除等操作,右击数据表的快捷菜单中选择快捷菜单中选择“修改修改”命令,打开表设计器窗口。命令,打开表设计器窗口。(4)用表设计器向表中添加列、修改列的数据类型、列的数用表设计器向表中添加列、修改列的数据类型、列

32、的数据长度、列的精度、列的小数位数、列是否可为空。与据长度、列的精度、列的小数位数、列是否可为空。与创建表时相同。创建表时相同。(5)若要修改数据表属性,可以执行若要修改数据表属性,可以执行“视图视图”菜单下的菜单下的“属属性窗口性窗口”命令,在打开的属性窗口中进行修改。命令,在打开的属性窗口中进行修改。图5.2 右击数据表快捷菜单图5.3 修改表结构和属性修改表使用T-SQL语句修改表利用利用Transact-SQL语句语句ALTER TABLE的命令,的命令,可以更改、添加或删除列和约束,从而修改表的可以更改、添加或删除列和约束,从而修改表的定义。语法格式如下:定义。语法格式如下:ALTE

33、R TABLE table_name ALTER COLUMN column_name -修改已有列的属性 new_data_type (precision ,scale )NULL|NOT NULL|ADD-增加新列|,n|DROP CONSTRAINT constraint_name -删除约束|COLUMN column_name -删除列 ,n修改表使用T-SQL语句修改表【例【例5-4】修改学生表的】修改学生表的“姓名姓名”字段,使该字段的数据类字段,使该字段的数据类型为型为char(10),允许为空。,允许为空。ALTER TABLE 学生学生ALTER COLUMN 姓名姓名 C

34、HAR(10)NULLGO【例【例5-5】给学生表增加年龄列,其为一计算列,】给学生表增加年龄列,其为一计算列,值为当前年份减去出生日期年份。值为当前年份减去出生日期年份。ALTER TABLE 学生学生ADD 年龄年龄 AS YEAR(GETDATE()-YEAR(出生日期出生日期)GO 【例【例5-6】删除课程表中学时的】删除课程表中学时的CHECK约束。约束。ALTER TABLE 课程课程 DROP chk_hours修改表使用T-SQL语句修改表【例【例5-7】给课程表中的学时添加】给课程表中的学时添加CHECK约束。约束。ALTER TABLE 课程课程ADD CONSTRAINT

35、 chk_hours CHECK(学时学时 BETWEEN 0 AND 100)数据管理数据管理表的基本结构建好后,表内没有数据。可以在表的基本结构建好后,表内没有数据。可以在 SQL Server Management Studio中给表输入数中给表输入数据、修改和删除数据,也可以利用据、修改和删除数据,也可以利用T-SQL语句完语句完成相应功能。成相应功能。数据管理在SQL Server Management Studio中管理数据(1)在在“对象资源管理器对象资源管理器”窗口中,展开数据库和表,右窗口中,展开数据库和表,右键单击表名,在弹出的快捷菜单中选择键单击表名,在弹出的快捷菜单中选

36、择“打开表打开表”命令,命令,打开如图打开如图5.4所示的数据表窗口。所示的数据表窗口。(2)在数据表窗口,依次按照表结构的要求为每一列输入在数据表窗口,依次按照表结构的要求为每一列输入数据。每输入完一行,系统会自动进入下一行的输入状数据。每输入完一行,系统会自动进入下一行的输入状态。在输入过程中,要针对不同的数据类型输入合法的态。在输入过程中,要针对不同的数据类型输入合法的数据。如果输入不合规则的数据,系统不接受。需要重数据。如果输入不合规则的数据,系统不接受。需要重新输入该列数据。新输入该列数据。(3)输入数据完毕,单击输入数据完毕,单击“关闭关闭”按钮,如果是第一次输按钮,如果是第一次输

37、入数据,系统提示保存数据。入数据,系统提示保存数据。(4)修改数据在窗口中直接修改。修改数据在窗口中直接修改。(5)若删除一行,右击删除行左侧灰色按钮,在快捷菜单若删除一行,右击删除行左侧灰色按钮,在快捷菜单中选中选“删除删除”命令。命令。(6)重复上述过程完成数据输入、修改、删除等管理。重复上述过程完成数据输入、修改、删除等管理。图5.4数据输入窗口数据管理利用Transact-SQL命令插入数据 T-SQL语句语句INSERT用于向表中插入数据。语法格式如下:用于向表中插入数据。语法格式如下:INSERT INTO 表名(列名列表)VALUES(值列表)语法注释:语法注释:INTO:一个可

38、选的关键字,可以将它用在:一个可选的关键字,可以将它用在INSERT 和目标表和目标表之间。之间。如果如果“值列表值列表”中给出了表中所有列的值且顺序与表中列的顺中给出了表中所有列的值且顺序与表中列的顺序相同,则序相同,则“列名列表列名列表”可以省略。可以省略。若只需要插入某条记录的部分列值,则必须在若只需要插入某条记录的部分列值,则必须在“列名列表列名列表”中中给出列名,且给出列名,且“列名列表列名列表”中的每个列都必须在中的每个列都必须在“值列表值列表”中中给出值。没有在给出值。没有在“列名列表列名列表”中出现的列取默认值中出现的列取默认值(如果为列如果为列定义了定义了DEFAULT)或或

39、NULL,若该列定义为,若该列定义为NOT NULL则出错。则出错。“值列表值列表”中的值可以是表达式。中的值可以是表达式。具有缺省值的列,可以使用具有缺省值的列,可以使用DEFAULT(缺省)关键字来代替(缺省)关键字来代替插入的数值。插入的数值。数据管理利用Transact-SQL命令插入数据【例【例5-8】向学生表中插入一条记录】向学生表中插入一条记录(0920910201,曹洋宇曹洋宇,男男,19900820,电子电子INSERT 学生学生(学号学号,姓名姓名,性别性别,出生日期出生日期,专业专业,电话电话,电子邮箱电子邮箱)VALUES(0920910201,曹洋宇曹洋宇,男男,19

40、900820,电子电子或或INSERT 学生学生 VALUES(0920910201,曹洋宇曹洋宇,男男,19900820,电子电子【例【例5-9】向学生表中插入一条记录】向学生表中插入一条记录(0820910204,李李显显,男男,075185345428),此记录的其他列值为,此记录的其他列值为NULL。INSERT 学生学生(学号学号,姓名姓名,性别性别,电话电话)VALUES(0820910204,李显李显,男男,075185345428);数据管理利用Transact-SQL命令插入数据INSERT语句的第二种语法格式为:语句的第二种语法格式为:INSERT INTO 目标表名目标表

41、名(列名列表列名列表1)SELECT FROM WHERE 说明:该语句将说明:该语句将SELECT查询的结果插入到目标表中。查询的结果插入到目标表中。其中,其中,“列名列表列名列表1”中的列名与中的列名与“列名列表列名列表2”中的列名中的列名必须数据类型和个数一一对应,如果必须数据类型和个数一一对应,如果“列名列表列名列表2”包含包含了了“列名列表列名列表1”中的所有列的数据,则中的所有列的数据,则“列名列表列名列表1”可可以省略。以省略。【例【例5-10】新建一个】新建一个“学习成绩学习成绩”表,并将所有成绩大表,并将所有成绩大于等于于等于80分的记录插入分的记录插入“学习成绩学习成绩”表

42、中。表中。数据管理利用Transact-SQL命令插入数据【例【例5-10】新建一个】新建一个“学习成绩学习成绩”表,并将所有表,并将所有成绩大于等于成绩大于等于80分的记录插入分的记录插入“学习成绩学习成绩”表中。表中。CREATE TABLE 学习成绩学习成绩(学号学号 CHAR(10),姓名姓名 CHAR(10),课程名课程名 VARCHAR(30),成绩成绩 tinyint)INSERT INTO 学习成绩学习成绩(学号学号,姓名姓名,课程名课程名,成绩成绩)SELECT 学生学生.学号学号,姓名姓名,课程名课程名,成绩成绩FROM 学生学生,课程课程,选课选课WHERE 学生学生.学

43、号学号=选课选课.学号学号 AND 课程课程.课号课号=选课选课.课号课号AND 成绩成绩=80数据管理利用Transact-SQL命令修改数据T-SQL中提供中提供UPDATE语句修改表中数据。语句修改表中数据。UPDATE语句的语法格式如下:语句的语法格式如下:UPDATE SET ,.n where 说明:说明:(1)如果没有如果没有WHERE子句,则子句,则UPDATE将会修改表中的每将会修改表中的每一行数据。一行数据。(2)一次可以修改多个列的值。一次可以修改多个列的值。【例【例5-11】将】将“选课选课”表中课程号表中课程号“10910143”的成的成绩加上绩加上5分。分。UPDA

44、TE 选课选课 SET 成绩成绩=成绩成绩+5 WHERE 课号课号=10910143数据管理利用Transact-SQL命令修改数据【例【例5-12】将】将“学生学生”表中学号为表中学号为“0810910216”的的学生的姓名更改为学生的姓名更改为“史鹏飞史鹏飞”,电话修改为,电话修改为“。UPDATE 学生学生 SET 姓名姓名=史鹏飞史鹏飞,电话学号电话学号=0810910216【例【例5-13】将】将“课程课程”表中所有课程的表中所有课程的“学时学时”都增都增加加10。UPDATE 课程课程 SET 学时学时=学时学时+10数据管理利用Transact-SQL命令修改数据UPDATE语

45、句的另一种语法格式为:语句的另一种语法格式为:UPDATE SET=,nFROM WHERE 说明:与前面格式不同的是,更新条件和表达式中可以说明:与前面格式不同的是,更新条件和表达式中可以包含源表的列,实现用源表的数据修改目标表的数据,包含源表的列,实现用源表的数据修改目标表的数据,并可以用源表的数据作为修改目标表的条件。并可以用源表的数据作为修改目标表的条件。【例【例5-14】将】将“选课选课”表中所有选修表中所有选修“数据库数据库”课程的成绩加上课程的成绩加上5分。分。UPDATE 选课选课 SET 成绩成绩=成绩成绩+5FROM 课程课程 WHERE 选课选课.课号课号=课程课程.课号

46、课号 AND 课程名课程名=数据库数据库数据管理利用Transact-SQL命令删除数据T-SQL提供提供DELETE语句删除表中数据,语法格语句删除表中数据,语法格式如下:式如下:DELETE FROM WHERE 说明:该语句删除表中满足条件的记录。如果省略条件,说明:该语句删除表中满足条件的记录。如果省略条件,则删除所有记录。则删除所有记录。【例【例5-15】将】将“学生学生”表中学号为表中学号为“0820910204”的学生记录删除。的学生记录删除。DELETE 学生学生 WHERE 学号学号=0820910204数据管理利用Transact-SQL命令删除数据T-SQL支持利用支持利

47、用TRUNCATE TABLE语句清空表语句清空表中数据。语法格式如下:中数据。语法格式如下:TRUNCATE TABLE 说明:说明:TRUNCATE TABLE与不含有与不含有WHERE子句的子句的DELETE语句在功能上相同。但是,语句在功能上相同。但是,TRUNCATE TABLE速度更快,并且使用更少的系统资源和事务日志速度更快,并且使用更少的系统资源和事务日志资源。资源。【例【例5-16】清空】清空“选课选课”表中的数据。表中的数据。TRUNCATE TABLE 选课删除表删除表若不在需要使用某个数据表时,可以将其从数据若不在需要使用某个数据表时,可以将其从数据库中删除。库中删除。

48、删除表就是将表中数据和表的结构从数据库中永删除表就是将表中数据和表的结构从数据库中永久性地删除。久性地删除。表的删除不可恢复。表的删除不可恢复。删除表有两种方法:一是在删除表有两种方法:一是在SQL Server Management Studio中删除表,另一种是利用中删除表,另一种是利用T-SQL语句删除表。语句删除表。删除表在SQL Server Management Studio中删除表(1)启动启动SQL Server Management Studio,连接到数据,连接到数据库实例。库实例。(2)在对象资源管理器中,展开树形目录,选取要删除的数在对象资源管理器中,展开树形目录,选取

49、要删除的数据表。右击该表名,在弹出的快捷菜单中选择据表。右击该表名,在弹出的快捷菜单中选择“删除删除”命令。在弹出的命令。在弹出的“删除对象删除对象”对话框中,会出现要删除对话框中,会出现要删除的表,可单击的表,可单击“确定确定”按钮。按钮。(3)如果出现如果出现“删除失败删除失败”的消息,那表示目前不能删除该的消息,那表示目前不能删除该数据表,原因可能是该数据表正在被使用,或与其他表数据表,原因可能是该数据表正在被使用,或与其他表存在约束关系。此时可在存在约束关系。此时可在“删除对象删除对象”对话框中,单击对话框中,单击“显示依赖关系显示依赖关系”按钮,在弹出的按钮,在弹出的“依赖关系依赖关

50、系”对话框对话框中,可看到该表的依赖关系。若存在依赖关系,则数据中,可看到该表的依赖关系。若存在依赖关系,则数据表不能被删除,除非先删除依赖于该数据表的关系。表不能被删除,除非先删除依赖于该数据表的关系。删除表利用T-SQL语句删除表利用利用Transact-SQL语句语句DROP TABLE就可删除就可删除数据表定义及表的所有数据、索引、触发器、约数据表定义及表的所有数据、索引、触发器、约束和指定的权限。束和指定的权限。语法格式如下:语法格式如下:DROP TABLE database_name.owner.|owner.table_name ,.n ;需要注意的是,不能使用需要注意的是,不

51、能使用DROP TABLE删除被删除被FOREIGN KEY约束引用的表。必须先删除引用约束引用的表。必须先删除引用FOREIGN KEY约束或引用表。如果要在同一个约束或引用表。如果要在同一个DROP TABLE语句中删除引用表以及包含主键的语句中删除引用表以及包含主键的表,则必须先列出引用表。表,则必须先列出引用表。删除表利用T-SQL语句删除表可以在任何数据库中删除多个表。如果一个要删可以在任何数据库中删除多个表。如果一个要删除的表引用了另一个也要删除的表的主键,则必除的表引用了另一个也要删除的表的主键,则必须先列出包含该外键的引用表,然后再列出包含须先列出包含该外键的引用表,然后再列出

52、包含要引用的主键的表。要引用的主键的表。【例【例5-17】删除】删除TEACHINGDB数据库中的数据库中的“课程课程”和和“选课选课”表。表。DROP TABLE 课程课程,选课选课 -错误错误DROP TABLE 选课选课,课程课程 -正确正确数据的完整性数据完整性类型数据库的完整性是指数据的正确性和相容性,是数据库的完整性是指数据的正确性和相容性,是为防止数据库中存在不符合语义规定的数据,防为防止数据库中存在不符合语义规定的数据,防止因错误信息的输入、输出而造成无效的操作或止因错误信息的输入、输出而造成无效的操作或错误信息而提出的,数据完整性在数据库管理系错误信息而提出的,数据完整性在数

53、据库管理系统中是十分重要的。统中是十分重要的。根据数据完整性所作用的数据库对象和范围不同,根据数据完整性所作用的数据库对象和范围不同,可以将其分为以下几类:可以将其分为以下几类:域域(Domain)完整性完整性 域就是指表中的列,域完整性要求列的数值具有正确的类域就是指表中的列,域完整性要求列的数值具有正确的类型、格式和有效值范围,并确定是否允许有空值。型、格式和有效值范围,并确定是否允许有空值。域完整性的常见实现方法有默认值域完整性的常见实现方法有默认值(DEFAULT)、检查、检查(CHECK)、外键、外键(FOREIGN KEY)、数据类型、数据类型(Data Type)等约束和默认等约

54、束和默认(Default)、规则、规则(Rule)等数据库对象。等数据库对象。数据的完整性数据完整性类型实体实体(Entity)完整性完整性 实体对应的是行,实体完整性要求表中的每一行在表中是实体对应的是行,实体完整性要求表中的每一行在表中是唯一的,表中不能有重复的行存在。唯一的,表中不能有重复的行存在。实体完整性的实现方法有主键约束实体完整性的实现方法有主键约束(PRIMARY KEY)、唯、唯一性约束一性约束(UNIQUE)、唯一索引、唯一索引(UNIQUE INDEX)和标识和标识列列(IDENTITY)。引用完整性引用完整性 引用完整性也称为参照完整性。引用完整性也称为参照完整性。引用

55、完整性可以保证两个引用表间的数据的一致性,即保引用完整性可以保证两个引用表间的数据的一致性,即保证两个表的主键与外键之间定义的数据完整性。证两个表的主键与外键之间定义的数据完整性。实现引用完整性的实现方法有外键约束实现引用完整性的实现方法有外键约束(FOREIGN KEY)、触发器触发器(TRIGGER)和存储过程和存储过程(PROCEDURE)。数据的完整性数据完整性类型用户定义完整性用户定义完整性 是用户根据实际应用中的需求而自行定义的数据完整性,是用户根据实际应用中的需求而自行定义的数据完整性,不属于上面三种完整性的范畴。不属于上面三种完整性的范畴。用户定义完整性的实现机制有规则用户定义

56、完整性的实现机制有规则(RULE)、触发器、触发器(TRIGGER)和存储过程和存储过程(PROCEDURE)及创建数据表时及创建数据表时的所有约束的所有约束(CONSTRAINT)。数据的完整性约束约束约束(Constraint)是定义表中列、行及表间允许值是定义表中列、行及表间允许值的规则,是强制实施完整性的标准机制。的规则,是强制实施完整性的标准机制。在在SQL Server 2005中,有多种约束,可按不同中,有多种约束,可按不同方式进行分类。方式进行分类。按约束的应用范围不同,约束可分为列级约束和表级约按约束的应用范围不同,约束可分为列级约束和表级约束。列级约束是数据表中列定义的一部

57、分,只能作用于束。列级约束是数据表中列定义的一部分,只能作用于表中的一列。表级约束独立于列定义之外,作用于表中表中的一列。表级约束独立于列定义之外,作用于表中 的多列。当一个约束中必须包含多个列时,必须使用表的多列。当一个约束中必须包含多个列时,必须使用表级约束。级约束。按约束的作用不同,约束可分为不允许空约束按约束的作用不同,约束可分为不允许空约束(NOT NULL)、主键约束、主键约束(PRIMARY KEY)、唯一性约束、唯一性约束(UNIQUE)、检查约束、检查约束(CHECK)、默认值约束、默认值约束(DEFAULT)和外键约束和外键约束(FOREIGN KEY)。数据的完整性约束除

58、不允许空约束外,每个约束都有一个名称,称除不允许空约束外,每个约束都有一个名称,称之为约束名。对于约束名的命名推荐为之为约束名。对于约束名的命名推荐为type_ table_column,其中,其中type表示约束的类型,表示约束的类型,table为表名,为表名,column为列名,例如为列名,例如CHK_学生学生_性别。性别。在在SQL Server Management Studio中创建约束中创建约束创建创建NOT NULL约束约束 在在SQL Server Management Studio的的“对象资源管理器对象资源管理器”窗口中右击需要创建约束的表,在快捷菜单中执行窗口中右击需要创

59、建约束的表,在快捷菜单中执行“修改修改”命令。在弹出窗体中,对表中的列的命令。在弹出窗体中,对表中的列的“允许空允许空”项进行选项进行选择即可。设置完成后单击择即可。设置完成后单击 完成设置。完成设置。数据的完整性约束创建创建PRIMARY KEY 约束约束 打开打开SQL Server Management Studio,进入新建表或修,进入新建表或修改表状态。改表状态。右键单击要设置右键单击要设置PRIMARY KEY约束的列,在弹出的快捷约束的列,在弹出的快捷菜单中选择菜单中选择“设置主键设置主键”命令命令(也可以选择工具栏上的也可以选择工具栏上的 按钮按钮),创建主键约束。,创建主键约

60、束。若要设置多列的组合的主键,可以按若要设置多列的组合的主键,可以按CTRL键再单击各列键再单击各列同时选中主键中的列,然后右击选择同时选中主键中的列,然后右击选择”设置主键设置主键“命令。命令。单击单击 按钮完成主键的创建。如果要删除主键,右键单按钮完成主键的创建。如果要删除主键,右键单击已创建主键的列,在弹出的快捷菜单中选择击已创建主键的列,在弹出的快捷菜单中选择“移除主键移除主键”命令。命令。数据的完整性约束创建创建FOREIGN KEY 约束约束 打开打开SQL Server Management Studio,进入新建表或修,进入新建表或修改表状态。改表状态。右键单击表的编辑区域,在

61、弹出的快捷菜单中选择右键单击表的编辑区域,在弹出的快捷菜单中选择“关系关系”命令,或单击工具栏上的关系按钮命令,或单击工具栏上的关系按钮 。在弹出的在弹出的“外键关系外键关系”对话框中,单击对话框中,单击“添加添加”按钮,然按钮,然后选择后选择“表和列规范表和列规范”后的后的 按钮,如图所示。按钮,如图所示。在弹出的在弹出的“表和列表和列”对话框中,修改约束名,分别选择主对话框中,修改约束名,分别选择主键表和外键表及共有的列。键表和外键表及共有的列。单击单击“确定确定”按钮,外键约束创建完毕。按钮,外键约束创建完毕。数据的完整性约束创建创建UNIQUE约束约束 打开打开SQL Server M

62、anagement Studio,进入新建表或修,进入新建表或修改表状态。改表状态。右键单击表的编辑区域,在弹出的快捷菜单中选择右键单击表的编辑区域,在弹出的快捷菜单中选择“索引索引/键键”命令,或单击工具栏上的命令,或单击工具栏上的“管理索引和键管理索引和键”按钮按钮 。在弹出的在弹出的“索引索引/键键”对话框中,单击对话框中,单击“添加添加”按钮,然按钮,然后在后在“常规常规”下的下的“列列”行右侧选择创建约束的列,在行右侧选择创建约束的列,在“标识标识”下的名称行右侧输入约束名,在下的名称行右侧输入约束名,在“常规常规”下的下的“是唯一的是唯一的”后的列表框中选择后的列表框中选择“是是”

63、,单击,单击“关闭关闭”按按钮即可。钮即可。数据的完整性约束创建创建CHECK约束约束 打开打开SQL Server Management Studio,进入新建表或修,进入新建表或修改表状态。改表状态。右键单击表的编辑区域,在弹出的快捷菜单中选择右键单击表的编辑区域,在弹出的快捷菜单中选择“CHECK 约束约束”命令,或单击工具栏上的命令,或单击工具栏上的“管理管理CHECK约束约束”按钮按钮 。在弹出的在弹出的“CHECK约束约束”对话框中,单击对话框中,单击“添加添加”按钮,按钮,然后在然后在“标识标识”下的名称行右侧修改约束名称。下的名称行右侧修改约束名称。单击单击“表达式表达式”行后

64、的按钮。在弹出的行后的按钮。在弹出的“CHECK约束表约束表达式达式”对话框中,输入约束表达式。对话框中,输入约束表达式。单击单击“确定确定”按钮,按钮,CHECK约束创建完毕。约束创建完毕。数据的完整性约束NOT NULL约束约束列的为空性决定表中的行是否可让该列包含空值。空值列的为空性决定表中的行是否可让该列包含空值。空值(NULL)不同于零不同于零(0)、空白或长度为零的字符串、空白或长度为零的字符串(如如“”“”)。NULL的意思是没有输入,出现的意思是没有输入,出现NULL通常表示值未知或通常表示值未知或未定义。未定义。NOT NULL约束说明列值不允许为约束说明列值不允许为NULL

65、。当插入或修。当插入或修改数据时,设置了改数据时,设置了NOT NULL约束的列的值不允许为空,约束的列的值不允许为空,必须存在具体的值。必须存在具体的值。可使用可使用Transact-SQL语句管理语句管理NOT NULL约束。在使约束。在使用用CREATE TABLE创建表和使用创建表和使用ALTER TABLE修改表修改表时,都可以创建时,都可以创建NOT NULL约束。约束。【例【例5-18】为学生表的性别字段指定】为学生表的性别字段指定NOT NULL约束。约束。ALTER TABLE 学生学生 ALTER COLUMN 性别性别 CHAR(2)NOT NULL数据的完整性约束PRI

66、MARY KEY约束约束(主键约束主键约束)PRIMARY KEY约束是在表中定义一个主键来唯一确定约束是在表中定义一个主键来唯一确定表中的每一行记录。主键可以定义在单列上,也可以定表中的每一行记录。主键可以定义在单列上,也可以定义在多列上。主键约束强制实施实体完整性约束。义在多列上。主键约束强制实施实体完整性约束。PRIMARY KEY约束具有以下特点:约束具有以下特点:每个表最多只能定义一个每个表最多只能定义一个PRIMARY KEY约束。约束。PRIMARY KEY约束所在列不允许输入重复值。如果主键约束所在列不允许输入重复值。如果主键约束由两个或两个以上的列组成,则该组合的取值不允许约束由两个或两个以上的列组成,则该组合的取值不允许重复。重复。PRIMARY KEY约束所在列不允许取空值。约束所在列不允许取空值。PRIMARY KEY约束在指定的列上创建了一个唯一性索引,约束在指定的列上创建了一个唯一性索引,该索引可以是聚集索引,也可以是非聚集索引。在默认的该索引可以是聚集索引,也可以是非聚集索引。在默认的情况下创建的是聚集索引。情况下创建的是聚集索引。数据的完整性约束定义定义

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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