第1章 SQL Server 2005关系数据库简介
1.1 关系数据库
最常用的数据模型有层次模型(Hierarchical Model)、网状模型(Network Model)和关系模型(Relational Model)。
sqlserver2005安装步骤教程? 关系模型就是用二维表格结构来表示实体及实体之间联系的模型。
1.1.1 关系模型的基本概念
关系(Relation):一个关系对应一张二维表,每个关系有一个关系名。在SQL Server中,一个关系就是一个表文件。
元组(Tuple):二维表中水平方向的一行,有时也叫做一条记录。
属性(Attribute):表格中的一列,相当于记录中的一个字段。
关键字(Key):可唯一标识元组的属性或属性集,也称为关系键或主码。
域(Domain):属性的取值范围,如性别的域是(男,女)。
分量:每一行对应的列的属性值,即元组中的一个属性值。
关系模式:对关系的描述,一般表示为:关系名(属性1,属性2,……属性n)。
1.1.2 关系模型的性质
(1)关系中不允许出现相同的元组。因为数学上集合中没有相同的元素,而关系是元组的集合,所以作为集合元素的元组应该是唯一的。
(2)关系中元组的顺序(即行序)是无关紧要的,在一个关系中可以任意交换两行的次序。因为集合中的元素是无序的,所以作为集合元素的元组也是无序的。根据关系的这个性质,可以改变元组的顺序使其具有某种排序,然后按照顺序查询数据,可以提高查询速度。
(3)关系中属性的顺序是无关紧要的,即列的顺序可以任意交换。交换时,应连同属性名一起交换,否则将得到不同的关系。
(4)同一属性名下的各个属性值必须来自同一个域,是同一类型的数据。
(5)关系中各个属性必须有不同的名字,不同的属性可来自同一个域,即它们的分量可以取自同一个域。
(6)关系中每一分量必须是不可分的数据项,或者说所有属性值都是原子的,是一个确定的值,而不是值的集合。
1.1.3 关系数据库完整性
1、实体完整性(Entity Integrity)
? 实体完整性是指主关系键的值不能为空或部分为空。
2、参照完整性(Referential integrity)
? 如果关系R2的外部关系键X与关系R1的主关系键相符,则X的每个值或者等于R1中主关系键的某一个值,或者取空值。
3、域完整性
? 域完整性是针对某一具体关系数据库的约束条件。它反映某一具体应用所涉及的数据必须满足的语义要求。
1.1.4 关系数据库的规范化
?
第一范式(1NF):元组中每一个分量都必须是不可分割的数据项
? 第二范式(2NF):不仅满足第一范式,而且所有非主属性完全依赖于其主码
? 第三范式(3NF):不仅满足第二范式,而且它的任何一个非主属性都不传递于任何
主关键字
1.2 SQL Server 2005的新特点
1、增强的通知服务。
2、增强的报表服务。
3、新增Service Broker技术。
4、增强的数据引擎。
5、增强的数据访问接口。
6、增强的分析服务。
7、增强的集成服务。
8、增强的数据复制服务。
9、改进的开发工具。
1.3 SQL Server2005环境需求
企业版 开发版 标准版 工作组版 简化版
Windows 2000 不支持 不支持 不支持 不支持 不支持
Windows 2000 Professional Edition SP4 不支持 支持 支持 支持 支持
Windows 2000 Server SP4 支持 支持 支持 支持 支持
Windows 2000 Advanced Server SP4 支持 支持 支持 支持 支持
Windows 2000 Datacenter Edition SP4 支持 支持 支持 支持 支持
Windows XP Home Edition SP2 不支持 支持 不支持 不支持 支持
Windows XP Professional Edition SP2 不支持 支持 支持 支持 支持
Windows 2003 Server SP1 支持 支持 支持 支持 支持
Windows 2003 Enterprise Edition SP1 支持 支持 支持 支持 支持
1.4 SQL Server2005系统数据库简介
SQL Server 2005有4个系统数据库,它们分别为Master、Model、Msdb、Tempdb。
(1)Master数据库是SQL Server系统最重要的数据库,它记录了SQL Server系统的所有系统信息。这些系统信息包括所有的登录信息、系统设置信息、SQL Server的初始化信息和其他系统数据库及用户数据库的相关信息。因此,如果 master 数据库不可用,则 SQL Server 无法启动。在 SQL Server 2005 中,系统对象不再存储在 master 数据库中,而是存储在 Resource 数据库中。
(2)model 数据库用作在 SQL Server 实例上创建的所有数据库的模板。因为每次启动 SQL Server 时都会创建 tempdb,所以 model 数据库必须始终存在于 SQL Server 系统中。当发出 CREATE DATABASE(创建数据库)语句时,将通过复制 model 数据库中的内容来创建数据库的第一部分,然后用空页填充新数据库的剩余部分。 如果修改 model 数据库,之后创建的所有数据库都将继承这些修改。例如,可以设置权限或数据库选项或者添加对象,例如,表、函数或存储过程。
(3)Msdb数据库是代理服务数据库,为其报警、任务调度和记录操作员的操作提供存储空间。
(4)Tempdb是一个临时数据库,它为所有的临时表、临时存储过程及其他临时操作提供存储空间。Tempdb数据库由整个系统的所有数据库使用,不管用户使用哪个数据库,他们所建立的所有临时表和存储过程都存储在tempdb上。SQL Server每次启动时,tempdb数据库被重新建立。当用户与SQL Server断开连接时,其临时表和存储过程自动被删除。
1.4.1 SQL Server 2005管理平台
SQL Server 2005管理平台(SQL Server Management Studio)包含了SQL Server 2000企业管理器(Enterprise Manager),以及查询
分析器(Query Analyzer)等方面的功能。此外,SQL Server 2005管理平台还提供了一种环境,用于管理 Analysis Services(分析服务)、Integration Services(集成服务)、Reporting Services(报表服务)和 XQuery。
1.4.2 商业智能开发平台
SQL Server商业智能开发平台(Business Intelligence Development Studio)是一个集成的环境,用于开发商业智能构造(如多维数据集、数据源、报告和Integration Services 软件包),如下图所示。
1.4.3 SQL Server分析器
SQL Server分析器(Profiler)是一个图形化的管理工具,用于监督、记录和检查SQL Server 数据库的使用情况。对系统管理员来说,它是一个连续实时地捕获用户活动情况的间谍。可以通过多种方法启动 SQL Server Profiler,以支持在各种情况下收集跟踪输出。如下图所示。
1.4.4 数据库引擎优化顾问
企业数据库系统的性能依赖于组成这些系统的数据库中物理设计结构的有效配置。这些物理设计结构包括索引、聚集索引、索引视图和分区,其目的在于提高数据库的性能和可管理性。SQL Server 2005 提供了数据库引擎优化顾问,这是分析一个或多个数据库上工作负荷的性能效果的工具。如下图所示。
1.4.5 分析服务
Microsoft SQL Server 2005 Analysis Services (SSAS) 为商业智能应用程序提供联机分析处理 (OLAP) 和数据挖掘功能。Analysis Services 允许设计、创建和管理包含从其他数据源(如关系数据库)聚合的数据的多维结构,以实现对 OLAP 的支持。
对于数据挖掘应用程序,分析服务允许设计、创建和可视化处理那些通过使用各种行业标准数据挖掘算法,并根据其他数据源构造出来的数据挖掘模型。
1.4.6 SQL Server配置管理器
SQL Server 配置管理器是一种工具,用于管理与 SQL Server 相关联的服务、配置 SQL Server 使用的网络协议以及从 SQL Server 客户端计算机管理网络连接配置。如下图所示。
1.4.7 SQL Server文档和教程
SQL Server 2005提供了大量的联机帮助文档(Books Online),它具有索引和全文搜索能力,可根据关键词来快速查用户所需信息。SQL Server 2005 中提供的教程可以帮助了解 SQL Server 技术和开始项目,如下图所示。
第2章 服务器管理
2.1 服务器注册
2.1.1 创建服务器组
在一个网络系统中,可能有多个SQL Server服务器,可以对这些SQL Server服务器进行分组管理。分组的原则往往是依据组织结构原则,如将公司内一个部门的几个SQL Server服务器分为一组。SQL Server分组管理由SQL Server管理平台来进行。
2.1.2 服务器注册与连接
在SQL Server管理平台中注册服务器可以存储服务器连接信息,以供将来连接时使用。
有三种方法可以在SQL Server管理平台中注册服务器:
(1)在安装管理平台之后首次启动它时,将自动注册 SQL Server 的本地实例;
(2)可以随时启动自动注册过程来还原本地服务器实例的注册;
(3)可以使用 SQL Server管理平台的“已注册的服务器”工具注册服务器。
在注册服务器时必须指定以下选项,如图2-3所示:
(1)服务器的类型。
(2)服务器的名称。
(3)登录到服务器时使用的身份验证的类型,以及登录名和密码(如果需要)。
(4)注册了服务器后要将该服务器加入到其中的组的名称。
选择服务器连接属性页框,还可以指定下列连接选项 ,如图2-4所示:
(1)服务器默认情况下连接到的数据库。
(2)连接到服务器时所使用的网络协议,要使用的网络数据包大小。
(3)连接超时值,执行超时值等。
要和已注册的服务器实现“连接”,则需要使用右键单击一个服务器,指向“连接”,然后单击“对象资源管理器”,如图2-5所示。
与连接服务器相反的是断开服务器,只要在所要断开的服务器上单击右键,选择“断开”即可。注意断开服务器并不是从计算机中将服务器删除,而只是从SQL Server管理平台中删除了对该服务器的引用。需要再次使用该服务器时,只需在SQL Server管理平台中重新连接即可。
2.2 服务器启动、暂停和停止
在SQL Server管理平台中,在所要启动的服务器上单击右键,从弹出的快捷菜单中选择“启动”选项,即可启动服务器。
暂停和关闭服务器的方法与启动服务器的方法类似,只需在相应的快捷菜单中选择“暂停(Pause)”或“停止(Stop)”选项即可,如图2-6所示。
2.3 服务器配置选项设置
使用SQL Server管理平台配置服务器的操作方法为:在SQL Server管理平台中用右键单击所要进行配置的服务器,从快捷菜单中选择“属性(Properties)”选项,就会出现如图2-7所示的对话框,其中可以进行服务器的属性(配置选项)的设置。
在如图2-7所示的服务器属性对话框中共有7个选项。这7个选项分别是:常规选项、内存选项、处理器选项、安全性选项、连接选项、数据库设置选项、高级选项。
第3章 Transact-SQL语言
3.1 数据定义语言
数据定义语言(DDL)是指用来定义和管理数据库以及数据库中各种对象的语句,这些语句包括CREATE、ALTER和DROP等。在SQL Server 2005中,数据库对象包括表、视图、触发器、存储过程、规则、默认、用户自定义的数据类型等。这些对象的创建、修改和删除等都可以通过使用CREATE,ALTER,DROP等语句来完成。
例3-1 创建数据库表
/*下面的例子将创建表S。*/
CREATE TABLE S
(
sno char(10) NOT NULL /*学号字段*/
CONS
TRAINT PK_sno PRIMARY KEY CLUSTERED/*主键约束*/
CHECK (sno like '31300501[0-9][0-9]')/*检查约束*/,
sname char(8) NULL, /*姓名字段*/
sex char(2) NULL, /*性别字段*/
age int NULL, /*年龄字段*/
dept varchar(20) NULL/*系别字段*/
)
例3-2 修改S表,增加一个班号列
程序清单如下:
ALTER TABLE S
ADD
CLASS_NO CHAR(6)
例3-3 删除S表
程序清单如下:
? DROP table S
3.2 数据操纵语言(DML)
数据操纵语言是指用来查询、添加、修改和删除数据库中数据的语句,这些语句包括SELECT、INSERT、UPDATE、DELETE等。
将在第6章详细讲解SELECT语句的语法及实例。
3.2.2 INSERT语句
INSERT语句用于向数据库表或者视图中加入一行数据。INSERT语句的语法形式如下:
INSERT [INTO] table_or_view [(column_list)] VALUES(data_values)
其中,table_or_view是指要插入新记录的表或视图;column_list是可选项,指定待添加数据的列; VALUES子句指定待添加数据的具体值。列名的排列顺序不一定要和表定义时的顺序一致。但当指定列名表时VALUES子句值的排列顺序必须和列名表中的列名排列顺序一致,个数相等,数据类型一一对应。
在进行数据插入操作时须注意以下几点:
(1)必须用逗号将各个数据分开,字符型数据要用单引号括起来。
(2)INTO子句中没有指定列名,则新插入的记录必须在每个属性列上均有值,且VALUES子句中值的排列顺序要和表中各属性列的排列顺序一致。
(3)将VALUES子句中的值按照INTO子句中指定列名的顺序插入到表中。
(4)对于INTO子句中没有出现的列,则新插入的记录在这些列上将取空值,如上例的SCORE即赋空值。但在表定义时有NOT NULL约束的属性列不能取空值。
例3-5 创建SC表(学生选课表),并向SC表中插入一条选课记录(’S7’,’C1’)。
程序清单如下:
CREATE TABLE SC
(
sno char(10) NOT NULL,
cno char(2) NULL, /*课程编号字段*/
score numerical(4,1) NULL /*成绩字段*/
)
Go
INSERT INTO SC (sno,cno) VALUES ('3130050101', 'c1')
Go
下面是插入与列顺序不同的数据的例子。
例3-6 使用 column_list 及 VALUES 列表显式地指定将被插入每个列的值。
程序清单如下:
CREATE TABLE T1
( column_1 int,
column_2 varchar(30))
Go
INSERT T1 (column_2, column_1) VALUES ('This is a test',1)
插入多行数据的语法格式为:
INSERT INTO table_or_view [(column_list)] 子查询
例3-7 求出各位学生的平均成绩,把结果存放在新表AVGSCORE中。
程序清单如下:
/*首先建立新表AVGSCORE,用来存放学号和学生的平均成绩。*/
CREATE TABLE AVGSCORE
(SNO CHAR(10),
AVGSCORE SMALLINT)
Go
/*利用子查询求出SC表中各位学生的平均成绩,把结果
存放在新表AVGSCORE中。*/
INSERT INTO AVGSCORE
SELECT SNO,AVG(SCORE)
FROM SC
GROUP BY SNO
3.2.3 UPDATE语句
UPDATE语句用于修改数据库表或视图中特定记录或者字段的数据,其语法形式如下:
UPDATE table_or_view SET <column>=<expression>[,<column>=<expression>>]…
[WHERE <search_condition>]
其中:table_or_view是指要修改的表或视图;SET子句给出要修改的列及其修改后的值,其中column为要修改的列名,expression为其修改后的值;WHERE子句指定待修改的记录应当满足的条件,WHERE子句省略时,则修改表中的所有记录。
例3-8 一个带有WHERE条件的修改语句。
程序清单如下:
use adventureworks
go
update person.address
set city='Boston' where addressid=1
例3-9 将所有学生年龄增加1岁
程序清单如下:
UPDATE S SET AGE=AGE+1
例3-12 创建把讲授C5课程的教师的工资增加100元。
程序清单如下:
/
*T表(教师基本情况表)的结构为T(TNO,TN,SEX,AGE,PROF,SAL,DEPT)分别表示教师的编号,姓名,性别,年龄,职称,工资,系别。TC表(教师授课表)的结构为TC(TNO,CNO)分别表示教师的编号,课程编号。*/
UPDATE T SET SAL=SAL+100
WHERE TNO IN
(SELECT T.TNO FROM T,TC
WHERE T.TNO=TC.TNO AND TC.CNO='C5')
/*通过连接查询到讲授C5课程的教师编号。*/
3.2.4 DELETE语句
使用DELETE语句可以删除表中的一行或多行记录,其语法格式为:
DELETE FROM table_or_view [WHERE <search_condition>]
其中:table_or_view是指要删除数据的表或视图;WHERE子句指定待删除的记录应当满足的条件,W
HERE子句省略时,则删除表中的所有记录。
下面是删除一行记录的例子。
例3-14 删除张益琳教师的记录。
程序清单如下:
DELETE FROM T WHERE TN=’ 张益琳’
下面是删除多行记录的例子。
例 3-15 删除所有教师的授课记录。
程序清单如下:
DELETE FROM TC
执行此语句后,TC表即为一个空表,但其定义仍存在数据字典中。
例3-16 删除李明同学选课的记录。
DELETE FROM SC WHERE SNO=
(SELECT SNO FROM S WHERE SN=’ 李明’)
3.3 数据控制语言
数据控制语言(DCL)是用来设置或更改数据库用户或角权限的语句,包括GRANT,DENY,REVOKE等语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行数据控制语言。
3.3.1 GRANT语句
1、语句权限与角的授予
? SQL语言使用GRANT语句为用户授予语句权限的语法格式为:
GRANT <;语句权限>|<;角> [,<;语句权限>|<;角>]…
TO <;用户名>|<;角>|PUBLIC[,<;用户名>|<;角>]…
[WITH ADMIN OPTION]
? 其语义为:将指定的语句权限授予指定的用户或角。其中:
(1)PULBIC代表数据库中的全部用户;
(2)W
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论