微软的SQL Server
2008正式版,提供了完整的企业级技术与工具,帮助用户以最低的总拥有成本获得最有价值的信息。用户可以充分享受高性能,高可用性,高安全性,使用更多的高效管理与开发工具,利用自服务的商业智能实现更为广泛深入的商业洞察。
为了使广大读者快速掌握SQL Server
2008数据库管理与开发的实用技术,笔者编写了本书。本书结合大量的配套多媒体教学视频,以循序渐进的方式,通过大量实例操作,从基础、管理、维护、编程、商业智能和开发6个方面对SQL
Server 2008数据库进行了全面讲解,并介绍了一个项目开发案例,让读者在学习数据库知识的同时,利用SQL
Server数据库技术解决实际工作中的问题。
本书特色
1.配大量多媒体语音教学视频,学习效果好
作者专门录制了大量的配套多媒体语音教学视频,以便让读者更加轻松、直观地学习本书内容,提高学习效率。这些视频与本书源代码一起收录于配书光盘中。
2.完善的内容体系
本书内容全面,内容覆盖传统的SQL Server基础、管理、维护和编程,还着重讲解了SQL Server
2008的重要功能——商业智能。
內容簡介:
《零点起飞学SQL Server附光盘》结合大量实例,由浅入深、循序渐进地介绍了 SQL Server
2008数据库技术,内容涵盖SQL Server
2008数据库基础、管理、维护、编程、商业智能和开发6个方面。本书图文并茂,力图以最直观的方式使读者学习各个知识点,为此还特意提供了典型习题及教学PPT,以方便教学。另外,本书配有大量配套教学视频,帮助读者更好地学习,这些视频和书中的实例源代码一起收录于本书的配书光盘中。
《零点起飞学SQL Server附光盘》共18章,分为3篇。第1篇介绍了SQL
Server 2008的理论基础知识、安装、服务器管理、数据库管理、数据表和索引管理及数据完整性等内容;第2篇介绍了SQL
Server 2008的安全与权限、监控状态、灾难恢复、自动化管理任务、高可用性及复制技术等内容;第3篇介绍了
T-SQL数据操作与应用编程,另外还介绍了SQL Server 2008的集成服务、报表服务及分析服务,最后介绍了基于SQL
Server 2008的至慧网上书城网站系统的开发实践,以提高读者的实战水平,因篇幅所限,该案例以PDF文件提供。
《零点起飞学SQL Server附光盘》适合SQL Server
2008数据库入门与提高的读者阅读,也可作为大中专院校及职业院校SQL
Server数据库管理课程的教材。另外,本书也可供数据库技术爱好者和程序员作为实际工作中的参考书籍。
目錄:
第1篇 基础知识
第1章 SQL Server 2008简介( 教学视频:29分钟)
第2章 SQL Server数据库基础( 教学视频:19分钟)
第3章 SQL Server 2008服务器管理( 教学视频:30分钟)
第4章 SQL Server 2008数据库( 教学视频:52分钟)
第5章 SQL Server 2008数据表和索引( 教学视频:42分钟)
第6章 SQL Server 2008数据完整性( 教学视频:25分钟)
第2篇 数据库管理与维护
第7章 SQL Server 2008安全与权限( 教学视频:38分钟)
第8章 监控SQL Server 2008状态( 教学视频:29分钟)
第9章 SQL Server 2008灾难恢复( 教学视频:57分钟)
第10章 自动化管理( 教学视频:51分钟)
第11章 SQL Server 2008高可用性( 教学视频:44分钟)
第12章 SQL Server 2008复制( 教学视频:30分钟)
第3篇 编程、商业智能及开发实战
第13章 Transact-SQL数据操作( 教学视频:39分钟)
第14章 Transact-SQL应用( 教学视频:61分钟)
第15章 SQL Server 2008集成服务( 教学视频:32分钟)
第16章 SQL Server 2008报表服务( 教学视频:27分钟)
第17章 SQL Server 2008分析服务( 教学视频:21分钟)
第18章 SQL Server 2008实例——至慧网上书城( 教学视频:49分钟)
內容試閱:
第5章 SQL Server 2008数据表和索引
在SQL Server
2008中,表是用来存储数据的对象。通常将同一类或者是相关数据存放在一个数据表中。例如,所有的学生信息存放在一个表中,而成绩信息都存放到另一个表中。用户可以通过多种方式访问数据库中的数据。掌握SQL
Server
2008数据表的相关知识是非常重要的。本章主要包括数据表的基础知识、数据表定义的管理、表中数据的管理及索引的管理等知识。
5.1 数据表简介
为了更好地理解和掌握SQL Server 2008中数据表的设计与使用,本节首先简要介绍数据表及其相关的基础知识。
5.1.1 什么是数据表
数据表是SQL Server
2008的数据库对象,它存储着数据库的所有数据。在数据表中,数据以行和列的形式存储在规范化的二维表格中。SQL Server
2008数据表主要由行和列 构成。
* 列:用来保存对象的某一类属性。每列又称为一个字段,每列的标题称为字段名。
* 行:用来保存一条记录,是数据对象的一个实例,包括若干列信息项。
如图5-1显示的是教务管理系统数据库(Practice_JWGL)中的学生信息表的部分截图。该表包含行和列的信息,其中,行表示数据,即学生实体;列表示数据域,即学生实体的属性。
图5-1 学生信息表
5.1.2 数据完整性
定义表除了要定义每一列的名称、数据类型和长度之外,还可以为列定义一些其他属性。这些属性也很重要,它们可以保证数据表数据的完整性和参照完整性。在SQL
Server 2008中,用于保证以上两种完整性的相关技术有如下3种。
1.约束
约束是SQL Server
2008数据库中一种自动保持数据完整性的机制。约束可以定义在列上,也可以定义在表上。列约束只能对某一列起作用,表约束可以对表的多个列起作用。当表的多个列同时需要约束时,最好使用表约束。
SQL Server 2008中使用的约束类主要有PRIMARY KEY、FOREIGN KEY、UNIQUE、CHECK和NOT
NULL。这些约束将在第6章中详细介绍。
2.规则(Rules)
规则是为了保持向后兼容性而保留下来的技术,它与一些CHECK约束的功能类似。CHECK约束是首选的保证数据完整性的技术。CHECK约束比规则更简明,并且一列可以使用多个约束,但是一列只能使用一个规则。另外,CHECK约束可以在创建表的时候指定,而规则是一种分离定义的对象,然后限制到列上。
?注意:在SQL Server未来的版本中,规则可能不再使用,所以用户应尽量避免使用规则。
3.默认值
默认值是指当用户在表中插入一行数据时,如果没有为某个(或某些)列指定值,这个(或这些)列就使用这个默认定义的值。默认值可以是计算结果为常量的任何值,例如常量、内置函数或数学表达式。
?说明:若要应用默认值,可以通过在CREATE
TABLE中使用DEFAULT关键字来创建默认值定义,这将为每一列分配一个常量表达式作为默认值。
5.1.3 SQL Server 2008特殊表
SQL Server 2008除了提供用户定义的标准数据表外,还提供了一些特殊用途的表:分区表、临时表和系统表。
1.分区表
当数据表很大时,可以把数据分割成很多单元,放在同一个数据库的规格文件组中。用户可以通过分区快速地访问和管理数据的某些部分子集而不是整个数据表,从而便于管理大表和索引。
2.临时表
SQL Server
2008有两种临时表:局部临时表和全局临时表。局部临时表只是对一个数据库实例的一次连接中的创建者是可见的。当用户断开数据库的连接时,这些局部临时表就会被删除。全局临时表创建后对所有的用户和连接都是可见的,并且只有所有的用户都断开与临时表相关的数据表时,全局临时表才会被删除。
3.系统表
系统表用来保存一些服务器配置信息数据,用户不能直接查看和修改这些系统表,只有通过专门的管理员连接才能查看和修改。不同版本的数据库系统的系统表一般不同。在升级数据库系统时,一些应用系统表的应用可能需要重写。在SQL
Server
2008中,所有的系统表与基表都具有相同的逻辑结构,因此,用于检索和修改基表信息的Transact-SQL语句,同样可以用于检索和修改系统表中的信息。
有关系统表的详细信息,读者可以自行查看SQL Server 2008的帮助。下面简要介绍几个最重要的系统表。
* Sysobjects表:SQL
Server的主系统表,出现在每个数据库中。在数据库中创建的每个对象(例如约束、默认值、日志、规则以及存储过程)都对应一行。
*
Syscolumns表:出现在master数据库和每个用户自定义的数据库中,对基表或者视图的每个列和存储过程中的每个参数都含有一行记录。
*
Sysindexes表:出现在master数据库和每个用户自定义的数据库中,它对每个索引和没有聚簇索引的每个表都含有一行记录,它还对包括文本图像数据的每个表含有一行记录。
* Sysusers表:出现在master数据库和每个用户自定义的数据库中,它对整个数据库中的每个Windows
NT用户、WindowsNT用户组、SQL Server用户或者SQL Server角色含有一行记录。
* Sysdatabases表:它对SQL
Server系统上的每个系统数据库和用户自定义的数据库含有一行记录,只出现在Master数据库中。
*
Sysdepends表:它对表、视图和存储过程之间的每个依赖关系都含有一行记录本,出现在Master数据库和每个用户自定义的数据库中。
* Sysconstraints表:对使用CREATE TABLE或者ALTER
TABLE语句为数据库对象定义的每个完整性约束都含有一行记录,包含约束映射,映射到数据库中拥有该约束的对象。
?注意:任何用户都不应直接更改系统表。如果使用DDL语句的INSERT、UPDATE和DELETE语句来修改系统表的信息,对整个系统是非常危险的,所以应该使用系统存储过程来代替。
5.1.4 规划数据表
在创建数据表之前,用户首先要做好表的设计工作,然后再创建表,最后输入数据。数据表的设计是非常重要的,若数据表设计得不合理,会十分浪费资源,并且有可能带来不可估量的损失。在设计数据表时,必须确定表的使用目的、数据的类型以及可以访问每个表的用户。在创建表及其对象之前,最好先确定表的下列特征:
* 表要包含的数据的类型。
* 表中的列数,每一列中数据的类型和长度(如果必要)。
* 哪些列允许空值。
* 是否需要使用以及何处使用约束、规则和默认值。
* 所需索引的类型,哪里需要索引,哪些列是主键,哪些是外键。
1.列的数据类型的选择
为每一列分配数据类型,是设计表的第一步。用户可以为列分配的数据类型有SQL Server
2008系统数据类型、系统数据类型的别名数据类型和用户自定义数据类型。
2.自动生成列的编号或标识符
每个表都可以通过系统生成的序列产生一个标识列。在同一个表中这些标识是不会重复的,但是对于不同的表,则是可以相同的。在SQL
Server 2008中,是通过在表设计器中为该列设置“标识规范”属性来实现的。
3.需要数据计算的列
表中某列的值可能不会直接得到,而是需要通过某些列的计算得到。SQL Server
2008支持直接的函数、数学表达式计算,但是不支持需要查询的计算。在没有说明的情况下,这些需要计算的列是虚列,物理表中不存在,每次查询时都需要重新计算。在SQL
Server 2008中,可以设置参数,把这些需要计算的列保存在物理表中。
4.加强数据完整性
在数据表的设计中,还经常需要考虑使用什么样的技术来保证数据的完整性。用户要充分使用SQL Server
2008支持的约束、规则和默认值来保证数据的完整性。
以上介绍了设计数据表时需要考虑的一些因素。当数据表设计完成之后,可以采用多种方式创建数据表,如在SQL Server
Management Studio中使用图形界面或者执行Transact-SQL语句来创建数据表。
5.1.5 系统数据类型
系统数据类型是SQL Server预先定义好的,可以直接使用。在实际使用中,SQL
Server会自动限制每个系统数据类型的值的范围。当插入数据库中的值超过了数据类型允许的范围,SQL Server系统就会报错。SQL
Server 2008提供了7类,共26种系统数据类型,如图5-2所示。
1.精确数字
所谓精确数字,是指不带小数位的整数。
(1)bit称为位数据类型,其数据有两种取值,即0和1。SQL
Server在存储bit数据类型时做了优化。如果一个表中有8个或更少的bit列时,用1个字节存放。如果有9~16个bit列时,用2个字节存放。
在输入0以外的其他值时,系统均把它们当1看待。这种数据类型常作为逻辑变量使用,用来表示真、假或是、否等二值选择。