版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、SQL Server 2005 数据库应用与开发第03章 表和数据完整性内容提要:表是SQL Server数据库中最重要的数据对象,也是构建高性能数据库的基础。在程序开发与应用过程中,表是存储数据的基本单元。数据表设计的优劣将影响磁盘空间使用效率、数据处理时内存的利用率以及数据的查询效率。数据完整性则是保证表中数据正确与完整的关键。本章将介绍各种数据类型的特点和用途,数据表的创建、修改、管理与数据格式转换,以及实现数据完整性的方法和基本操作。第03章 表和数据完整性本章内容3.1 SQL Server2005的数据类型3.2 表的创建与维护3.3 数据的完整性3.4 数据库关系图3.5 数据的
2、导入和导出3.6 小结3.1 SQL Server2005的数据类型数据库中的所有数据都存放在按行与列格式组织的表中,数据类型是数据的一种属性,决定数据存储的空间和格式.数据类型可以为对象定义4个属性:对象包含的数据种类。所存储值占有的空间(字节数)和数值范围。数值的精度(仅适用于数值类型)。数值的小数位数(仅适用于数值类型)。SQL server 2005提供的数据类型可以归纳为:数值类型、字符类型、日期时间类型、货币类型和其他数据类型。3.1 SQL Server2005的数据类型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-13.1 SQL Server2005的数据类型3.1.1 数值类型 2. 近似数值类型 近似数字数据类型可以存储十进制值,用于表示浮点数据。此类型的数据不一定有精确的表示,可具体
4、分为float和real两种。 SQL Server 2005存储数据时对小数点右边的数进行四舍五入。只有在精确数据类型不够大,不能存储数值时,才考虑使用float。下表列出了SQL Server支持的近似数字数据类型 数据类型字节数取值范围float(p)4/8-2.23E3082.23E308real4-3.4E383.4E383.1 SQL Server2005的数据类型3.1.2 字符类型 字符类型是用于存储字符型数据的。该数据类型可以使用ASC编码或Unicode编码。ASC编码要求用8个二进制位来表示字母的范围。Unicode标准使用2个字节来表示每个字符。在 Unicode标准中
5、,包括了以各种字符集定义的全部字符。在SQL server 2005中,Unicode数据以 nchar、nvarchar 和 ntext 数据类型存储。定义一个字符数据类型时,指定该列允许存储的最大字节数。下表列出了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个
6、字符nvarchar(max)最大2 G最多536 870 912个字符ntext最大2 G最多536 870 912个字符3.1 SQL Server2005的数据类型3.1.3 日期时间类型 日期时间类型数据,可具体分为datetime与smalldatetime两种类型。datetime和smalldatetime数据类型在计算机内部是作为整数存储的。datetime类型存储为一对4字节整数,它们一起表示自1753年1月1日午夜12点钟经过的毫秒数。smalldatetime类型存储为一对2字节整数,它们一起表示自1900年1月1日午夜12点钟经过的分钟数。下表列出了SQL Server
7、2005支持的日期和时间数据类型。日期类型字节数取值范围datetime8从1753-1-1到9999-12-31,精度为3.33毫秒smalldatetime4从1900-1-1到2079-12-31,精度为1分钟3.1 SQL Server2005的数据类型3.1.4货币类型 货币数据类型旨在存储精确到4个小数位的货币值。下表列出了SQL Server支持的货币数据类型。数据类型 字节数 取值范围money8 -922337203685477.5808922337203685477.5807smallmoney4 -214748.3648214748.36473.1 SQL Server2
8、005的数据类型3.1.1 数值类型 1. 精确数值类型精确数值类型用来存储没有小数位的整数或定点小数。使用任何算术运算符都可以操作这些数据类型中存储的数值,而不需要任何特殊处理。下表列出了SQL Server支持的精确数值类型。类别数据类型字节数取值范围Integerbigint8-2E632E63-1int4-2E312E31-1smallint2-32 76832 767tinyint10255Exact numricdecimal(p,s)517-10E38+110E38-1numeric(p,s)517-10E38+110E38-13.1 SQL Server2005的数据类型3.1
9、.1 数值类型 1. 精确数值类型精确数值类型用来存储没有小数位的整数或定点小数。使用任何算术运算符都可以操作这些数据类型中存储的数值,而不需要任何特殊处理。下表列出了SQL Server支持的精确数值类型。类别数据类型字节数取值范围Integerbigint8-2E632E63-1int4-2E312E31-1smallint2-32 76832 767tinyint10255Exact numricdecimal(p,s)517-10E38+110E38-1numeric(p,s)517-10E38+110E38-13.1 SQL Server2005的数据类型3.1.5 其他数据类型 1
10、. 二进制数据类型 SQL Server 2005提供了3种二进制数据类型,允许在一个表中存储各种数量的二进制数据。下表列出了SQL Server支持二进制数据类型。数据类型字节数binary(n)18 000 varbinary(n)18 000 varbinary(max)最多2 Gimage最多2 G3.1 SQL Server2005的数据类型3.1.5 其他数据类型 2. 特殊数据类型 SQL Server 2005还提供了7种特殊数据类型,包括cursor、sql_variant、timestamp、table、uniqueidentifier与xml。timestamp 用于表示
11、SQL server 活动的先后顺序,以二进投影的格式表示。timestamp 数据与插入数据或者日期和时间没有关系。bit 由 1 或者 0 组成,当表示真或者假、on 或者 off 时,使用 bit 数据类型。uniqueidentifier 由 16 字节的十六进制数字组成,表示一个全局唯一的。当表的记录行要求唯一时,GUID是非常有用。 具体作用参看表3.73.1 SQL Server2005的数据类型3.1.5 其他数据类型 3. 自定义数据类型 SQL Server 2005允许用户根据自己的需要自定义数据类型(UDT),并可以用此数据类型来声明变量或列。自定义类型提供了一种可以将
12、更能清楚地说明对象中值的类型的名称应用于数据类型的机制,这使程序员或数据库管理员能够更容易地理解用该数据类型定义的对象的用途。3.2表的创建与维护3.2.1表的类型 1. 按照表的用途分类(1)系统表:用于维护SQL Server 2005服务器和数据库正常工作的只读数据表。系统表存在于各个数据库中,由DBMS系统自动维护。(2)用户表:由用户自己创建的、用于各种数据库应用系统开发的表。(3)已分区表:已分区表是将数据水平划分为多个单元的表,这些单元可以分布到数据库中的多个文件组中。在维护整个集合的完整性时,使用分区可以快速而有效地访问或管理数据子集,从而使大型表或索引更易于管理。3.2 表的
13、创建与维护3.2.1表的类型 2. 按照表的存储时间分类(1)永久表:包括SQL Server 2005的系统表和用户数据库中创建的数据表,该类表除非人工删除,否则一直存储在介质中。(2)临时表:临时表是临时使用的表结构。临时表分为全局的临时表和局部临时表,并且可以由任何用户创建。所有的临时表都是在tempdb数据库中创建的。如果服务器关闭,则所有临时表会被清空、关闭。通过使用CREATE TABLE命令并在表名前添加一个字符(#),可以创建局部临时表。3.2表的创建与维护3.2.2 表的创建 1.在SQL Server Management Studio中创建数据表 首先以创建如表所示的学生
14、信息表student表结构为例,说明如何为数据库teaching创建表,具体步骤如下。列序号列名类型取值说明1studentnonchar(10)主键2snamenchar(8)否3sexnchar(1)否4birthdaydatetime否5classnonchar(6)否6pointsmallint否7phonenchar(12)否8Emailnchar(20)否3.2表的创建与维护3.2.2 表的创建 1.在SQL Server Management Studio中创建数据表 (1)启动SQL Server Management Studio,在“对象资源管理器”中,展开要新建表的数据库
15、teaching。(2)右击“表”项,在快捷菜单里选择“新建表”项,(3)在弹出的如图所示的“表设计器”窗口中,依次输入列名、数据类型及允许空否等选项。列名数据类型与列长度允许空 3.2表的创建与维护3.2.2 表的创建 1.在SQL Server Management Studio中创建数据表 (4)依次类推,设置其他列的名称、数据类型、列长度和允许空等选项,并单击“保存”按钮。(5)右击studentno列,在弹出的快捷菜单中选择“设置主键”命令,或者使用“设置主键”按钮来设置主键,如图所示,设置主键为studentno。(6)设置完毕后,单击“保存”按钮。在弹出的对话框中输入表名stud
16、ent后,单击“确定”按钮,即完成了创建表的操作。3.2表的创建与维护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 |default ;3.2
17、表的创建与维护3.2.2 表的创建 例3.1 利用CREATE TABLE命令建立课程信息表course,表结构如表所示。列序号列名类型取值说明1coursenonchar(6)主键2cnamenchar(20)否3typenchar(8)否4period tinyint否5creditnumeric(4,1)否3.2表的创建与维护3.2.2 表的创建 例3.1 利用CREATE TABLE命令建立课程信息表course,表结构如表所示。利用CREATE TABLE语句在数据库teaching建立课程信息表course的程序代码如下:CREATE TABLE teaching.dbo.cour
18、se(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其中:PK_course 表示创建主键时的索引名称,可以是任意标识符。CLUSTERED项表示聚集索引类型。ASC表示按courseno值升序方式排列数据,若是DESC则表示降序。3.2表的创建与维护3.2.2 表的创建 例3.
19、2利用CREATE TABLE命令建立学生分数表score,表结构如表所示。该表中主键由两个列构成。 列序号列名类型取值说明1studentnonchar(10)主键2coursenonchar(6)3usuallynumeric(6,2)否4finalnumeric(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 P
20、RIMARY KEY CLUSTERED (studentno ASC,courseno ASC ) ) 3.2表的创建与维护3.2.2 表的创建 例3.3 利用CREATE TABLE命令建立教师信息表teacher,表结构如表所示。 列序号列名类型取值说明1teachernonchar(6)主键2tnamenchar(8)否3majornchar(10)否4profnchar(10)是5departmentnchar(12)否建立教师信息表teacher的程序代码如下:CREATE TABLE dbo.teacher(teacherno nchar(6) NOT NULL,tname nc
21、har(8) NULL,major nchar(10) NULL,prof nchar(10) NOT NULL,department nchar(12) NULL, CONSTRAINT PK_teacher PRIMARY KEY CLUSTERED (teacherno ASC ) 3.2表的创建与维护3.2.2 表的创建 3创建数据表的脚本代码利用CREATE TABLE命令创建表,和利用可视化方式创建表,实现的功能基本是一样的。只要表结构创建完成,就可以查看表的脚本代码。例3.4 利用CREATE TABLE命令建立学生分数表score,表结构如表所示。该表中主键由两个列构成。 列序
22、号列名类型取值说明1classnonchar(6)主键2classnamenchar(12)否3departmentnchar(12)否4monitornchar(8)否3.2表的创建与维护3.2.2 表的创建 在SQL Server Management Studio中右击“资源管理器”|“数据库”|teaching|class表。在弹出的菜单中,选择“编写表脚本为(S)”|“CREATE到(C)”|“新查询编辑器窗口”在“查询编辑器窗口”可以显示如下代码。SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE dbo. class
23、(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) ON PRIMARY)
24、ON PRIMARY3.2表的创建与维护3.2.2 表的创建 例3.5 为了完善teaching数据库的表间联系,创建表结构如所示的纽带表teach_class。然后查看该表的有关CREATE TABLE命令脚本信息。(代码从略)列序号列名类型取值说明1teachernonchar(6)主键2classnonchar(6)3coursenonchar(6)3.2表的创建与维护3.2.2表的创建 4为数据表输入数据为数据表输入数据的方式有多种,常见的有通过命令方式添加行数据的,也可以通过程序实现表数据的添加。为student表输入数据的步骤如下:(1)启动SQL Server Managemen
25、t Studio中窗口,展开“资源管理器”|“数据库”|teaching数据库,右击student表,在弹出的菜单中,单击“打开表”命令。3.2表的创建与维护3.2.2表的创建 4为数据表输入数据(2)进入的数据输入界面,依次按照表结构的要求为每一列输入数据。每输入完一行,系统会自动进入下一行的输状态。在输入过程中,要针对不同的数据类型输入合法的数据。如果输入不合规则的数据,系统不接受。需要重新输入该行数据。(3)输入数据完毕,单击“保存”按钮,即可完成数据的输入过程。(4)如果需要添加数据,重复上述过程即可。3.2表的创建与维护3.2.3 数据浏览1. 在查询窗口中浏览表数据在查询窗口中浏览
26、表数据的步骤如下:(1)启动SQL Server Management Studio中窗口,展开“资源管理器”|“数据库”|teaching数据库,右击teacher表,在弹出的菜单中,单击“打开表”命令。(2)在如图所示的浏览数据窗口,可以发现该窗口与数据输入的窗口是一样的。3.2表的创建与维护3.2.3 数据浏览2. 利用Transact-SQL语句在查询窗口中浏览表数据(1)启动SQL Server Management Studio中窗口,单击“新建查询”按钮。(2)然后在“查询设计器”窗口中输入一条查询语句如下:use teachinggoselect * from course(3
27、)单击“执行”按钮,可发现course表的相关数据显示出来 3.2表的创建与维护3.2.4表结构的修改1在SQL Server Management Studio中修改表结构步骤如下:(1)启动SQL Server Management Studio后,在对象资源管理器中展开其中的树形目录,找到要修改结构的数据表。(2)若要修改数据表名,可右击数据表,在弹出的快捷菜单中选择“重命名”命令。(3)若要对表中的列进行插入、删除等操作,如图所示3.2表的创建与维护3.2.4表结构的修改1在SQL Server Management Studio中修改表结构(4)若要修改列数据类型,“表设计器”窗口中
28、,直接单击要修改在“数据类型”项处修改。同样,可修改数据表的索引、约束。(5)若要修改数据表属性,在“表设计器”窗口中,单击“属性”按钮,在打开的对话框中进行修改。3.2表的创建与维护3.2.4表结构的修改2. 利用Transact-SQL语句修改表结构利用Transact-SQL语句ALTER TABLE的命令,可以更改、添加或删除列和约束,从而修改表的定义。ALTER TABLE的语法格式如下:ALTER TABLE database_name.schema_name. |schema_name.table_name ALTER COLUMN column_name type_schema
29、_name. type_name (precision,scale | max|xml_schema_collection) COLLATE collation_name NULL|NOT NULL |ADD|DROPROWGUIDCOL|PERSISTED |WITHCHECK|NOCHECKADD | | ,.n |DROP CONSTRAINT constraint_name WITH( ,.n) |COLUMN column_name ,.n ;3.2表的创建与维护3.2.4表结构的修改例3.6 在test01数据库中创建一个新表student1,然后修改其列属性。程序代码如下:CRE
30、ATE TABLE student1 (column_grade int) -创建新表GOEXEC sp_help student1 -查看表的信息GOALTER TABLE student1 ADD column_class VARCHAR(20) NULL -添加列GOEXEC sp_help student1GOALTER TABLE student1 DROP COLUMN column_grade -删除列GOEXEC sp_help student1GO3.2表的创建与维护3.2.4表结构的修改例3.7 修改test01中表student1的列column_class数据类型和名称
31、。程序代码如下:Use test01GOALTER TABLE student1 ALTER COLUMN column_class char(20) NOT NULL GOEXEC sp_rename student1.column_class,st_class GO3.2表的创建与维护3.2.5 表数据的修改1. 利用INSERT语句输入数据INSERT 语句的语法格式如下:INSERT TOP (expression)PERCENT INTO |rowset_function_limited WITH ( .n ) (column_list) VALUES (DEFAULT|NULL|e
32、xpression,.n ) |derived_table|execute_statement |DEFAULT VALUES ; 例3.8 向teaching数据库中的score表中添加数据。程序代码如下:INSERT INTO score (usually,courseno,final,studentno)VALUES (79, c05109,91,0937221508 )INSERT INTO scoreVALUES(0824113307,c05127,93,78) 3.2表的创建与维护3.2.5 表数据的修改2. 利用UPDATE语句更新表数据UPDATE 语句的基本语法格式如下:UP
33、DATE TOP(expression) PERCENT |rowset_function_limited WITH( .n) SET column_name = expression | 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输入
34、3行数据,然后将列st_class的值全部改为jsj1012。程序代码如下:INSERT INTO student1 VALUES(jixie0809)INSERT INTO student1 VALUES(huag0902)INSERT INTO student1 VALUES(txun0912)GO UPDATE student1SET st_class= jsj1012 GO 3.2表的创建与维护3.2.5 表数据的修改3. 利用DELETE语句删除表中数据DELETE 语句的基本语法格式如下:DELETE TOP(expression)PERCENT FROM |rowset_func
35、tion_limited WITH ( .n) FROM ,.n WHERE ; 例3.11删除数据库test01中表student1的列st_class的值为jsj1012的行。程序代码如下:DELETE FROM student1 WHERE st_class=jsj10123.2表的创建与维护3.2.5 表数据的修改4利用Truncate Table语句删除表中数据Transact-SQL语言也支持利用Truncate Table语句删除表中数据。Truncate Table语句从一个表中删除所有行的速度要快于DELETE。Truncate Table语句的格式为:Truncate Ta
36、ble table_name 若要删除表中的所有行,则Truncate Table语句是一种快速、无日志记录的方法。3.2表的创建与维护3.2.6 删除表 1. 在SQL Server Management Studio中删除数据表在对象资源管理器中,展开树形目录,选取要删除的数据表。右击该表名,在弹出的快捷菜单中选择“删除”命令。在弹出的“删除对象”对话框中,会出现要删除的表,可单击“确定”按钮。3.2表的创建与维护3.2.6 删除表 2. 利用Transact-SQL语句删除数据表利用Transact-SQL语句DROP TABLE就可删除数据表定义及表的所有数据、索引、触发器、约束和指定
37、的权限。 其语法格式如下:DROP TABLEdatabase_name.schema name. |schema_name.table_name ,.n ;例3.12在数据库test01中创建表stud,为表添加、删除列和行,再删除该表。例3.13 局部临时表的创建与数据输入。 3.3 数据的完整性数据完整性是指数据的精确性和可靠性,是为防止数据库中存在不符合语义规定的数据,防止因错误信息的输入、输出而造成无效的操作或错误信息而提出的,数据完整性在数据库管理系统中是十分重要的。 3.3 数据的完整性3.3.1 数据完整性的类型根据数据完整性促使所作用的数据库对象和范围不同,可以将其分为以下几
38、类:(1)域(Domain)完整性。 (2)实体(Entity)完整性。 (3)引用完整性。 (4)用户定义完整性。用户定义完整性的实现机制有规则(Rule)、触发器(Trigger)和存储过程(Stored Procedure)及创建数据表时的所有约束(Constraint)。3.3 数据的完整性3.1.2 约束 1SQL Server 2005支持的约束类型(1)NOT NULL约束 (2)PRIMARY KEY约束:标识具有唯一标识表中行的值的列或列集。 (3)FOREIGN KEY约束:外键用于建立和加强两个表数据之间的连接的一列或多列。 (4)UNIQUE约束:强制实施列集中值的唯一
39、性。 (5)CHECK约束:通过限制可放入列中的值来强制实施域完整性。 3.3 数据的完整性3.1.2 约束 2在SQL Server Management Studio中创建约束()创建NOT NULL约束。在SQL Server Management Studio中选择表,利用执行“修改”命令后弹出窗体中,对表中的列的“允许空”项进行选择即可。()创建PRIMARY KEY 约束。在SQL Server Management Studio中选择表,利用执行“修改”命令后弹出窗体中,右击表中被选择的列,在弹出的菜单中执行“设置主键”命令即可。3.3 数据的完整性3.1.2 约束 2在SQL
40、Server Management Studio中创建约束()创建FOREIGN KEY 约束。 在SQL Server Management Studio中选择表score,执行“修改”命令后弹出窗体,单击“关系”按钮,如图所示。3.3 数据的完整性3.1.2 约束 2在SQL Server Management Studio中创建约束()创建FOREIGN KEY 约束。 在弹出的“外键关系”对话框中,单击“添加”按钮,然后选择“表和列规范”后的按钮,如图所示。 在弹出的“表和列”对话框中,选择主键表student和外键表score及共有的列studentno。单击“确定”按钮,外键约束创
41、建完毕。3.3 数据的完整性3.1.2 约束 2在SQL Server Management Studio中创建约束()创建UNIQUE约束。 在SQL Server Management Studio中选择表score,执行“修改”命令后弹出窗体,单击“管理索引和键”按钮,如图所示。3.3 数据的完整性3.1.2 约束 2在SQL Server Management Studio中创建约束()创建UNIQUE约束。 在弹出的“索引/键”对话框中,单击“添加”按钮,然后选择“是唯一的”后的列表框按钮,如图所示。选择“是”,单击“关闭”按钮即可。3.3 数据的完整性3.1.2 约束 2在SQL
42、Server Management Studio中创建约束()创建CHECK约束。在SQL Server Management Studio中选择表student,执行“修改”命令后弹出窗体,单击“管理Check约束”按钮,如图所示。 3.3 数据的完整性3.1.2 约束 2在SQL Server Management Studio中创建约束()创建CHECK约束。 在弹出的“CHECK约束”对话框中,单击“添加”按钮,然后选择“表达式”后的按钮,如图所示。3.3 数据的完整性3.1.2 约束 2在SQL Server Management Studio中创建约束()创建CHECK约束。 在弹
43、出的“CHECK约束表达式”对话框中,输入表达式“ sex=男 OR sex=女 ”。如图所示。单击“确定”按钮,CHECK约束创建完毕。3.3 数据的完整性3.3.2约束 3利用Transact-SQL语句创建或修改约束利用Transact-SQL语句创建或修改约束的语法格式如下: := CONSTRAINT constraint_name WITHCHECK|NOCHECK ADD ,.n |DROP CONSTRAINT constraint_name | COLUMN column_name ,.n | CHECK | NOCHECK CONSTRAINT ALL | constrai
44、nt_name ,.n 3.3 数据的完整性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)GOALTER TABLE classALTER COLUMN classname nchar(12) NOT NU
45、LL GOALTER TABLE classALTER COLUMN department nchar(12) NOT NULLGOALTER TABLE classALTER COLUMN monitor nchar(8) NOT NULL GO3.3 数据的完整性3.3.2约束 例3.15 为数据库teaching中的成绩表score的两个列usually和final添加CHECK约束,限定其值在0100范围内。程序代码如下:ALTER TABLE scoreADD CONSTRAINT CK_usually CHECK(usually =0 and usually=0 and final
46、 =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约束。程序代码如下:ALTER TABLE score WITH CHECK ADD CONSTRAINT FK_sc_stud FOREIGN KEY (studentno)REFERENCES student (stu
47、dentno)GO3.3 数据的完整性3.3.2约束 4删除约束在创建约束的过程中,随时可以通过对话框中的“删除”按钮删除已经创建的约束。 通过Transact-SQL语句也可以删除约束,删除约束的语法格式如下:ALTER TABLE table nameDROP CONSTRAINT constraint name ALL | constraint_name ,.n 例3.18利用命令删除为数据库teaching中表score的一个约束FK_score_student1。程序代码如下:ALTER TABLE scoreDROP CONSTRAINT FK_score_student13.3
48、数据的完整性3.3.2约束 5. 禁止使用约束禁用约束就是禁止使用在现有数据上的约束检查。有时考虑到性能的原因,建议禁用约束。(1)禁用在现有数据上的约束检查。 (2)在加载新数据时禁用约束检查。 3.3 数据的完整性3.3.3 规则 1. 使用CREATE RULE命令创建规则使用CREATE RULE语句创建规则的语法格式:CREATE RULE schema_name.rule_name AS condition_expression ;例3.19 为数据库teaching创建一条规则score_rule,该规则规定凡是分数类的列值必须在0100之间。程序代码如下:USE teachin
49、gGOCREATE RULE score_rule AS score BETWEEN 0 and 100GO3.3 数据的完整性3.3.3 规则 2绑定规则规则是一种独特的对象。要使之生效,必须用sp_bindrule将其与表中的列绑定。绑定规则的语句格式:sp_bindrule rulename=rule , objname=object_name, futureonly=futureonly_flag例如,可以将score_rule规则绑定到score表的usually列上。 USE teaching EXEC sp_bindrule score_rele,score. usually3.
50、3 数据的完整性3.3.3 规则 3解除列上绑定的规则如果某条规则已经与列或者用户定义数据类型绑定,要删除规则,首先要解除规则的绑定,解除规则的绑定sp_unbindrule存储过程。Sp_unbindrule存储过程的语法格式如下: sp unbindrule objnam= object_name ,futureonly= futureonly_flag4删除规则解除规则绑定后,就可以用DROP RULE语句删除规则score_rule了。 DROP RULE score_rule 例如,要解除绑顶定到score表的usually列上的规则,可以使用以下Transact-SQL语句:USE
51、 teachingGOEXEC sp_unbindrule score. usually3.3 数据的完整性3.3.4 默认值 默认值是一种数据库对象,属于逐步取消的数据完整性手段。1. 使用CREATE DEFAULT命令创建默认值CREATE DEFAULT命令进行。 创建默认值对象的语句格式:CREATE DEFAULT schema_name.default_name AS constant_expression;例如,在teaching数据库中创建一个type_default默认值对象的程序代码如下:USE teachingGO CREATE DEFAULT type_default
52、 AS 必修GO3.3 数据的完整性3.3.4 默认值 2. 利用存储过程绑定默认值在创建默认值后,必须将它与特定表的列绑定后才能使之发挥作用。用sp_bindefault存储过程绑定默认值到列。sp_bindefault存储过程的语法格式如下:sp_bindefaultdefname=default , objname=object name ,futureonly=futureonly flag例如,将上面的type_default默认值对象绑定course表的type列上,可以用以下Transact-SQL语句。USE teachingGO EXEC sp_bindefault type
53、_default, course. type3.3 数据的完整性3.3.4 默认值 3解除默认值对象的绑定删除默认值对象时,首先要执行sp_unbindefault存储过程,取消默认值对象的绑定,然后执行DROP DEFAULT语句删除默认值对象。解除默认值对象绑定的sp_unbindefault存储过程语法格式如下:sp_unbindefaultobjname= object_name,futureonly= futureonly_flag例如,用下面的Transact-SQL语句就可以解除course表type列上的默认值绑定。USE teachingEXEC sp_unbindefaul
54、t course.type3.3 数据的完整性3.3.4 默认值 4. 删除默认值对象删除默认值语法格式:DROP DEFAULT default_name ,n当然,也可以通过右击默认值对象type_default,在弹出菜单中选择“删除”命令来删除默认值。3.3 数据的完整性3.3.5 强制数据的完整性通过以下两种方法可以强制数据库完整性:(1)由声明保证的数据完整性。声明数据完整性是指定义数据标准,规定数据必须作为对象定义的一部分,SQL Server 2005将自动确保数据符合标准。实现基本数据完整性的首选方法是使用由声明保证的完整性。(2)过程定义数据完整性。使用过程保证的数据完整性
55、,即可以通过编写脚本来定义数据必须满足的标准,并执行这个标准。在SQL Serve 2005中可以通过使用触发器和存储过程来实现过程定义数据完整性。3.4 数据库关系图数据库关系图 (database diagram)是数据库中对象的图形表示形式。在数据库设计过程中,可以利用数据库关系图对数据库对象如表、列、键、索引、关系和约束等进行进一步设计和修改。数据库关系图包括表对象、表所包含的列以及它们之间的相互关联的情况。可以通过创建关系图或打开现有的关系图来打开数据库关系图设计器。3.4 数据库关系图1. 创建数据库关系图创建数据库关系图的步骤如下:(1)在对象资源管理器中,右击“数据库关系图”文
56、件夹或该文件夹中的任何关系图。从快捷菜单中选择“新建数据库关系图”,如图所示。3.4 数据库关系图1. 创建数据库关系图创建数据库关系图的步骤如下:(2)此时,将显示“添加表”对话框。在“表”列表中选择所需的表,再单击“添加”按钮。如图所示。选择的表将以图形方式显示在新的数据库关系图中。3.4 数据库关系图1. 创建数据库关系图创建数据库关系图的步骤如下:(3)继续添加或删除表,按照设计的方案修改表或更改表关系,如添加student、score和calss等6个表,创建数据库关系图,如图所示。(4)在“文件”菜单中,选择“保存关系图”项,在弹出对话框中输入关系图名称Diagram_teac1,
57、单击“确定”按钮。即可建成数据库关系图通过保存数据库关系图,可以保存对数据库所做的所有更改,包括对表、列和其他数据库对象所做的任何更改。3.4 数据库关系图2在数据库关系图中修改数据库对象在数据库关系图上,表中所显示的列名与列存储在数据库的名称一样,可以在数据库关系图中直接重命名列。其具体步骤如下:(1)展开数据库关系图,选择要重命名列的表,再右击要重命名的列。(2)从快捷菜单中的子菜单“表视图”|“标准”、“列名”或“键”命令,如图所示。(3)在显示要重命名列的单元格中输入新的“列名”。(4)使用资源管理器还可以创建新的数据库关系图。数据库关系图以图形方式显示数据库的结构。使用数据库关系图可
58、以创建和修改表、列、关系和键。此外,还可以修改索引和约束。3.4 数据库关系图3数据库关系图中的要素(1)在数据库关系图中,每个表都可带有3种不同的功能:标题栏、行选择器和一组属性列,参看图3.26 。标题栏。标题栏显示表的名称。如果修改了某个表,但尚未保存该表,则表名末尾将显示一个星号 (*),表示未保存更改。行选择器。可以通过单击行选择器来选择表中的数据库列。如何该列是表的主键,则行选择器将显示一个键符号。属性列。属性列组仅在表的某些视图中可见。3.4 数据库关系图3数据库关系图中的要素(2)在数据库关系图中,每个关系都可以带有3种不同的功能:终结点、线型和相关表,参看图3.26。终结点如
59、果某个关系在一个终结点处有键,在另一个终结点处有无穷符号,则该关系是一对多关系。如果某个关系在每个终结点处都有键,则该关系是一对一关系。线型线本身表示当向外键表添加新数据时,DBMS是否强制关系的引用完整性。如果为实线,则在外键表中添加或修改行时,DBMS将强制关系的引用完整性。如果为点线,则在外键表中添加或修改行时,DBMS不强制关系的引用完整性。相关表关系线表示两个表之间存在外键关系。对于一对多关系,外键表是靠近线的无穷符号的那个表。如果线的两个终结点连接到同一个表,则该关系是自反关系。可以打开数据库关系图以查看或编辑关系图的结构。 3.4 数据库关系图4查看数据库关系图查看数据库关系图的
60、步骤如下:(1)在对象资源管理器中,右击相应数据库的“数据库关系图”节点下的已经建成的数据库关系图。(2)在弹出菜单中,单击“修改”命令。即可查看和修改选择的关系图。 (3)或者在对象资源管理器中,展开“数据库关系图”文件夹。双击要打开的数据库关系图的名称。由此可见,数据库关系图还是一种可视化工具,可用于对所连接的数据库进行设计和可视化处理。 3.5 数据的导入和导出3.5.1 数据转换概述 SQL Server 2005 Integration Services (SSIS)是一种企业数据转换和数据集成解决方案,用户可以以此从不同的数据源提取、转换、复制及合并数据,并将其移至单个或多个目标。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年清远市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(培优a卷)
- 汉中市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(典型题)
- 2026年河池市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及答案详解(真题汇编)
- 淮北市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(a卷)
- 2026年汕头市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)完整答案详解
- 定西市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及答案详解1套
- 黄石市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及答案详解(易错题)
- 2026年柳州市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及参考答案详解一套
- 眉山市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(b卷)
- 临沂市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(精练)
- 2025年广东佛山职业病诊断(物理因素所致职业病)模拟题库及答案
- 2025年6月16日更新的第34批REACH250项高度关注物质SVHC清单
- 2025-2030中国燃气管道第三方施工破坏防控体系构建研究报告
- 2025年(完整版)全国高考一卷数学试题及答案
- 数据库版本管理手册
- 读书分享成品-绿色卡通风假如给我三天光明好书分享模板课件
- 2025年交管12123版学法减分全部试题及答案解析
- 建设工程造价鉴定申请书
- 安全监控设备方案
- 2025版静脉输液治疗实践指南
- 经颅磁刺激技术研究进展与临床应用
评论
0/150
提交评论