1、第一章:数据库理论概述 1.1:数据库发展历史 1963 年美国 Honeywell 公司的 IDS(Integrated Data Store )系统投入运行,揭开了数据库技术的序幕。 20 世纪 70 年代是数据库蓬勃发展的年代。 20 世纪 80 年代,关系数据库系统由于使用简便以及硬件性能的改善,逐步代替网状数据库系统和层次数据库系统占领了市场。 20 世纪 90 年代,关系数据库已成为数据库技术的主流。 进入 21 世纪以后,无论是市场的需求还是技术条件的成熟,对象数据库技术、网络数据库技术的推广和普及已成定局。 SQL Server 是一个关系数据库管理系统。它最初是由 Micro
2、soft Sybase 和 Ashton-Tate三家公司共同开发的,于 1988 年推出了第一个 OS/2 版本。在 Windows NT 推出后,Microsoft 与 Sybase 在 SQL Server 的开发上就分道扬镳了。Microsoft 将 SQL Server 移植到 Windows NT 系统上,专注于开发推广 SQL Server 的 Windows NT 版本。 Sybase 则较专注于 SQL Server 在 UNIX 操作系统上的应用。 SQL Server 2000, 是 Microsoft 公司推出的 SQL Server 数据库管理系统的新版本。该版本继承
3、了 SQL Server 7.0 版本的优点,同时又比它增加了许多更先进的功能,具有使用方便、可伸缩性好、与相关软件集成程度高等优点。可跨越从运行 Microsoft Windows 98 的膝上型电脑,到运行 Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。 1.2:数据库基本概念 1.2.1 数据 数据是描述事物的符号记录除了常用的数字数据外,文字(如名称),图形,图像,声音等信息,也都是数据日常生活中,人们使用交流语言(如汉语)去描述事物在计算机中,为了存储和处理这些事物,就要抽出对这些事长年累月感兴趣的特征组成一个记录来描述例如,在学生信息管事中,可
4、以对学生的编号,姓名,性别,年龄等情况作这样的一个描述:hy200801, 张三, 男,29. 数据与其语义是不可分的对于上面一个信息,如果我们了解其语义的人会得到如下信息:学生的编号为 hy200801,学生的姓名是:张三,学生的性别是:男,学生的年龄是:29.但是我们如果不了解其语义,则无法理解其含义因此,数据的形式本身并不能完全表达其内容,需要经过语义解释 1.2.2 数据处理和数据管理 数据处理是指从某些已知的数据出发,推导加工出一些新的数据,这些新的数据又表示了新的信息。 数据管理是指数据的收集、整理、组织、存储、维护、检索、传送等操作,这部分操作是数据处理业务的基本环节,而且是任何
5、数据处理业务中必不可少的共有部分。 数据处理是与数据管理相联系的,数据管理技术的优劣,将直接影响数据处理的效率。 - 1 -1.2.3:数据库 数据库(Database ,简记为 DB),是长期存储在计算机内、有组织的、统一管理的相关数据的集合。 DB 能为各种用户共享,具有较小冗余度、数据间联系紧密而又有较高的数据独立性等特点。 1.2.4:数据库管理系统 数据库管理系统(Database Management System ,简记为 DBMS),是位于用户与操作系统(OS )之间的一层数据管理软件,它为用户或应用程序提供访问 DB 的方法,包括 DB的建立、查询、更新及各种数据控制。DBM
6、S 总是基于某种数据模型,可以分为层次型、网状型、关系型和面向对象型等。 李四 A004 张三 A003 刘大 B008 王二 B007 数据库检索数据 插入数据 更新数据 删除数据 数数 据据 库库 管管 理理 系系 统统 DBMS 1访问的计算机硬件、软件和数据资源组成的系统,即它是采用数据库技术的计使用的人有效使由业务水平较高、资历较深的人员担任。 数据库技术,是研究数据库的结构、存储、设计、管理和使用的一门软件学科。 1.3:数据管理技术发展 展经历了人工管理、文件系统、数据库阶段和高级数据库阶段。 .2.5:数据库系统 数据库系统(Database System ,简记为 DBS),
7、是实现有组织地、动态地存储大量关联数据、方便多用户算机系统。 数据库系统是一个实际可运行的存储、维护和应用系统提供数据的软件系统,是存储介质、处理对象和管理系统的集合体。它通常由软件、数据库和数据管理员组成。其软件主要包括操作系统、各种宿主语言、实用程序以及数据库管理系统。数据库由数据库管理系统统一管理,数据的插入、修改和检索均要通过数据库管理系统进行。数据管理员负责创建、监控和维护整个数据库,使数据能被任何有权用。数据库管理员一般是1.2.6:数据库技术 数据管理技术的发- 2 -1.3.1:人工管理阶段 在人工管理阶段(20 世纪 50 年代中期以前),计算机主要用于科学计算,其他工作还没
8、有展开。外部存储器只有磁带、卡片和纸带等,还没有磁盘等字节存取存储 设备。软件只有据处理的方式基本上是批处理。 下几个特点: 方式必须由程序员自行设计与安排。 组数据对应一个程序。 1.3.件系统是专门管理外存的数据管理软件。数据处理的方式有批处理,也有联机实时处理。 。 是,随数据管理规模的扩大,数据量的急剧增加。文件系统管理数据逐渐暴露出三个缺陷数库的理论基础。 此 20 世纪 60 年代末三件大事标志着数据库管理技术进入数据库阶段。 数据结构。 面的数据控制功能:数据库的并发控制,数据库的恢复,数据的完加了系统的灵活性。 应用程序和数据库之间的联系: 汇编语言,尚无数据管理方面的软件。数
9、此阶段的数据管理有以数据不保存在计算机内。 没有专用的软件对数据进行管理。 只有程序的概念,没有文件的概念。数据的组织数据是面向程序。即一2:文件系统阶段 在文件系统阶段(20 世纪 50 年代后期至 60 年代中期),计算机不仅用于科学计算,还用于信息管理。随着数据量的增加,数据的存储、检索和维护问题成为紧迫的需要,数据结构和数据管理技术迅速发展起来。此时,外部存储器已有磁盘、磁鼓等直接存取存储设备。软件领域出现了高级语言和操作系统。操作系统中的文此阶段的数据管理有以下几个特点: 数据以“文件”形式可长期保存在外部存储器的磁盘上数据的逻辑结构和物理结构有了区别,但是比较简单。 文件组织多样化
10、。有索引文件、链接文件和直接存取文件等。 数据不再属于某个特定的程序,可以重复使用,数据是面向应用的 但: 数据冗余 数据不一致 据联系弱 1.3.3 数据库阶段 1968 年美国 IBM 公司推出层次模型的 IMS 系统 。1969 年美国 CODASYL 组织发布了 DBTG 报告,总结了当时各式各样的数据库,提出网状模型。 1970 年美国 IBM 公司的E.F.Codd 连续发表论文,提出关系模型,奠定了关系数据此阶段的数据管理有以下几个特点: 采用数据模型表示复杂的有较高的数据独立性。 数据库系统为用户提供了方便的用户接口。 数据库系统提供以下四方整性和数据的安全性。 增- 3 -应
11、用程 1 . 应用程序 N 数据管理系统 DBMS 数据库 (database ) 数据库阶段信息处理方式的演变 要求 报表 联机终端 数据管理更加的快捷。该阶段包括分布式数据库系统、对象数据库系统、网络数据库系统。 。本地计算机单独不能胜任处理任务,可以通过通信网络取得其它的 DB 计算机的支持。 1.3.4 高级数据库阶段 高级数据库阶段将数据库技术发展到更高的水平,扩展了数据库在分布上的便利性,使1.3.4.1:分布式数据库 数据库的数据在物理上分布在各个场地,但逻辑上是一个整体 每个一个数据库即可以执行局部访问,也可以执行全局应用访问 各地的计算机由数据通信网络相联系查询处理程序 报表
12、生成程序 数据库 应用程序 1 应用程序 N 输入 输出 输入 输出- 4 -全局终端 局部终端 通信网 数据库 局部终端数据库 数据库 局部处理机 局部处理机 1.3.4.2:对象数据库 对象数据库模型能完整的描述现实世界的数据结构,能表达数据间嵌套、递归的联系。 具有面向对象技术的封装性(把数据与操作定义在一起)和继承性(继承数据结构和操作)的特点,提高软件的可重用性。 1.3.4.3:网络数据库 数据库规模大、数据量多、增长迅速, 更新速度快、周期短。 网络数据库品繁多,内容丰富。 使用快捷、无时空限制,并且对信息资源的查找利用具有选择与限定的自由。 1.4:小结 数据库在不断的发生质的
13、变化:从层状、网状发展到关系数据库,再到面向对象数据库以及后来的网络数据库。 数据、数据处理和管理、数据库、数据库管理系统、数据库技术是数据库中的基本概念,由它们共同构成了数据库系统。 数据库管理技术的发展包括了人工管理、文件系统、数据库、高级数据库四个阶段,技术的发展充分体现了人类对信息管理的进步性 - 5 -第二章:sql server 2000 安装与使用 2.1 SQL Server概述 随着信息技术的发展,计算机处理数据的方式也发生着变化,从人工管理阶段到文件管理阶段到数据库管理阶段,其数据的处理方式不断的发生着变化。数据库,为企业的数据管理提供强大的支持,对数据库中的数据提供有效的
14、管理、操作方便的工具、同时减少在从移动设备到企业数据系统的多平台上创建、部署、管理及企业数据进行处理和分析应用程序的复杂度就变得尤为重要了。 MicrosoftSQLServer2000 是一个分布式的关系型数据库管理系统,具有客户机/ 服务器体系结构,采用了 Transact-sql 的 sql 语言在客户机与服务器间传递客户机的请求与服务器的处理结果。 2.1.1:SQL Server 简介 SQL Server 是一个关系数据库管理系统, 它最初是由 Microsoft Sybase 和Ashton-Tate三家公司共同开发的于 1988 年推出了第一个 OS/2 版本在 Windows
15、 NT 推出后 Microsoft与 Sybase 在 SQL Server 的开发上就分道扬镳了 Microsoft 将 SQL Server 移植到 Windows NT 系统上专注于开发推广 SQL Server 的 Windows NT 版本,Sybase 则较专注于 SQL Server 在 UNIX 操作系统上的应用,Microsoft SQL Server 有时也简称为 SQL Server 或 MS SQL Server SQL Server 2000 是 Microsoft 公司推出的 SQL Server 数据库管理系统的新版本, 该版本继承了 SQL Server 7.0
16、 版本的优点同时又比它增加了许多更先进的功能, 具有使用方便可伸缩性好与相关软件集成程度高等优点, 可跨越从运行 Microsoft Windows 98 的微型电脑到运行 Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用. 2.1.2:SQL Server 特点 SQL Server 较之以前的数据管理工具有了很大的进点,具体有以下几个特点: 特点一:相对于 FoxPro、 Access 等个人数据库而言, SQL Server 是一个功能完备的正规数据库管理系统。它包括支持开发的引擎、标准的 SQL 语言、扩展的特性 (如复制、OlAP、分析) 等一些只有
17、大型数据库系统(oracle )才具有的特性。而像存储过程、触发器等性,也是个人数据库没有的。 特点二:SQL Server 是真正的客户机/ 服务器体系结构,图形化用户界面。 并且可以在 Windows 系列操作系统上使用,与 Windows 进行有机集成,界面风格完全一致,还很详细的帮助文档。 2.1.3 SQL Server 2000 新特征 2.2 SQL Server 2000 安装与使用 SQL Server 2000 作为 Microsoft 公司极力推出的大型数据库管理系统, 它建立在成熟而强大的关系模型基础上,可以更好的支持客户机/ 服务器网络模式,能够满足各种类型的企事业单
18、位对构建网络数据库的要求。并且易用性、可扩展性、可靠性以及数据仓库等方面都确立了世界领先的地位。 2.2.1 SQL Server 2000 安装要求 SQL Server 2000 为了适应于不同开发人员的需要,制定了四种常见的版本,每版都有其特点以及环境、硬件上的需求。 - 6 -企业版( Enterprise Edition) 支持所有的 SQL Server 2000 特性,可作为大型 Web 站点、企业 OLTP(联机事务处理)以及数据仓库系统等的产品数据库服务器。 标准版( Standard Edition) 用于小型的工作组或部门 个人版( Personal Edition) 用
19、于单机系统或客户机 开发者版(Developer Edition) 用于程序员开发应用程序,这些程序需要 SQL Server 2000 作为数据存储设备。 备注: windows XP 只允许安装个人版和开发版,其他版本只能安装在 windows server操作系统下 此外, SQL Server 2000 还有桌面引擎(Desktop Engine ) 和 Windows CE 版。用户可以根据实际情况选择所要安装的 SQL Server 2000 版本。 2.2.1.1 环境需求 1 硬件需求 1、计算机 Intel 兼容计算机,Pentium 166 MHz 以上。 2、内存 RAM
20、 Enterprise:版本 64 MB。 Standard:版本 32 MB。 3、硬盘空间 SQL Server 2000: 完全安装(Full) 180 MB 典型安装(Typical) 170 MB 最小安装(minimum 65 ) MB 只安装管理工具(Client tools only ) 90 MB Analysis Services:50 MB English Query:12 MB 2 软件需求 1、操作系统 各常用的操作系统与可安装的 SQL Server 2000 的版本关系如表 2-1 所示其中“Y ”表示可安装的对应版本,“N ”表示不能安装的对应版本。 注意:上表
21、中的 Windows NT Server 4.0 系列操作系统需要安装 Service Pack 5(SP 5)或更高级的压缩包软件 2、网络软件 如果使用的操作系统是 Microsoft Windows NT、 Windows 2000、 Windows 98 或Windows95,则无需再额外安装网络软件。且 SQL Server 2000 支持 Windows NT Workstation、Windows 2000 Professional 、Windows 98 、Windows 95 、Apple Macintosh、OS/2 以及 UNIX 客户端连接。 - 7 -第三章:Sql
22、server 管理 第四章:Sql 语言 SQL 语言是 1974 年由 Boyce 和 Chamberlin 提出来的1975 年到 1979 年,IBM 公司 San Jose Research Laboratory 研究的关系数据库管理系统原形 System R实现了这种语言 由于它功能丰富,语言简洁,使用方法灵活,倍受用户和计算机业界的青睐,被众多的计算机公和软件公司采用经过多年的发展, SQL 语言已成为关系数据库的标准语言 4.1:SQL的基本概念 SQL 的英文全称为:Structured Query Language( 结构化查询语言) SQL 语言的主要功能就是同各种数据库建
23、立联系,进行沟通主要功分为以下三种:数据定义,数据操纵,数据控制SQL 语句作为关系数据库管理系统的标准语言,很多数据库都对 SQ语句进行了再开发和扩展,但是如 update,delete,insert,create,drop 在内的标准SQL 命令仍然可以在几乎所有数据库中使用 4.1.1 数据库 (database)和表 (table) 数据库,顾名思义,就是数据存放的地方 。在计算机中,数据库是数据和数据库对象的集合。而表是数据库对象之一,它们包含数据库中的所有的数据。一个数据库由多个表组成,每一个表中存储一组具有共同属性的数据。并且,数据库中的表与表之间可能存在关联。 数据库中的表与我
24、们日常生活中使 用的表格类似,它也是由行 (ROW)和列(COLUMN)组成的。列由同类的信息组成,每列又称为一个字段,每列的标题称为字段名。行包括了若干列的信息项。一个行数据称为一个或是一条记录,它表达有一定意义的信息组合。一个数据库表由一条或是多条记录组成,没有记录的表称为空表。 图(4.1.1-1) - 8 -上面用图例的方式给展示了一个数据库与表之间的关系 ,我们可以通过学生信息表的学生编号和学生成绩表的学生学号将两个表关联起来,这就是两个表之间的关系。 4.1.2 记录 (RECORD) 记录可以理解为数据库中划分成的单元,也就是表中的行。它们为存储信息提供了一个结构格式。如上图(4
25、.1.1-1) 的学生信息表中的第一行,也就是第一条记录, 我们可以理解为: 姓名为张三的学生的编号为 200801,是一个男生,今年 25 岁,可以模拟一个现实中的一个学生的大体情况,通过学生编号来唯一标识此条记录的唯一,也就是说当有多个类似的实体时,一条记录包含了某一个实体的所有信息。 实体:我们把客观存在并且可以相互区别的事物称为实体。实体可以是实际事物,也可以是抽象事件。如一个学生、一场比赛等。 4.1.3 字段 (FIELD) 一条记录经常被划分为几个字段。一个字段保存某一种特定的数据。如上图(4.1.1-1)中的第一列(也就是第一个字段) 图(4.1.3-1) 图(4.1.3-1)
26、 就是表中一的一个字段,学生编号就是这个字段的名称 图(4.1.1-1) 总共有四个列(字段),分别为学生编号,学生姓名,学生性别,学生年龄 图(4.1.1-1) 就是一个表,他包括三行四列。 4.1.4 关键字 (KEY) 在多个相似的实体中,我们经常会想找到某些符合特定条件的信息,如查找以所有性别为” 男” 的学生,那们我们根据学生信息表中的学生性别来查询,当找到符合条件的记录时,就可以访问它的所有字段,而不仅仅是关键字了。 4.1.5:数据库系统和数据库管理系统 数据库系统狭义地讲是由数据库、数据库管理系统和用户构成,广义地讲是由计算机硬件、操作系统、数据库管理系统以及在它支持下建立起来
27、的数据库、应用程序、用户和维护人员组成的一个整体。 数据库管理系统是用于管理数据的计算机软件。数据库管理系统使用户能方便地定义和操作数据、维护数据的安全性和完整性,以及进行多用户下的并发控制和恢复数据库。 4.1.6 完整性约束 在用户向数据库中输入数据时,不能保证所有的用户都能像我们一样输入的都是正确的,比如:在图 4.1.1-1 的学生信息表中,字段学生性别我们知道,只能是输入男或是女,但不是所有人都会按要求来输入,如果有人输入了“张三“,那怎么办?因此,我们可以在学生性别字段设置约束,来限制用户只能输入“男”或是“女”,否则提示用户输入错误。 推而广知,我们写入到数据库里面的记录都是从外
28、界输入的,而由于种种原因,会出现很多的不符合要求的输入。因此保证输入的数据的符合规范,成为了数据库系统尤其是多用户的关系数据库系统的首要问题了。这就是为什么要引出数据完整性。 完整性约束:数据完整性(Data Integrity )是指数据的精确性(Accuracy )和可靠性(Reliability )。数据完整性分为四类: - 9 - 实体完整性(Entity Integrity ) 域完整性(Domain Integrity ) 参照完整性(Referential Integrity ) 用户定义的完整性(User-definedIntegrity ) 4.1.6.1 实体完整性( En
29、tity Integrity) 实体完整性规定表的每一行在表中是惟一的实体。即必须能够标识数据库中的每个实体(记录)。如上所述,实体是指现实世界中存在的所有事物。实体可以是对象、主题或者是数据库出现的事件。创建表是用来存储实体,而创建列是用来描述该实体的特性。 在数据库中可以对字段进行如下约束来实现实体完整性: UNIQUE(唯一约束) PRIMAEY KEY(主键约束 ) IDENTITY(标识列) 如我们上面设计的图 4.1.1-1 中的学生信息表,怎么样标识一个学生实体的唯一,以学生姓名来肯定不行,那么我们可以像公民身证一样,给他一个学生编号,只要限制学生编号不重复,就可以实现学生实体的
30、唯一了,也就实现的学生信息表的实体完整性了。 4.1.6.2 域完整性 (Domain Integrity) 域完整性指数据库表中的列必须满足某种特定的数据类型或是约束。其中约束又包括取值范围、精度等规定。如上图 4.1.1-1 中的学生信表中是性别只能输入“男”或是“女” ,那么我们可以知道,他肯定只能输入汉字了,这就是字符类型,我们可以为表的某一个列指定数据类型(后面将讲到) 域完整性有以下几种约束: CHECK(检查约束) FOREIGN KEY (外键约束) DEFAULT(默认值约束) NOT NULL(非空约束) 4.1.6.3 参数完整性(Referential Integrit
31、y ) 参照完整性(或是叫引用完整性)是指两个表的主关键字和外关键字的数据应一致。它确保了有主关键字的表中对应其它表的外关键的行在存在,这样保证了表之间的数据的一致性,防止了数据丢失或是无意义的数据在数据库中扩散。 参数完整性是建立在外关键字和主关键之间或是外关键字和惟一性关键字之间的关系上的。在 SQL Server 中,参数完整性作用表现在以下几个方面: 禁止在从表中插入包含主表中不存在的关键字的行。 如上图 4.1.1-1 中的学生信息表(主表),其主键为(学生编号)和学生成绩表(从表),外键为(学生编号) ,如果我们在学生成绩表中插入学生编号为 200804 的记录是不允许的。 禁止会
32、导致从表中的相应值孤立的主表中的外关键字值的改变。 禁止删除在从表中的有对应记录的主表记录。 4.1.6.4 用户定义的完整性( User-defined Integrity) 不同的关系数据库系统根据其应用环境的不同,往往还需要一些特定的约束条件。用户定义的完整性就是针对某个特定关系数据库的约束条件,它反应某一具体应用所涉及的数据必须满足的语义要求。 SQL Server 提供了定义和检验这类完整性的机制,以便用统一的系统方法来处理它们,而不是用应用程序来承担这一功能。其它的完整性类型都支持用户定义的完整性。 - 10 -4.1.7:三个世界 人们把客观存在的事物以数据的形式存储到计算机中,
33、经历了对现实生活中事物特性的认识、概念化到计算机数据库里的具体表示的逐级抽象过程,即现实世界概念世界机器世界三个领域。有时也将概念世界称为信息世界;将机器世界称为存储或数据世界。 1、现实世界 人们管理的对象存于现实世界中。现实世界的事物及事物之间存在着联系,这种联系是客观存在的,是由事物本身的性质决定的。例如学校的教学系统中有教师、学生、课程,教师为学生授课,学生选修课程并取得成绩。 2、概念世界 概念世界是现实世界在人们头脑中的反映,是对客观事物及其联系的一种抽象描述,从而产生概念模型。概念模型是现实世界到机器世界必然经过的中间层次。 3、机器世界 存入计算机系统里的数据是将概念世界中的事
34、物数据化的结果。为了准确地反映事物本身及事物之间的各种联系,数据库中的数据必须有一定的结构,这种结构用数据模型来表示。数据模型将概念世界中的实体,及实体间的联系进一步抽象成便于计算机处理的方式。 4.2 数据类型 上节我们提到了定义一个列时,要指定其数据类型,数据类型是 T-SQL 最重要的内容之一。SQL Server 2000 表中的数据由其数据类型定义。它规定什么类型的信息可以存储在指定的列中。 在创建表时,首先必须为每一个列指定数据类型,它定义了每列允许存储的数据值的类型。如上图 4.1.1-1 中的学生信息表,我们想存储学生的姓名,那我们应给它指定类型为字符类型(因为学生名字一般不会
35、叫 123 吧),同样,如学生年龄,这里肯定是一个数字了,那么我们可以给它指定类型为数字类型的。 如下图里面的学生年龄,我们的数据类型为 int(这就是数字类型中的一种) 图:4.2-1 在计算机中数据有两种牲征:类型和长度 如上图 4.2-1:指定了” 学生性别” 这个列的数据类型为:int 类型,长度为 4 个字节 数据类型就是以数据的表现方式和存储方式来划分的数据的种类。 在 SQL Server 中每个变量、参数、表达式等都有数据类型。系统提供的数据类型分为几大类: - 11 -其中, BIGINT、 SQL_VARIANT 和 TABLE 是 SQL Server 2000 中新增加
36、的 3 种数据类型。下面分类讲述各种数据类型。 4.2.1 整数数据类型 整数数据类型是最常用的数据类型之一。 1、INT ( INTEGER) INT (或 INTEGER)数据类型存储从-2 的 31 次方 (-2 ,147 ,483 , 648) 到 2 的 31 次方-1 (2 , 147 ,483 , 647) 之间的所有正负整数。每个 INT 类型的数据按 4 个字节存储,其中 1 位表示整数值的正负号,其它 31 位表示整数值的长度和大小。 2、SMALLINT SMALLINT 数据类型存储从-2 的 15 次方( -32 , 768) 到 2 的 15 次方-1 ( 32 ,
37、 767 )之间的所有正负整数。每个 SMALLINT 类型的数据占用 2 个字节的存储空间,其中 1 位表示整数值的正负号,其它 15 位表示整数值的长度和大小。 3、TINYINT TINYINT 数据类型存储从 0 到 255 之间的所有正整数。每个 TINYINT 类型的数据占用 1 个字节的存储空间。 4、BIGINT BIGINT 数据类型存储从-263 ( -9 , 223, 372, 036, 854, 775, 807) 到 263-1( 9 , 223, 372, 036 , 854 ,775 , 807) 之间的所有正负整数。每个 BIGINT 类型的数据占用 8 个字节
38、的存储空间。 4.2.2 浮点数据类型 浮点数据类型用于存储十进制小数。浮点数值的数据在 SQL Server 中采用上舍入( Round up 或称为只入不舍)方式进行存储。所谓上舍入是指,当(且仅当)要舍入的数是一个非零数时,对其保留数字部分的最低有效位上的数值加 1 ,并进行必要的进位。若一个数是上舍入数,其绝对值不会减少。如:对 3.14159265358979 分别进行 2 位和 12 位舍入,结果为 3.15 和 3.141592653590。 1、REAL 数据类型 REAL 数据类型可精确到第 7 位小数,其范围为从-3.40E -38 到 3.40E +38。 每个 REAL
39、 类型的数据占用 4 个字节的存储空间。 2、FLOAT FLOAT 数据类型可精确到第 15 位小数,其范围为从-1.79E -308 到 1.79E +308。 每个FLOAT 类型的数据占用 8 个字节的存储空间。 FLOAT 数据类型可写为 FLOAT n 的形式。n 指定 FLOAT 数据的精度。 n 为 1 到 15 之间的整数值。当 n 取 1 到 7 时,实际上是定义了- 12 -一个 REAL 类型的数据,系统用 4 个字节存储它;当 n 取 8 到 15 时,系统认为其是 FLOAT 类型,用 8 个字节存储它。 3、DECIMAL DECIMAL 数据类型可以提供小数所需
40、要的实际存储空间,但也有一定的限制,您可以用2 到 17 个字节来存储从有效值从 - 1038 +1 到 1038 - 1 之间的数值。可将其写为decimal(p, s)的形式, p 和 s 确定了精确的比例和数位。其中 p 表示可供存储的值的总位数(不包括小数点),缺省值为 18; s 表示小数点后的位数,缺省值为 0。 例如: decimal (15 ,5),表示共有 15 位数,其中整数 10 位,小数 5。 图 4.2.2-1 列出了各精确度所需的字节数之间的关系。 结合下图进行一个说明: 图:4.2.2-2 列名: money 数据类型: decimal 精度:15 小数位数:5,
41、 点 9 个字节(就是图 4.2.2-2中的长度),其它的类似。 4、NUMERIC NUMERIC 数据类型与 DECIMAL 数据类型完全相同。 注意:SQL Server 为了和前端的开发工具配合,其所支持的数据精度默认最大为 28 位。 但可以通过使用命令来执行 sqlserver.exe 程序以启动 SQL Server,可改变默认精度。 命令语法如下: SQLSERVR /D master_device_path/P precisim_leve1 4.2.3 二进制数据类型 1、BINARY BINARY 数据类型用于存储二进制数据。其定义形式为BINARY( n), n 表示数据
42、的长度,取值为 1 到 8000 。在使用时必须指定BINARY 类型数据的大小,至少应为 1 个字节。BINARY 类型数据占用n+4 个字节的存储空间。在输入数据时必须在数据前加上字符“0X” 作为二进制标识,如:要输入“abc ”则应输- 13 -入“0xabc ”。若输入的数据过长将会截掉其超出部分。若输入的数据位数为奇数,则会在起始符号“0X ”后添加一个 0,如上述的“0xabc ”会被系统自动变为“0x0abc”。 2、VARBINARY VARBINARY数据类型的定义形式为VARBINARY(n)。 它与BINARY 类型相似,n 的取值也为 1 到 8000, 若输入的数据
43、过长,将会截掉其超出部分。不同的是VARBINARY数据类型具有变动长度的特性,因为VARBINARY数据类型的存储长度为实际数值长度+4 个字节。当BINARY数据类型允许NULL 值时,将被视为VARBINARY数据类型。 一般情况下,由于BINARY 数据类型长度固定,因此它比VARBINARY 类型的处理速度快。 4.2.4 逻辑数据类型 BIT: BIT数据类型占用1 个字节的存储空间,其值为0 或1 。如果输入0 或1 以外的值,将被视为 1。 BIT 类型不能定义为NULL 值(所谓NULL 值是指空值或无意义的值)。 4.2.5 字符数据类型 字符数据类型是使用最多的数据类型。
44、它可以用来存储各种字母、数字符号、特殊符号。一般情况下,使用字符类型数据时须在其前后加上单引号或双引号” 。 1 CHAR CHAR 数据类型的定义形式为CHAR (n) 。 以CHAR 类型存储的每个字符和符号占一个字节的存储空间。n 表示所有字符所占的存储空间,n 的取值为 1 到8000, 即可容纳 8000 个ANSI 字符。若不指定n 值,则系统默认值为 1。 若输入数据的字符数小于n,则系统自动在其后添 加空格来填满设定好的空间。若输入的数据过长,将会截掉其超出部分 。 2、NCHAR NCHAR数据类型的定义形式为NCHAR (n) 。 它与CHAR 类型相似。不同的是NCHAR
45、数据类型n 的取值为 1 到 4000。 因为NCHAR 类型采用UNICODE 标准字符集(CharacterSet)。 UNICODE 标准规定每个字符占用两个字节的存储空间,所以它比非UNICODE 标准的数据类型多占用一倍的存储空间。使用UNICODE 标准的好处是因其使用两个字节做存储单位,其一个存储单位的容纳量就大大增加了,可以将全世界的语言文字都囊括在内,在一个数据列中就可以同时出现中文、英文、法文、德文等,而不会出现编码冲突。 3、VARCHAR VARCHAR数据类型的定义形式为VARCHAR (n) 。 它与CHAR 类型相似,n 的取值也为 1 到 8000, 若输入的数
46、据过长,将会截掉其超出部分。不同的是,VARCHAR数据类型具有变动长度的特性,因为VARCHAR数据类型的存储长度为实际数值长度,若输入数据的字符数小于n ,则系统不会在其后添加空格来填满设定好的空间。 一般情况下,由于CHAR 数据类型长度固定,因此它比VARCHAR 类型的处理速度快。 4、NVARCHAR - 14 -NVARCHAR数据类型的定义形式为NVARCHAR (n) 。 它与VARCHAR 类型相似。不同的是,NVARCHAR数据类型采用UNICODE 标准字符集(Character Set), n 的取值为 1 到 4000。 4.2.6 文本和图形数据类型 这类数据类型
47、用于存储大量的字符或二进制数据。 1、TEXT 服务器代码页中的可变长度非 Unicode 数据的最大长度为 231-1 (2,147,483,647) 个字符。当服务器代码页使用双字节字符时,存储量仍是 2,147,483,647 字节。存储大小可能小于 2,147,483,647 字节(取决于字符串)。 SQL Server 2000 以前的版本中,数据库中一个TEXT 对象存储的实际上是一个指针,它指向一个个以 8KB (8192 个字节)为单位的数据页(Data Page)。 这些数据页是动态增加并被逻辑链接起来的。在SQL Server 2000 中,则将TEXT 和IMAGE 类型
48、的数据直接存放到表的数据行中,而不是存放到不同的数据页中。 这就减少了用于存储TEXT 和IMA- GE 类型的空间,并相应减少了磁盘处理这类数据的I/O 数量。 2 NTEXT 可变长度 Unicode 数据的最大长度为 230- 1 (1,073,741,823) 个字符。存储大小是所输入字符个数的两倍(以字节为单位)。 ntext 在 SQL-92 中的同义词是 national text。 3 IMAGE IMAGE数据类型用于存储大量的二进制数据Binary Data。 可变长度二进制数据介于 0 与 231-1 (2,147,483,647) 字节之间。其存储数据的模式与TEXT
49、数据类型相同。通常用来存储图形等OLE Object Linking and Embedding,对象连接和嵌入)对象。在输入数据时同BINARY数据类型一样,必须在数据前加上字符“0X”作为二进制标识 4.2.7 日期和时间数据类型 1 DATETIME DATETIME 数据类型用于存储日期和时间的结合体。它可以存储从公元 1753 年1 月 1 日零时起到公元 9999 年 12 月 31 日 23 时 59 分 59 秒之间的所有日期和时间,其精确度可达三百分之一秒,即 3.33 毫秒。DATETIME 数据类型所占用的存储空间为 8 个字节。其中前 4 个字节用于存储 1900 年 1 月 1 日以前或以后的天数,数值分正负,正数表示在此日期之后的日期,负数表示在此日期之前的日期。后 4 个字节用于存储从此日零时起所指定的时间经过的毫秒数。如果在输入数据时省略了时间部分,则系统将 12:00:00:000AM作为时间缺省值:如果省略了日期部分,则系统将 1900 年 1 月 1 日作为日期缺省值。 2 SMALLDATETIME SMALLDATETIME 数据类型与DATETIM