零点起飞学SQL Sever第5章 数据表和索引.pdf
《零点起飞学SQL Sever第5章 数据表和索引.pdf》由会员分享,可在线阅读,更多相关《零点起飞学SQL Sever第5章 数据表和索引.pdf(30页珍藏版)》请在咨信网上搜索。
1、第5章SQL Server 2008数据表和索弓I在SQL Server 2008 表是用来存储数据的对象。通常将同一类或者是相关数据存 放在一个数据表中。例如,所有的学生信息存放在一个表中,而成绩信息都存放到另一个 表中。用户可以通过多种方式访问数据库中的数据。掌握SQL Server 2008数据表的相关 知识是非常重要的。本章主要包括数据表的基础知识、数据表定义的管理、表中数据的管 理及索引的管理等知识。5.1 数据表简介为了更好地理解和掌握SQL Server 2008中数据表的设计与使用,本节首先简要介绍 数据表及其相关的基础知识。5.1.1 什么是数据表数据表是SQL Server
2、 2008的数据库对象,它存储着数据库的所有数据。在数据表中,数据以行和列的形式存储在规范化的二维表格中。SQL Server 2008数据表主要由行和列 构成。歹U:用来保存对象的某一类属性。每列又称为一个字段,每列的标题称为字段名。行:用来保存一条记录,是数据对象的一个实例,包括若干列信息项。如图5-1显示的是教务管理系统数据库(Practice_JWGL)中的学生信息表的部分截图。该表包含行和列的信息,其中,行表示数据,即学生实体;列表示数据域,即学生实体的 属性。YAMG SQL PCM_GL dbo.学生UQ&字号.名 住.(H雯、彳LpIjjP缙号(削即园 BJH 051110 y
3、HJImmHm蛇 m里女女女M里里 府依H篇 号到触场李育号 M673w)ss6ix加 h I 黑Z 11M1112口皿 m 0S3O68 8北 M M M M M M 11I611UUS 回 0505060606070070图5-1学生信息表5.1.2数据完整性定义表除了要定义每一列的名称、数据类型和长度之外,还可以为列定义一些其他属 第1篇基础知识性。这些属性也很重要,它们可以保证数据表数据的完整性和参照完整性。在SQL Server 2008中,用于保证以上两种完整性的相关技术有如下3种。1.约束约束是SQL Server 2008数据库中一种自动保持数据完整性的机制。约束可以定义在 列
4、上,也可以定义在表上。列约束只能对某一列起作用,表约束可以对表的多个列起作用。当表的多个列同时需要约束时,最好使用表约束。SQL Server 2008 中使用的约束类主要有 PRIMARY KEY、FOREIGN KEY,UNIQUE、CHECK和NOT NULLo这些约束将在第6章中详细介绍。2.规则(Rules 规则是为了保持向后兼容性而保留下来的技术,它与一些CHECK约束的功能类似。CHECK约束是首选的保证数据完整性的技术。CHECK约束比规则更简明,并且一列可以 使用多个约束,但是一列只能使用一个规则。另外,CHECK约束可以在创建表的时候指 定,而规则是一种分离定义的对象,然后
5、限制到列上。Q注意:在SQL Server未来的版本中,规则可能不再使用,所以用户应尽量避免使用规则。3.默认值默认值是指当用户在表中插入一行数据时,如果没有为某个(或某些)列指定值,这 个(或这些)列就使用这个默认定义的值。默认值可以是计算结果为常量的任何值,例如 常量、内置函数或数学表达式。说明:若要应用默认值,可以通过在CREATE TABLE中使用DEFAULT关键字来创建 默认值定义,这将为每一列分配一个常量表达式作为默认值。5.1.3 SQL Server 2008 特殊表SQL Server 2008除了提供用户定义的标准数据表外,还提供了一些特殊用途的表:分 区表、临时表和系统
6、表。1.分区表当数据表很大时,可以把数据分割成很多单元,放在同一个数据库的规格文件组中。用户可以通过分区快速地访问和管理数据的某些部分子集而不是整个数据表,从而便于管 理大表和索弓I。2.临时表SQL Server 2008有两种临时表:局部临时表和全局临时表。局部临时表只是对一个数 据库实例的一次连接中的创建者是可见的。当用户断开数据库的连接时,这些局部临时表 就会被删除。全局临时表创建后对所有的用户和连接都是可见的,并且只有所有的用户都 78第5章SQL Server 2008数据表和索引断开与临时表相关的数据表时,全局临时表才会被删除。3.系统表系统表用来保存一些服务器配置信息数据,用户
7、不能直接查看和修改这些系统表,只 有通过专门的管理员连接才能查看和修改。不同版本的数据库系统的系统表一般不同。在 升级数据库系统时,一些应用系统表的应用可能需要重写。在SQL Server 2008 所有 的系统表与基表都具有相同的逻辑结构,因此,用于检索和修改基表信息的Transact-SQL 语句,同样可以用于检索和修改系统表中的信息。有关系统表的详细信息,读者可以自行查看SQL Server 2008的帮助。下面简要介绍 几个最重要的系统表。Sysobjects表:SQL Server的主系统表,出现在每个数据库中。在数据库中创建的 每个对象(例如约束、默认值、日志、规则以及存储过程)都
8、对应一行。Syscolumns表:出现在master数据库和每个用户自定义的数据库中,对基表或者 视图的每个列和存储过程中的每个参数都含有一行记录。Sysindexes表:出现在master数据库和每个用户自定义的数据库中,它对每个索 引和没有聚簇索引的每个表都含有一行记录,它还对包括文本/图像数据的每个表 含有一行记录。Sysusers表:出现在master数据库和每个用户自定义的数据库中,它对整个数据 库中的每个 Windows NT用户、WindowsNT用户组、SQL Server用户或者SQL Server角色含有一行记录。Sysdatabases表:它对SQL Server系统上的
9、每个系统数据库和用户自定义的数据库 含有一行记录,只出现在Master数据库中。Sysdepends表:它对表、视图和存储过程之间的每个依赖关系都含有一行记录本,出现在Master数据库和每个用户自定义的数据库中。Sysconstraints表:对使用CREATE TABLE或者ALTER TABLE语句为数据库对 象定义的每个完整性约束都含有一行记录,包含约束映射,映射到数据库中拥有 该约束的对象。A注意:任何用户都不应直接更改系统表。如果使用DDL语句的INSERT、UPDATE和 DELETE语句来修改系统表的信息,对整个系统是非常危险的,所以应该使用系 统存储过程来代替。5.1.4规划
10、数据表在创建数据表之前,用户首先要做好表的设计工作,然后再创建表,最后输入数据。数据表的设计是非常重要的,若数据表设计得不合理,会十分浪费资源,并且有可能带来 不可估量的损失。在设计数据表时,必须确定表的使用目的、数据的类型以及可以访问每 个表的用户。在创建表及其对象之前,最好先确定表的下列特征:表要包含的数据的类型。表中的列数,每一列中数据的类型和长度(如果必要)。79第1篇基础知识 哪些列允许空值。是否需要使用以及何处使用约束、规则和默认值。所需索引的类型,哪里需要索弓I,哪些列是主键,哪些是外键。1.列的数据类型的选择为每一列分配数据类型,是设计表的第一步。用户可以为列分配的数据类型有S
11、QL Server 2008系统数据类型、系统数据类型的别名数据类型和用户自定义数据类型。2.自动生成列的编号或标识符每个表都可以通过系统生成的序列产生一个标识列。在同一个表中这些标识是不会重 复的,但是对于不同的表,则是可以相同的。在SQL Server 2008中,是通过在表设计器 中为该列设置“标识规范”属性来实现的。3.需要数据计算的列表中某列的值可能不会直接得到,而是需要通过某些列的计算得到。SQL Server 2008 支持直接的函数、数学表达式计算,但是不支持需要查询的计算。在没有说明的情况下,这些需要计算的列是虚列,物理表中不存在,每次查询时都需要重新计算。在SQL Serv
12、er 2008中,可以设置参数,把这些需要计算的列保存在物理表中。4.加强数据完整性在数据表的设计中,还经常需要考虑使用什么样的技术来保证数据的完整性。用户要 充分使用SQL Server 2008支持的约束、规则和默认值来保证数据的完整性。以上介绍了设计数据表时需要考虑的一些因素。当数据表设计完成之后,可以采用多 种方式创建数据表,如在SQL Server Management Studio中使用图形界面或者执行 Transact-SQL语句来创建数据表。5.1.5系统数据类型系统数据类型是SQL Server预先定义好的,可以直接使用。在实际使用中,SQL Server 会自动限制每个系统
13、数据类型的值的范围。当插入数据库中的值超过了数据类型允许的范 围,SQL Server系统就会报错。SQL Server 2008提供了 7类,共26种系统数据类型,如 图5-2所示。1.精确数字所谓精确数字,是指不带小数位的整数。(1)bit称为位数据类型,其数据有两种取值,即0和1。SQL Server在存储bit数据 类型时做了优化。如果一个表中有8个或更少的bit列时,用1个字节存放。如果有916 个bit列时,用2个字节存放。在输入0以外的其他值时,系统均把它们当1看待。这种数据类型常作为逻辑变量使 用,用来表示真、假或是、否等二值选择。80第5章SQL Server 2008数据表
14、和索引E 1系统数据类型S CJ精确数字Ibit tinyint smalii nt int bigint numeric decimal smallmoney money a近似数字 读 floatBm日期和时间 datetime 的 smalldatetime 三字符串 char varchar text臼A Unicode字符串 沔 nchar 次nvar char 网 ntextS 口二进制字符串 同 binary 可扰varbinary 鞘1 imageB CJ其他数据类型 sql_variant timestamp uni quei denti fi er xml图5-2 SQL
15、Server 2008系统数据类型(2)tinyint:每个tinyint类型的数据占用1个字节的存储空间,它可以存储从0255 范围的所有正整数。(3)smallint:每个smallint类型的数据占用2个字节的存储空间,其中,一个二进制 位表示整数值的正负号,其他15个二进制位表示整数值的长度和大小。可以存储在-2”(-32 768)(215-1)(32 767)范围的所有正负整数。(4)int(integer):每个int(或integer)数据类型值存储在4个字节中,其中,一个 二进制位表示整数值的正负号,其他31个二进制位表示整数值的长度和大小。int数据类 型可以存储在-231(
16、-2 147 483 648)(231-1)(2 147 483 647)范围的所有正负整数。(5)bigint:用于存储从2$?(-9 223 372 036 854 775 807)(263-1)(-9 223 372 036 854 775 807)之间的所有正负整数,每个bigint类型的数据占用8个字节的存储空间。(6)decimal和numeric:decimal数据类型和numeric数据类型完全相同,分为两种是 为了保持与ANSI标准兼容。这两种数据类型可以提供小数所需的实际存储空间,可以用217个字节来存储(-1038-1)(1038-1)之间的数值。也可以将其写为decim
17、al(p,s)的形式,其中,p表 示可供存储的数值的总位数,默认设置为18。s表示小数点后的位数,默认设置为0。注意:数值类型的总位数不包括小数,例如decimal(10,5),表示共有10位数,其中 整数5位,小数5位。(7)money:用于存储货币值,存储在money数据类型中的数值以一个正数部分和一 个小数部分存储在两个4字节的整型值中。存储范围为-922 337 213 685 477.5808922 337 213 685 477.580 8,精度为货币单位的万分之一。(8)smallmoney:与money数据类型类似,但范围比money数据类型小,其存储范围 为214 748.3
18、46 8214 748.346 8。当为money或smallmoney的表输入数据时,必须在有效位置前面加一个货币单位符 号(如$或其他货币单位的记号)。81第1篇基础知识2.近似数字近似数据类型用于存储十进制小数。近似数值的数据在SQL Server中采用只入不舍的 方式进行存储。即当(且仅当)要舍入的数是一个非零数时,对其保留数字部分的最低有 效位上的数值加1,并进行必要的进位。(1)float:可以精确到第15位小数,其范围为(-1.79E-308)(1.79E+308)0如 果不指定float数据类型的长度,它占用8个字节的存储空间。float数据类型也可以写为 float(n)的形
19、式,n指定float数据的精度,n为115之间的整数值。当n取17时,实际是定义了一个real类型的数据,系统用4个字节存储它;当n取815时,系统认为 其是日oat类型,用8个字节存储它。(2)real:每个real类型的数据占用4个字节的存储空间,可以存储正的或者负的十 进制数值,最大可以有7位精确位数,它的存储范围在(-3.40E-38)(3.40E+38)。3.时间和日期SQL Server 2008支持的时间和日期数据类型主要有6种,分别是datetime smalldatetime date time、datetimeoffset datetime2o 下面主要讲解 datetim
20、e 和 smalldatetime 两种。(1)datetime:用于存储日期和时间的结合体。它可以存储在公元1753年1月1日零 时公元9999年12月31日23时59分59秒之间的所有日期和时间,其精确度可达三百 分之一秒,即3.33毫秒。datetime数据类型所占用的存储空间为8个字节,其中,前4个字节用于存储基于1900 年1月1日之前或者之后日期数。数值分正负,负数存储的数值代表在基数日期之前的日 期,正数表示基数日期之后的日期。时间以子夜后的毫秒存储在后面的4个字节中。当存储datetime数据类型时,默认的格式是MM DD YYYY hh:mm A.M./P.M。当插入 数据或
21、者在其他地方使用datetime类型时,需要用单引号把它括起来。默认的时间日期是 January1,1900 12:00 A.MO 可以接受的输入格式有 Jan4 1999、JAN4 1999、January 4 1999、Jan 1999 4、1999 4 Jan和1999 Jan 4。Datetime数据类型允许使用/、-和.作为不同时间单位 间的分隔符。(2)smalldatetime:与datetime数据类型类似,但其日期时间范围较小,它存储在1900 年1月1日2079年6月6日之间的日期。Smalldatetime数据类型使用4个字节存储数据,其中,SQL Server 2008
22、用两个字节存储日期1900年1月1日以后的天数,时间以子夜后 的分钟数形式存储在另外两个字节中。smalldatetime的精确度为1分钟。4.字符串字符数据类型是SQL Server中最常用的数据类型之一,它可以用来存储各种字母、数 字符号和特殊符号。在使用字符数据类型时,需要在其前后加上英文单引号或者双引号。(1)char:当用char数据类型存储数据时,每个字符和符号占用1个字节的存储空间。其定义形式为:char(n)82第5章 SQL Server 2008数据表和索引其中,n表示所有字符所占的存储空间,n的取值为1-8000。若不指定n值,系统默 认n的值为lo若输入数据的字符串长度
23、小于n,则系统自动在其后添加空格来填满设定好 的空间。若输入的数据过长,将会截掉其超出部分。如果定义了一个char数据类型,而且 允许该列为空,则该字段被当作varchar来处理。(2)varchar:用varchar数据类型可以存储长达8000个字符的可变长度字符串,和char 类型不同的是varchar类型的存储空间根据输入数据的实际长度而变化,其定义形式为:varchar(n)例如,定义varchar(20),则它对应的字段最多可以存储20个字节,如果数据的实际长 度不到20个字节,系统不会在其后添加空格,因此使用varchar类型可以节省空间。(3)text:用于存储大容量文本数据。当
24、要存储的字符型数据非常巨大,char和varchar 已经不能满足其存储要求(大于8000字节)时,应该选择text数据类型。Text数据类型 的容量可以在1(2311)(2 147 483 647)个字节范围之内,但实际应用时要根据硬盘 的存储空间而定。在定义text数据类型时,不需要指定数据长度,SQL Server会根据数据的长度自动为 其分配空间。5.Unicode字符串UnicodeC统一字符编码标准)字符集标准,用于支持国际上的非英语语种。每个Unicode 字符用两个字节为一个存储单位,所以Unicode数据类型所占用的存储空间是非Unicode 数据类型的两倍。(1)nchar
25、:其定义形式为nchar(n),其中n表示所有字符所占的存储空间,n的取值 为 1-4000。(2)nvarchar:其定义形式为nvarchar(n),其中n表示所有字符所占的存储空间,n 的取值为14000。(3)ntext:用于存储大容量文本数据。其理论上的容量为23-1(1 073 741 823)个 字节。6.二进制字符串SQL Server 2008支持的二进制字符串主要有以下3种:binary:其定义形式为binary(n),数据的存储长度是固定的,即n+4个字节,当输 入的二进制数据长度小于n时,余下部分填充0。二进制数据类型的最大长度(即 n的最大值)为8000,常用于存储图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 零点起飞学SQL Sever第5章 数据表和索引 零点 起飞 SQL Sever 数据表 索引
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【曲****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【曲****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。