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

下载本文档

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

文档简介

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

2、位数(仅适用于数值类型)。nSQL server 2005提供的数据类型可以归纳为:数提供的数据类型可以归纳为:数值类型、字符类型、日期时间类型、货币类型和值类型、字符类型、日期时间类型、货币类型和其他数据类型。其他数据类型。3.1.1 数值类型数值类型 1. 精确数值类型精确数值类型精确数值类型用来存储没有小数位的整精确数值类型用来存储没有小数位的整数或定点小数。使用任何算术运算符数或定点小数。使用任何算术运算符都可以操作这些数据类型中存储的数都可以操作这些数据类型中存储的数值,而不需要任何特殊处理。下表列值,而不需要任何特殊处理。下表列出了出了SQL Server支持的精确数值类型。支持的

3、精确数值类型。类别类别数据类型数据类型字 节字 节数数取值范围取值范围Integerbigint8- -2E632E63- -1int4- -2E312E31- -1smallint2- -32 76832 767tinyint10255Exact numricdecimal(p,s) 517- -10E38+110E38- -1numeric(p,s)517- -10E38+110E38- -13.1.1 数值类型数值类型 2. 近似数值类型近似数值类型n 近似数字数据类型可以存储十进制值,用于表示近似数字数据类型可以存储十进制值,用于表示浮点数据。此类型的数据不一定有精确的表示,浮点数据。

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

5、符型数据的。该数据类型可以使字符类型是用于存储字符型数据的。该数据类型可以使用用ASC编码或编码或Unicode编码。编码。nASC编码要求用编码要求用8个二进制位来表示字母的个二进制位来表示字母的范围。范围。nUnicode标准使用标准使用2个字节来表示每个字符。个字节来表示每个字符。在在 Unicode标准中,包括了以各种字符集定义标准中,包括了以各种字符集定义的全部字符。的全部字符。n在在SQL server 2005中,中,Unicode数据以数据以 nchar、nvarchar 和和 ntext 数据类型存储。定义一个字符数据类型时,指数据类型存储。定义一个字符数据类型时,指定该列允

6、许存储的最大字节数。定该列允许存储的最大字节数。n下表列出了下表列出了SQL Server支持的字符数据类型。支持的字符数据类型。 数据类型字节数字符数char(n)18 000最多8 000个字符varchar(n)18 000最多8 000个字符varchar(max)最大2 G最多1 073 741 824个字符text最大2 G最多1 073 741 824个字符nchar(n)28 000最多4 000个字符nvarchar(n)28 000最多4 000个字符nvarchar(max)最大2 G最多536 870 912个字符ntext最大2 G最多536 870 912个字符3.

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

8、分钟数。点钟经过的分钟数。n下表列出了下表列出了SQL Server2005支持的日期和时间数据支持的日期和时间数据类型。类型。日期类型日期类型字节数字节数取值范围取值范围datetime8从从1753-1-1到到9999-12-31,精度为,精度为3.33毫秒毫秒smalldatetime 4从从1900-1-1到到2079-12-31,精度为,精度为1分钟分钟3.1.4货币类型货币类型 n货币数据类型旨在存储精确到货币数据类型旨在存储精确到4个小数位个小数位的货币值。下表列出了的货币值。下表列出了SQL Server支持的支持的货币数据类型。货币数据类型。数据类型数据类型 字节数字节数 取

9、值范围取值范围money8 - -922 337 203 685 477.5808922 337 203 685 477.5807smallmoney4 - -214 748.3648214 748.36473.1.1 数值类型数值类型 1. 精确数值类型精确数值类型精确数值类型用来存储没有小数位的整精确数值类型用来存储没有小数位的整数或定点小数。使用任何算术运算符数或定点小数。使用任何算术运算符都可以操作这些数据类型中存储的数都可以操作这些数据类型中存储的数值,而不需要任何特殊处理。下表列值,而不需要任何特殊处理。下表列出了出了SQL Server支持的精确数值类型。支持的精确数值类型。类别

10、类别数据类型数据类型字 节字 节数数取值范围取值范围Integerbigint8- -2E632E63- -1int4- -2E312E31- -1smallint2- -32 76832 767tinyint10255Exact numricdecimal(p,s) 517- -10E38+110E38- -1numeric(p,s)517- -10E38+110E38- -13.1.1 数值类型数值类型 1. 精确数值类型精确数值类型精确数值类型用来存储没有小数位的整精确数值类型用来存储没有小数位的整数或定点小数。使用任何算术运算符数或定点小数。使用任何算术运算符都可以操作这些数据类型中存

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

12、二进制数据类型二进制数据类型 SQL Server 2005提供了提供了3种二进制数据类型,种二进制数据类型,允许在一个表中存储各种数量的二进制数允许在一个表中存储各种数量的二进制数据。下表列出了据。下表列出了SQL Server支持二进制数支持二进制数据类型。据类型。数据类型字节数binary(n)18 000 varbinary(n)18 000 varbinary(max)最多2 Gimage最多2 G3.1.5 其他数据类型其他数据类型 2. 特殊数据类型特殊数据类型 nSQL Server 2005还提供了还提供了7种特殊数据类型,包括种特殊数据类型,包括cursor、sql_var

13、iant、timestamp、table、uniqueidentifier与与xml。ntimestamp 用于表示用于表示SQL server 活动的先后顺序,以二活动的先后顺序,以二进投影的格式表示。进投影的格式表示。timestamp 数据与插入数据或者日数据与插入数据或者日期和时间没有关系。期和时间没有关系。nbit 由由 1 或者或者 0 组成,当表示真或者假、组成,当表示真或者假、on 或者或者 off 时,时,使用使用 bit 数据类型。数据类型。nuniqueidentifier 由由 16 字节的十六进制数字组成,表示字节的十六进制数字组成,表示一个全局唯一的。一个全局唯一的

14、。n当表的记录行要求唯一时,当表的记录行要求唯一时,GUID是非常有用。是非常有用。 具体作用参看表具体作用参看表3.73.1.5 其他数据类型其他数据类型 3. 自定义数据类型自定义数据类型 nSQL Server 2005允许用户根据自己的需要自定义允许用户根据自己的需要自定义数据类型(数据类型(UDT),并可以用此数据类型来声明),并可以用此数据类型来声明变量或列。变量或列。n自定义类型提供了一种可以将更能清楚地说明对自定义类型提供了一种可以将更能清楚地说明对象中值的类型的名称应用于数据类型的机制,这象中值的类型的名称应用于数据类型的机制,这使程序员或数据库管理员能够更容易地理解用该使程

15、序员或数据库管理员能够更容易地理解用该数据类型定义的对象的用途。数据类型定义的对象的用途。3.2.1表的类型表的类型 1. 按照表的用途分类按照表的用途分类(1)系统表:用于维护)系统表:用于维护SQL Server 2005服务器和数据库正服务器和数据库正常工作的只读数据表。系统表存在于各个数据库中,由常工作的只读数据表。系统表存在于各个数据库中,由DBMS系统自动维护。系统自动维护。(2)用户表:由用户自己创建的、用于各种数据库应用系统)用户表:由用户自己创建的、用于各种数据库应用系统开发的表。开发的表。(3)已分区表:已分区表是将数据水平划分为多个单元的表,)已分区表:已分区表是将数据水

16、平划分为多个单元的表,这些单元可以分布到数据库中的多个文件组中。在维护整这些单元可以分布到数据库中的多个文件组中。在维护整个集合的完整性时,使用分区可以快速而有效地访问或管个集合的完整性时,使用分区可以快速而有效地访问或管理数据子集,从而使大型表或索引更易于管理。理数据子集,从而使大型表或索引更易于管理。3.2.1表的类型表的类型 2. 按照表的存储时间分类按照表的存储时间分类(1)永久表:包括)永久表:包括SQL Server 2005的系统表和用户数据库的系统表和用户数据库中创建的数据表,该类表除非人工删除,否则一直存储在中创建的数据表,该类表除非人工删除,否则一直存储在介质中。介质中。(

17、2)临时表:临时表是临时使用的表结构。临时表分为全局)临时表:临时表是临时使用的表结构。临时表分为全局的临时表和局部临时表,并且可以由任何用户创建。所有的临时表和局部临时表,并且可以由任何用户创建。所有的临时表都是在的临时表都是在tempdb数据库中创建的。数据库中创建的。n如果服务器关闭,则所有临时表会被清空、关闭。如果服务器关闭,则所有临时表会被清空、关闭。n通过使用通过使用CREATE TABLE命令并在表名前添加一个字命令并在表名前添加一个字符符(#),可以创建局部临时表。,可以创建局部临时表。3.2.2 表的创建表的创建 1.在在SQL Server Management Studi

18、o中创建数中创建数据表据表 首先以创建如表所示的学生信息表首先以创建如表所示的学生信息表student表表结构为例,说明如何为数据库结构为例,说明如何为数据库teaching创建创建表,具体步骤如下。表,具体步骤如下。列序号列名类型取值说明1studentnonchar(10)主键2snamenchar(8)否3sexnchar(1)否4birthdaydatetime否5classnonchar(6)否6pointsmallint否7phonenchar(12)否8Emailnchar(20)否3.2.2 表的创建表的创建 1.在在SQL Server Management Studio中创

19、建数中创建数据表据表 (1)启动)启动SQL Server Management Studio,在,在“对对象资源管理器象资源管理器”中,展开要新建表的数据库中,展开要新建表的数据库teaching。(2)右击)右击“表表”项,在快捷菜单里选择项,在快捷菜单里选择“新建表新建表”项,项,(3)在弹出的如图所示的)在弹出的如图所示的“表设计器表设计器”窗口中,依窗口中,依次输入列名、数据类型及允许空否等选项。次输入列名、数据类型及允许空否等选项。列名列名数据类型与列长度数据类型与列长度允许空允许空 3.2.2 表的创建表的创建 1.在在SQL Server Management Studio中创

20、建中创建数据表数据表 (4)依次类推,设置其他列的名称、数据类型、列长度和)依次类推,设置其他列的名称、数据类型、列长度和允许空等选项,并单击允许空等选项,并单击“保存保存”按钮。按钮。(5)右击)右击studentno列,在弹出的快捷菜单中选择列,在弹出的快捷菜单中选择“设置主设置主键键”命令,或者使用命令,或者使用“设置主键设置主键”按钮来设置主键,如按钮来设置主键,如图所示,设置主键为图所示,设置主键为studentno。(6)设置完毕后,单击)设置完毕后,单击“保存保存”按钮。在弹出的对话框中按钮。在弹出的对话框中输入表名输入表名student后,单击后,单击“确定确定”按钮,即完成了

21、创建按钮,即完成了创建表的操作。表的操作。3.2.2 表的创建表的创建 1.利用利用Transact-SQL语句创建数据表语句创建数据表 CREATE TABLE的语法格式如下:的语法格式如下:CREATE TABLE database_name. schema_name.|schema_name. table_name ( | computed_column_definition ,.n ) ON partition_scheme_name( partition_column_name ) | filegroup | default TEXTIMAGE_ON filegroup |defau

22、lt ;3.2.2 表的创建表的创建 例例3.1 利用利用CREATE TABLE命令建立课程信息表命令建立课程信息表course,表结构如表所示。,表结构如表所示。列序号列名类型取值说明1coursenonchar(6)主键2cnamenchar(20)否3typenchar(8)否4period tinyint否5creditnumeric(4,1) 否3.2.2 表的创建表的创建 例例3.1 利用利用CREATE TABLE命令建立课程信息表命令建立课程信息表course,表结构如表所示。,表结构如表所示。利用利用CREATE TABLE语句在数据库语句在数据库teaching建立课建立

23、课程信息表程信息表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 表示创建主键时的索引名称,可以是任意标识符。表示创建主键时的索引名称,可

24、以是任意标识符。nCLUSTERED项表示聚集索引类型。项表示聚集索引类型。nASC表示按表示按courseno值升序方式排列数据,若是值升序方式排列数据,若是DESC则表示则表示降序。降序。3.2.2 表的创建表的创建 例例3.2利用利用CREATE TABLE命令建立学生分数表命令建立学生分数表score,表结构如表所示。该表中主键由两个列构,表结构如表所示。该表中主键由两个列构成。成。 列序号列名类型取值说明1studentnonchar(10)主键2coursenonchar(6)3usuallynumeric(6,2)否4finalnumeric(6,2)否程序代码如下:程序代码如下

25、: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 ) ) 3.2.2 表的创建表的创建 例例3.3 利用利用CREATE TABLE命令建立教师信息表命令建立教师信息表teacher,表结构如表所示。,表结构如表所示。 列序号列名类型取值说明1

26、teachernonchar(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 nchar(12) NULL, CONSTRAINT PK_teacher PRIMARY KEY CLUSTERED (te

27、acherno ASC ) 3.2.2 表的创建表的创建 3创建数据表的脚本代码创建数据表的脚本代码利用利用CREATE TABLE命令创建表,和利用可视化命令创建表,和利用可视化方式创建表,实现的功能基本是一样的。只要表方式创建表,实现的功能基本是一样的。只要表结构创建完成,就可以查看表的脚本代码。结构创建完成,就可以查看表的脚本代码。例例3.4 利用利用CREATE TABLE命令建立学生分数表命令建立学生分数表score,表结构如表所示。该表中主键由两个列,表结构如表所示。该表中主键由两个列构成。构成。 列序号列名类型取值说明1classnonchar(6)主键2classnamench

28、ar(12)否3department nchar(12)否4monitornchar(8)否3.2.2 表的创建表的创建 n在在SQL Server Management Studio中右击中右击“资源管理器资源管理器”|“数据库数据库”|teaching|class表表。n在弹出的菜单中,选择在弹出的菜单中,选择“编写表脚本为编写表脚本为(S)”|“CREATE到(到(C)”|“新查询编新查询编辑器窗口辑器窗口”在在“查询编辑器窗口查询编辑器窗口”可以显可以显示如下代码。示如下代码。SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TAB

29、LE 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 Chinese_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)

30、 ON PRIMARY) ON PRIMARY3.2.2 表的创建表的创建 例例3.5 为了完善为了完善teaching数据库的表间联系,创建表数据库的表间联系,创建表结构如所示的纽带表结构如所示的纽带表teach_class。然后查看该表的。然后查看该表的有关有关CREATE TABLE命令脚本信息。命令脚本信息。(代码从略)(代码从略)列序号列名类型取值说明1teachernonchar(6)主键2classnonchar(6)3coursenonchar(6)3.2.2表的创建表的创建 4为数据表输入数据为数据表输入数据为数据表输入数据的方式有多种,常见的有通过命为数据表输入数据的方式有

31、多种,常见的有通过命令方式添加行数据的,也可以通过程序实现表数令方式添加行数据的,也可以通过程序实现表数据的添加。为据的添加。为student表输入数据的步骤如下:表输入数据的步骤如下:(1)启动)启动SQL Server Management Studio中窗口,中窗口,展开展开“资源管理器资源管理器”|“数据库数据库”|teaching数据库,数据库,右击右击student表,在弹出的菜单中,单击表,在弹出的菜单中,单击“打开表打开表”命令。命令。3.2.2表的创建表的创建 4为数据表输入数据为数据表输入数据(2)进入的数据输入界面,依次按照表结构的要求)进入的数据输入界面,依次按照表结构

32、的要求为每一列输入数据。每输入完一行,系统会自动为每一列输入数据。每输入完一行,系统会自动进入下一行的输状态。在输入过程中,要针对不进入下一行的输状态。在输入过程中,要针对不同的数据类型输入合法的数据。如果输入不合规同的数据类型输入合法的数据。如果输入不合规则的数据,系统不接受。需要重新输入该行数据。则的数据,系统不接受。需要重新输入该行数据。(3)输入数据完毕,单击)输入数据完毕,单击“保存保存”按钮,即可完成按钮,即可完成数据的输入过程。数据的输入过程。(4)如果需要添加数据,重复上述过程即可。)如果需要添加数据,重复上述过程即可。3.2.3 数据浏览数据浏览1. 在查询窗口中浏览表数据在

33、查询窗口中浏览表数据在查询窗口中浏览表数据的步骤如下:在查询窗口中浏览表数据的步骤如下:(1)启动)启动SQL Server Management Studio中窗口,中窗口,展开展开“资源管理器资源管理器”|“数据库数据库”|teaching数据库,数据库,右击右击teacher表,在弹出的菜单中,单击表,在弹出的菜单中,单击“打开表打开表”命令。命令。(2)在如图所示的浏览数据窗口,可以发现该窗口)在如图所示的浏览数据窗口,可以发现该窗口与数据输入的窗口是一样的。与数据输入的窗口是一样的。3.2.3 数据浏览数据浏览2. 利用利用Transact-SQL语句在查询窗口中浏览表数据语句在查询

34、窗口中浏览表数据(1)启动)启动SQL Server Management Studio中窗口,单击中窗口,单击“新新建查询建查询”按钮。按钮。(2)然后在)然后在“查询设计器查询设计器”窗口中输入一条查询语句如下:窗口中输入一条查询语句如下:use teachinggoselect * from course(3)单击)单击“执行执行”按钮,可发现按钮,可发现course表的相关数据显示出表的相关数据显示出来来 3.2.4表结构的修改表结构的修改1在在SQL Server Management Studio中修改表结构中修改表结构步骤如下:步骤如下:(1)启动)启动SQL Server Ma

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

36、口中,直接单击要修改在直接单击要修改在“数据类型数据类型”项处修改。同样,项处修改。同样,可修改数据表的索引、约束。可修改数据表的索引、约束。(5)若要修改数据表属性,在)若要修改数据表属性,在“表设计器表设计器”窗口中,窗口中,单击单击“属性属性”按钮,在打开的对话框中进行修改。按钮,在打开的对话框中进行修改。3.2.4表结构的修改表结构的修改2. 利用利用Transact-SQL语句修改表结构语句修改表结构n利用利用Transact-SQL语句语句ALTER TABLE的命的命令,可以更改、添加或删除列和约束,从而令,可以更改、添加或删除列和约束,从而修改表的定义。修改表的定义。nALTE

37、R TABLE的语法格式如下:的语法格式如下:ALTER TABLE database_name.schema_name. |schema_name.table_name ALTER COLUMN column_name type_schema_name. type_name (precision,scale | max|xml_schema_collection) COLLATE collation_name NULL|NOT NULL |ADD|DROPROWGUIDCOL|PERSISTED |WITHCHECK|NOCHECKADD | | ,.n |DROP CONSTRAINT c

38、onstraint_name WITH( ,.n) |COLUMN column_name ,.n ;3.2.4表结构的修改表结构的修改例例3.6 在在test01数据库中创建一个新表数据库中创建一个新表student1,然后,然后修改其列属性。修改其列属性。程序代码如下:程序代码如下:CREATE TABLE student1 (column_grade int) -创创建新表建新表GOEXEC sp_help student1 -查看表的信息查看表的信息GOALTER TABLE student1 ADD column_class VARCHAR(20) NULL -添加列添加列GOEXE

39、C sp_help student1GOALTER TABLE student1 DROP COLUMN column_grade -删除列删除列GOEXEC sp_help student1GO3.2.4表结构的修改表结构的修改例例3.7 修改修改test01中表中表student1的列的列column_class数据数据类型和名称。类型和名称。程序代码如下:程序代码如下:Use test01GOALTER TABLE student1 ALTER COLUMN column_class char(20) NOT NULL GOEXEC sp_rename student1.column_c

40、lass,st_class GO3.2.5 表数据的修改表数据的修改1. 利用利用INSERT语句输入数据语句输入数据INSERT 语句的语法格式如下:语句的语法格式如下:INSERT TOP (expression)PERCENT INTO |rowset_function_limited WITH ( .n ) (column_list) VALUES (DEFAULT|NULL|expression,.n ) |derived_table|execute_statement |DEFAULT VALUES ; 例3.8 向teaching数据库中的score表中添加数据。程序代码如下:I

41、NSERT INTO score (usually,courseno,final,studentno)VALUES (79, c05109,91,0937221508 )INSERT INTO scoreVALUES(0824113307,c05127,93,78) 3.2.5 表数据的修改表数据的修改2. 利用利用UPDATE语句更新表数据语句更新表数据UPDATE 语句的基本语法格式如下:语句的基本语法格式如下:UPDATE TOP(expression) PERCENT |rowset_function_limited WITH( .n) SET column_name = expres

42、sion | DEFAULT | NULL ,.n FROM ,.n WHERE ; 例3.9更改teaching数据库中的score表中的学号为0824113307、课程号为c05127的期末成绩修改为87。程序代码如下:UPDATE score SET final =87WHERE studentno=0824113307 AND courseno=c05127例例3.10 为数据库为数据库test01中表中表student1输入输入3行数行数据,然后将列据,然后将列st_class的值全部改为的值全部改为jsj1012。程序代码如下:程序代码如下:INSERT INTO student1

43、 VALUES(jixie0809)INSERT INTO student1 VALUES(huag0902)INSERT INTO student1 VALUES(txun0912)GO UPDATE student1SET st_class= jsj1012 GO 3.2.5 表数据的修改表数据的修改3. 利用利用DELETE语句删除表中数据语句删除表中数据DELETE 语句的基本语法格式如下:语句的基本语法格式如下:DELETE TOP(expression)PERCENT FROM |rowset_function_limited WITH ( .n) FROM ,.n WHERE ;

44、 例3.11删除数据库test01中表student1的列st_class的值为jsj1012的行。程序代码如下:DELETE FROM student1 WHERE st_class=jsj10123.2.5 表数据的修改表数据的修改4利用利用Truncate Table语句删除表中数据语句删除表中数据nTransact-SQL语言也支持利用语言也支持利用Truncate Table语句语句删除表中数据。删除表中数据。nTruncate Table语句从一个表中删除所有行的速度语句从一个表中删除所有行的速度要快于要快于DELETE。Truncate Table语句的格式为:语句的格式为:Tr

45、uncate Table table_name n若要删除表中的所有行,则若要删除表中的所有行,则Truncate Table语句是语句是一种快速、无日志记录的方法。一种快速、无日志记录的方法。3.2.6 删除表删除表 1. 在在SQL Server Management Studio中删除数中删除数据表据表在对象资源管理器中,展开树形目录,选取要在对象资源管理器中,展开树形目录,选取要删除的数据表。右击该表名,在弹出的快捷删除的数据表。右击该表名,在弹出的快捷菜单中选择菜单中选择“删除删除”命令。在弹出的命令。在弹出的“删除删除对象对象”对话框中,会出现要删除的表,可单对话框中,会出现要删除

46、的表,可单击击“确定确定”按钮。按钮。3.2.6 删除表删除表 2. 利用利用Transact-SQL语句删除数据表语句删除数据表利用利用Transact-SQL语句语句DROP TABLE就可删除数据就可删除数据表定义及表的所有数据、索引、触发器、约束和指表定义及表的所有数据、索引、触发器、约束和指定的权限。定的权限。 其语法格式如下:其语法格式如下:DROP TABLEdatabase_name.schema name. |schema_name.table_name ,.n ;例例3.12在数据库在数据库test01中创建表中创建表stud,为表添加、删除,为表添加、删除列和行,再删除该

47、表。列和行,再删除该表。例例3.13 局部临时表的创建与数据输入。局部临时表的创建与数据输入。 数据完整性是指数据的精确性和可靠性,数据完整性是指数据的精确性和可靠性,是为防止数据库中存在不符合语义规是为防止数据库中存在不符合语义规定的数据,防止因错误信息的输入、定的数据,防止因错误信息的输入、输出而造成无效的操作或错误信息而输出而造成无效的操作或错误信息而提出的,数据完整性在数据库管理系提出的,数据完整性在数据库管理系统中是十分重要的。统中是十分重要的。 3.3.1 数据完整性的类型数据完整性的类型根据数据完整性促使所作用的数据库对象和范围不根据数据完整性促使所作用的数据库对象和范围不同,可

48、以将其分为以下几类:同,可以将其分为以下几类:(1)域()域(Domain)完整性。)完整性。 (2)实体()实体(Entity)完整性。)完整性。 (3)引用完整性。)引用完整性。 (4)用户定义完整性。用户定义完整性的实现机制)用户定义完整性。用户定义完整性的实现机制有规则(有规则(Rule)、触发器()、触发器(Trigger)和存储过程)和存储过程(Stored Procedure)及创建数据表时的所有约束)及创建数据表时的所有约束(Constraint)。)。3.1.2 约束约束 1SQL Server 2005支持的约束类型支持的约束类型(1)NOT NULL约束约束 (2)PRI

49、MARY KEY约束:约束:标识具有唯一标识表标识具有唯一标识表中行的值的列或列集。中行的值的列或列集。 (3)FOREIGN KEY约束约束:外键用于建立和加强:外键用于建立和加强两个表数据之间的连接的一列或多列。两个表数据之间的连接的一列或多列。 (4)UNIQUE约束:约束:强制实施列集中值的唯一性。强制实施列集中值的唯一性。 (5)CHECK约束:约束:通过限制可放入列中的值来通过限制可放入列中的值来强制实施域完整性。强制实施域完整性。 3.1.2 约束约束 2在在SQL Server Management Studio中创建约束中创建约束()创建()创建NOT NULL约束。在约束。

50、在SQL Server Management Studio中选择表,利用执行中选择表,利用执行“修改修改”命令后弹出窗体中,对表中的列的命令后弹出窗体中,对表中的列的“允许空允许空”项进行选择即可。项进行选择即可。()创建()创建PRIMARY KEY 约束。在约束。在SQL Server Management Studio中选择表,利用执行中选择表,利用执行“修改修改”命令后弹出窗体中,右击表中被选择的列,在命令后弹出窗体中,右击表中被选择的列,在弹出的菜单中执行弹出的菜单中执行“设置主键设置主键”命令即可。命令即可。3.1.2 约束约束 2在在SQL Server Management S

51、tudio中创中创建约束建约束()创建()创建FOREIGN KEY 约束。约束。 在在SQL Server Management Studio中选中选择表择表score,执行,执行“修改修改”命令后弹出窗体,命令后弹出窗体,单击单击“关系关系”按钮,如图所示。按钮,如图所示。3.1.2 约束约束 2在在SQL Server Management Studio中创建约中创建约束束()创建()创建FOREIGN KEY 约束。约束。 在弹出的在弹出的“外键关系外键关系”对话框中,单击对话框中,单击“添加添加”按钮,然后选择按钮,然后选择“表和列规范表和列规范”后后的的按钮按钮,如图所示。如图所示

52、。 在弹出的在弹出的“表和列表和列”对话框中,选择主键表对话框中,选择主键表student和外键表和外键表score及共有的列及共有的列studentno。单击。单击“确定确定”按钮,外键约束创建完毕。按钮,外键约束创建完毕。3.1.2 约束约束 2在在SQL Server Management Studio中创中创建约束建约束()创建()创建UNIQUE约束。约束。 在在SQL Server Management Studio中选择中选择表表score,执行,执行“修改修改”命令后弹出窗体,命令后弹出窗体,单击单击“管理索引和键管理索引和键”按钮,如图所示。按钮,如图所示。3.1.2 约束约

53、束 2在在SQL Server Management Studio中创中创建约束建约束()创建()创建UNIQUE约束。约束。 在弹出的在弹出的“索引索引/键键”对话框中,单击对话框中,单击“添加添加”按钮,然后选择按钮,然后选择“是唯一的是唯一的”后后的列表框按钮的列表框按钮,如图所示。选择如图所示。选择“是是”,单,单击击“关闭关闭”按钮即可。按钮即可。3.1.2 约束约束 2在在SQL Server Management Studio中创中创建约束建约束()创建()创建CHECK约束。约束。在在SQL Server Management Studio中选中选择表择表student,执行,

54、执行“修改修改”命令后弹出窗命令后弹出窗体,单击体,单击“管理管理Check约束约束”按钮,如图按钮,如图所示。所示。 3.1.2 约束约束 2在在SQL Server Management Studio中创中创建约束建约束()创建()创建CHECK约束。约束。 在弹出的在弹出的“CHECK约束约束”对话框中,单对话框中,单击击“添加添加”按钮,然后选择按钮,然后选择“表达式表达式”后后的的按钮按钮,如图所示。如图所示。3.1.2 约束约束 2在在SQL Server Management Studio中创中创建约束建约束()创建()创建CHECK约束。约束。 在弹出的在弹出的“CHECK约束

55、表达式约束表达式”对话对话框中,输入表达式框中,输入表达式“ sex=男男 OR sex=女女 ”。如图所示。单击。如图所示。单击“确定确定”按钮,按钮,CHECK约束创建完毕。约束创建完毕。3.3.2约束约束 3利用利用Transact-SQL语句创建或修改约束语句创建或修改约束利用利用Transact-SQL语句创建或修改约束的语法格式如下:语句创建或修改约束的语法格式如下: := CONSTRAINT constraint_name WITHCHECK|NOCHECK ADD ,.n |DROP CONSTRAINT constraint_name | COLUMN column_nam

56、e ,.n | CHECK | NOCHECK CONSTRAINT ALL | constraint_name ,.n 3.3.2约束约束 3利用利用Transact-SQL语句创建或修改约束语句创建或修改约束例3.14 为数据库teaching中的班级表class的列classno创建FOREIGN KEY 约束,并将其中的classname、department、monitor的“允许空”修改为NOT NULL。程序代码如下:ALTER TABLE classADD CONSTRAINT PK_class PRIMARY KEY CLUSTERED (classno ASC)GOALTE

57、R TABLE classALTER COLUMN classname nchar(12) NOT NULL GOALTER TABLE classALTER COLUMN department nchar(12) NOT NULLGOALTER TABLE classALTER COLUMN monitor nchar(8) NOT NULL GO3.3.2约束约束 例例3.15 为数据库为数据库teaching中的成绩表中的成绩表score的的两个列两个列usually和和final添加添加CHECK约束,限定约束,限定其值在其值在0100范围内。范围内。程序代码如下:程序代码如下:ALT

58、ER TABLE scoreADD CONSTRAINT CK_usually CHECK(usually =0 and usually=0 and final =100)GO例例3.16 为数据库为数据库teaching中的学生信息表中的学生信息表student的列的列Email创建一个创建一个UNIQUE约束。约束。程序代码如下:程序代码如下:ALTER TABLE studentADD CONSTRAINT u_Email UNIQUE NONCLUSTERED (Email)GO例3.17 为数据库teaching中表score的列studentno创建一个FOREIGN KEY约束。

59、程序代码如下:ALTER TABLE score WITH CHECK ADD CONSTRAINT FK_sc_stud FOREIGN KEY (studentno)REFERENCES student (studentno)GO3.3.2约束约束 4删除约束删除约束在创建约束的过程中,随时可以通过对话框中的在创建约束的过程中,随时可以通过对话框中的“删除删除”按钮删除已经创建的约束。按钮删除已经创建的约束。 通过通过Transact-SQL语句也可以删除约束,删除约语句也可以删除约束,删除约束的语法格式如下:束的语法格式如下:ALTER TABLE table nameDROP CONS

60、TRAINT constraint name ALL | constraint_name ,.n 例例3.18利用命令删除为数据库利用命令删除为数据库teaching中表中表score的一个约束的一个约束FK_score_student1。程序代码如下:程序代码如下:ALTER TABLE scoreDROP CONSTRAINT FK_score_student13.3.2约束约束 5. 禁止使用约束禁止使用约束禁用约束就是禁止使用在现有数据上的约束禁用约束就是禁止使用在现有数据上的约束检查。有时考虑到性能的原因,建议禁用检查。有时考虑到性能的原因,建议禁用约束。约束。(1)禁用在现有数据上

温馨提示

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

评论

0/150

提交评论