配色: 字号:
《SQL Server 2005基础教程及上机指导》第2章 创建数据库
2023-05-25 | 阅:  转:  |  分享 
  
第2章 行 波 法2.1 数据库管理开发工具2.2 数据库基本组成2.3 使用SQL Server Management Studio
创建数据库2.4 使用T-SQL语言创建数据库2.5 创建数据库表2.6 上机实验习题  在与DB2、Oracle数据库的比
较中,SQL Server的一个优势就是其易用性。一直以来,各个版本的SQL Server都提供了非常方便的数据库管理工具,相对而
言降低了创建、维护、管理数据库的难度。这一点在SQL Server 2005中有更加明显的体现。   本章将介绍SQL Serve
r 2005数据库的管理开发工具,并使用这些工具来创建数据库。同时还介绍数据库的基本组成,以及管理数据库不可或缺的T-SQL语言。
   本章学习目标:   (1) 掌握SQL Server 2005常用管理工具的基本使用方法。   (2) 掌
握数据库的组成并能按要求创建数据库和表。   (3) 认识并初步了解T-SQL数据库语言。     SQL Server 20
05常用的管理工具有配置管理器、外围应用配置器、管理控制台等,本节将对这些工具做一简要介绍。   总的来说,这些管理工具都属于客户
端的管理工具。客户端通过这些管理工具向数据库服务器的数据库引擎发出命令,然后数据库引擎响应,执行这些命令,如图2-1所示。2.1
数据库管理开发工具     图2-1 通过客户端管理工具来管理数据库服务器  当然,为了方便,在数据库服务器上安装数据库时,一
般都会将客户端管理工具也安装在该服务器上(安装操作如第1章所述)。那么此时,该服务器同时也是客户端计算机了,服务器兼并了图2-1中
客户端计算机的职责,因为它通过自身的管理工具向自身的数据库引擎发出管理命令,这属于本地连接,否则为远程连接。本书以该数据库服务器和
客户端计算机合并的情形为主要情形(本地连接),即使在某些情况下必须演示图2-1所示的数据库服务器和客户端计算机分离的情形(远程连接
),也采用合并情形演示即可。这可以节约读者的资源,同时也能达到相同的效果。2.1.1 配置管理器   如果要查看数据库服务器安装
了哪些服务,并对这些服务进行配置,例如配置服务的启动类型、服务的登录帐户、服务所使用的网络协议等,就需要用到SQL Server
2005配置管理器,可以通过如下方式在数据库服务器中打开它:单击“开始”|“所有程序”|“Microsoft SQL Server
2005”|“配置工具”|“SQL Server 2005配置管理器”,该管理器界面如图2-2所示。图2-2 SQL Serv
er 2005配置管理器界面  1.SQL Server 2005服务   在图2-2所示的配置管理器中,单击左边树形图中的节点“
SQL Server 2005服务”,可以查看在此服务器中安装的所有数据库服务,这些数据库服务在右方详细窗格中列出。可以通过该“S
QL Server 2005服务”来完成以下管理操作:   1) 启动、停止、暂停、重新启动某个数据库服务   右击某个服务(例如
图中的数据库命名实例“WESTWINDS QL”),然后在右键菜单中单击要完成的操作即可,如图2-3所示。也可以单击“属性”,在弹
出的“属性”对话框的“登录”标签中单击相应的按钮,如图2-4所示。  图2-3 启动或停止数据库服务  2) 更改数据库服务的登
录身份   在图2-3中,单击“属性”,在弹出的对话框中选择“登录”,单击“本帐户”,在“帐户名”中输入用户帐户名,并分别在“密码
”和“确认密码”中输入该用户的登录密码,如图2-4所示,然后单击“确定”按钮,并按提示重新启动该数据库服务。   帐户名的表示方式
为:域名或计算机名\用户帐户名。例如图2-4中的“WESTWIND\SqlServer2005User”,如果该数据库服务器隶属于
域,则“WESTWIND”为该域的域名,“SqlServer 2005User”为域中的域用户帐户,否则“WESTWIND”为计算
机名,“SqlServer2005User”为该计算机中的本机用户帐户。     图2-4 数据库服务属性的“登录”对话框  注
意,如果指定的用户帐户名为本机帐户,则计算机名也可用英文句号“.”来表示本机,此时帐户名可以表式为“.\Sql Server200
5User”。   更改数据库服务的登录身份也可以通过Windows操作系统的“服务”进行,如图1-15所示。但强烈建议不要通过这
种方式来更改数据库服务的运行帐户,因为数据库服务要正常运行,需要其服务帐户至少具备一定的权限,称之为最小权限。   SQL Ser
ver配置管理器是通过将此服务帐户加入到一系列相应的组中来实现赋予该帐户最小权限的。这些组在安装SQL Server 2005时便
已经在计算机或域中创建好了,如图2-5所示。安装程序分别赋予了这些组各自所需的权限。  图2-5 SQL Server 2005
自动在域中创建的组  3) 更改启动模式   在安装SQL Server 2005时,大部分数据库服务的启动模式均设置为“自动”模
式,例如数据库引擎服务,意为当操作系统启动时,该服务将会自动运行,也可按需将其设置为“手动”模式。   设置的方式为:在图2-4所
示的对话框中,单击“服务”标签,在“启动模式”的下拉列表框中选择“手动”并单击“确定”按钮即可,如图2-6所示。设为“手动”启动模
式之后,该服务将不会随操作系统的启动而启动,可以按照本节图2-3所示的方式来手动启动该服务。  如果设为“已禁用”启动模式,那么该
服务将不可用,即使是手动也不能启动该服务。图2-6 更改服务的“启动模式”  4) 查看服务的高级属性   可以通过数据库服务“
属性”对话框的“高级”标签查阅该服务的一些高级特征,如图2-7所示。  图2-7 数据库服务的“高级”属性  2.SQL Ser
ver 2005网络配置   数据库客户端的管理工具要与数据库服务通信,或者数据库服务之间要相互通信,双方之间必须要采用至少一种相
同的通信协议。这就如同计算机网络中,各个主机之间要相互通信,也必须要采用至少一种相同的协议一样。   计算机网络中的协议称为网络协
议,如TCP/IP协议、NWLink IPX/SPX、AppleTalk等。而在SQL Server 2005数据库中,数据库服务
之间的通信协议称为网络库(Net-library)。SQL Server 2005数据库的网络库有以下四种类型:  (1) 共享内
存(Shared Memory)协议:使用共享内存协议的客户端仅可以连接到同一台计算机上运行SQL Server 实例,也就是只适
合于客户端与数据库服务处于相同的计算机上的情形。客户端与数据库服务通过本机共享内存进行通信。   (2) ?TCP/IP协议:TC
P/IP协议是使用最为广泛的协议。当今的Internet网络采用的就是该通信协议。事实上,这也是数据库服务之间使用最广泛的通信协议
,尤其是在数据库服务之间的通信需要跨越慢速网络(如Internet)时更是如此。  (3) 命名管道(Named Pipes)协议
:命名管道是为快速局域网而开发的协议。内存的一部分被某个进程用来向另一个进程传递信息,因此一个进程的输出就是另一个进程的输入。通常
,TCP/IP在慢速LAN、WAN 或拨号网络中效果比使用命名管道要好得多,而当网络速度不成问题时(例如在局域网中),命名管道是更
好的选择,当然,TCP/IP在快速局域网中也运行得相当不错。  (4) 虚拟接口适配器(Virtual Interface Ada
pter,VIA)协议:虚拟接口适配器(VIA)协议和 VIA 硬件一同使用。一般说来,该协议用得很少,只在特定的情况下使用。  
 要配置SQL Server数据库实例所采用的网络协议,就需要用到SQL Server配置管理器的“SQL Server 2005
网络配置”选项。  1) 启用或禁用SQL Server数据库实例的网络协议   打开“SQL Server配置管理器”,在左边树
形图中展开节点“SQL Server 2005网络配置”,将列出安装在该计算机中的所有SQL Server实例的协议,单击其中任一
实例,在右边详细窗格中将列出该实例的网络协议使用情况,如图2-8所示。   要启用或禁用某个协议,右击该协议,在右键菜单中选择“启
用”或“禁用”,按要求重新启动该实例即可生效。  图2-8 SQL Server 2005网络配置选项  为了保证数据库实例的安
全,请尽量将启用的协议数目减至最小。例如,如果访问数据库的客户端与数据库服务处于相同计算机中,则只需要启用“Shared Memo
ry”即可。多启用一个协议,便多增加一个风险点。在默认情况下,安装SQL Server 2005 Express完成之后,该实例就
被设置为只启用“Shared Memory”协议。SQL Server 2005 Express版本的数据库常常被中小企业采用,例
如用来担当这些企业的ASP.NET网站的后台数据库。因为网站的规模不大,所以WEB服务与数据库服务常常由同一台服务器担当,因而启用
“Shared Memory”就足够了。  当然,如果数据库实例与客户端处于不同的计算机,则至少要启用“TCP/IP”或“Name
d Pipes”协议,或同时启用这两种协议。  2) 配置SQL Server数据库实例的网络协议   对于SQL Server实
例所采用的协议,可以对其做进一步的配置。   共享内存(Shared Memory)协议是最简单的协议,不需要对其做任何的配置。
  (1) 配置TCP/IP协议。在默认配置下,SQL Server 2005数据库默认实例采用的TCP端口为1433,其他所有的
命名实例均采用动态端口。   在图2-8所示的对话框中,右击详细窗格中的“TCP/IP”协议,选择“属性”,单击“IP地址”标签,
其中各选项如图2-9所示,该图表明了此数据库实例采用的是动态端口。   可以将数据库实例(包括默认实例)配置为使用静态端口。图2-
10是将数据库实例配置为使用静态端口“1465”的一个例子。     图2-9 使用TCP动态端口
图2-10 使用TCP静态端口  (2) 配置命名管道协议。在图2-8所示的对话框中,右击详细窗格中的
“Named Pipes”协议,选择“属性”,可以查看对应数据库实例的命名管道协议配置情况。数据库默认实例的管道名称一般为“\\.
\pipe\sql\query”,如果是命名实例,则一般为“\\.\pipe\<命名实例名称>\sql\query”。   可以改
变这个设置(这也是微软的建议),例如“\\.\pipe \MSSQL$WESTWINDSQL\WestBM_SQL\query”是
一个经过修改之后的完整的命名管道名称,图2-11是对该命名管道名称的解释。     图2-11 对命名管道名称的解释  3) 配
置SQL Server数据库实例连接加密   默认情况下,数据库客户端组件与数据库实例之间的通信是未经过加密的。但在某些重要场合下
需要对信息安全有极高要求时,就应该对这种双方之间的通信进行加密。   加密是通过极复杂的数学算法将数据更改为不可读的形式来保密敏感
信息的方法。要实现对数据库客户端组件与数据库实例之间的通信进行加密,需要对双方分别进行配置。  (1) 对数据库实例的配置。在图2
-8所示的窗口中,右击左边树形图中“SQL Server2005网络配置”节点下的要进行配置的“<数据库实例>的协议”,选择“属性
”。在“标志”标签中,将“强行加密”设置为“是”,如图2-12所示;在“证书”标签中,在证书下拉列表框中选择数据库实例要使用的证书
,如图2-13所示。然后单击“确定”按钮。    重要说明:如果要配置数据库实例使用证书颁发机构颁发的证书,以及想了解证书与加密
之间的关系,可参阅有关Windows Server 2003操作系统的书籍。     图2-12 设置“强行加密”
图2-13 设置数据库实例使用的证书  (2) 对数据库客户端组件的配置。此部分可参阅接下来对“SQ
L Native Client配置”的描述。  3.SQL Native Client配置   SQL Native Client
主要用来配置客户端组件所使用的网络协议及别名。   1) 配置客户端组件使用的网络协议   要配置客户端组件所使用的网络协议,在“
SQL Server配置管理器”中,展开左边树形图中的“SQL Native Client配置”节点,单击“客户端协议”,在右方详
细窗格中右击要配置的协议,并在右键菜单中单击“启用”或“禁用”即可,如图2-14所示。   也可以右击“客户端协议”,选择“属性”
,然后在弹出的对话框中启用或禁用协议,并且还可以改变客户端使用不同的协议连接到数据库实例时的顺序。  图2-14 配置客户端使用
的网络协议  2) 配置别名   在通过客户端管理工具连接到数据库引擎实例时,需要指定数据库实例的名称。例如在图2-1所示的情景中
,要连接到数据库的默认实例,则指定默认实例的名称为该服务器的计算机名“WestSVR”,若连接到数据库的命名实例,则该命名实例的名
称为“WestSVR\WESTWINDSQL”。这是较为简单的情况,详细的连接名称指定方法可参阅2.6节的上机实验。   除了明确
指定名称之外,为了方便起见(例如为了不必在每次连接时都指定完整的数据库实例名称),还可以给该数据库实例定义别名。别名是可用于进行连
接的备用名称。别名封装了连接字符串所必需的元素,并使用用户所选择的名称显示这些元素。  按如下步骤可创建一个别名:   在图2-1
4所示的窗口中,右击左边树形图中的节点“别名”,选择“新建别名...”,弹出图2-15所示的对话框。该对话框创建了一个名为“WXD
_tcp”的别名。该别名表明连接到一个IP地址为“192.168.1.13”的数据库服务器的默认实例,此默认实例的tcp端口号为“
1433”(这是SQL Server默认实例的默认端口号,因而此处也可省略该端口号),并且使用TCP/IP协议进行连接。   在“
协议”下拉列表框中选择“Named Pipes”则可以创建一个使用命名管道协议连接的数据库别名。   关于如何使用别名连接到数据库
实例,可参阅本章2.6节的上机实验。     图2-15 创建一个使用TCP/IP协议的数据库实例别名  3) 配置客户端为请求
加密连接   如前所述,要实现对客户端组件与数据库实例之间的通信进行加密,除了对数据库实例进行配置之外,还需要在客户端进行配置,以
使客户端组件向数据库实例请求建立一个经过加密的连接。   配置客户端组件为请求加密连接的操作如下:在图2-14所示的SQL Ser
ver配置管理器界面中,右击“SQL Native Client配置”,选择“属性”,然后在该属性对话框中按图2-16所示进行配置
,将“强制协议加密”和“信任服务器证书”都设置为“是”。  图2-16 配置客户端为请求加密连接2.1.2 外围应用配置器  
 为了增强数据库的安全性,在默认情况下,SQL Server 2005数据库的某些功能是关闭的。数据库就好比是一幢建筑,而数据库的
每一项功能就好比是这幢建筑上的一扇门,如果不需要数据库的某项功能,那么最好的方式就是将该扇门关闭,这样可以使数据库这幢建筑获得最好
的安全保证。   如果要启用这些功能,就需要用到“SQL Server外围应用配置器”,可以按如下方式打开它:单击“开始”|“所有
程序”|“Microsoft SQL Server 2005”|“配置管理器”|“SQL Server外围应用配置器”。打开的界面
如图2-17所示。   SQL Server外围应用配置器可以完成以下数据库设置任务。  图2-17 SQL Server外围应
用配置器  1.服务和连接的外围应用配置器   在图2-17所示的“SQL Server外围应用配置器”界面中,单击“服务和连接的
外围应用配置器”,进入服务和连接的外围应用配置器界面,如图2-18所示。   在此界面中,可以选择“按实例查看”或“按组件查看”,
具体可随个人习惯而定。无论选择哪种方式,都将在左边的树形图中列出计算机上已安装的数据库实例及相应的分析服务、报表服务等数据库服务。
  事实上,该配置器能完成的设置都可以在“SQL Server配置管理器”中完成。可以在此配置器中对数据库实例进行启动、停止、暂
停等,也可以设置数据库实例的启动类型为“手动”、“自动”、“禁用”。  图2-18 服务和连接的外围应用配置器  还有其他对数据
库的设置,都可以在“SQL Server配置管理器”中找到与之相对应的操作。例如在图2-18所示的界面中,该界面显示将数据库实例“
WESTWINDSQL”配置为允许“本地连接和远程连接”,并且“同时使用TCP/IP和named pipes”。该设置也可以在“S
QL Server配置管理器”中完成,等效于图2-8中的设置,即启用“WESTWINDSQL”实例的TCP/IP协议和Named
Pipes协议。    什么是“本地连接”和“远程连接”?   ? 本地连接:数据库客户端组件与数据库服务组件(例如数据库实例引擎
、分析服务、报表服务等)位于同一服务器内,双方之间只需要“Shared Memory”协议就可以建立通信的连接。当然,如果需要,也
可以指定为通过TCP/IP或Named Pipes协议建立连接。   ? 远程连接:数据库客户端组件与数据库服务组件(例如数据库实
例引擎、分析服务、报表服务等)分别位于不同的计算机上,计算机之间可能是通过局域网建立的连接,也可能是通过广域网(如Internet
)建立的连接。此时双方之间要建立通信连接,至少需要数据库服务器端启用TCP/IP协议或Named Pipes协议中的一种,或同时启
用这两种协议。  鉴于以上原因,服务和连接的外围应用配置器对数据库的配置操作就不再此做过多描述,请读者自行尝试其使用方法。  2.
功能的外围应用配置器   在图2-17所示的“SQL Server外围应用配置器”界面中,单击“功能的外围应用配置器”,进入功能的
外围应用配置器界面,如图2-19所示。   注意,在使用此功能的外围应用配置器时,计算机中需要至少一个数据库服务处于“启动”状态方
可正常打开,否则会出现错误提示,如图2-20所示。   默认情况下,图2-19左边树形图中所显示的数据库功能都是处于禁用状态的(如
前所述,这是为了增强数据库的安全)。若要启用某项功能,则在左边树形图中单击选中该项功能,然后在右边窗格中勾选复选框标记以启用该项功
能。  图2-19 功能的外围应用配置器设置界面  图2-20 “功能的外围应用配置器”的错误消息  由于这些功能都属于SQL
Server 2005数据库的较高级功能,对于初学者而言,没有必要在此花较多篇幅去描述这些功能本身的作用,目前只需要知道如何启用
、禁用这些特殊的功能即可。2.1.3 SQL Server管理控制台   SQL Server管理控制台(Management
Studio)是SQL Server 2005数据库最重要、功能最强大的管理工具,完全替代了先前版本SQL Server 2000
所附带的管理工具“SQL Server查询分析器”和“SQL Server企业管理器”。   本节限于篇幅,不可能对SQL Ser
ver Management Studio进行详细的描述,而且对于初学者而言,在接触数据库之初就对这种强大的数据库管理工具进行各方
面详细的描述学习是一种本末倒置的做法。这种管理工具的很多特征只有在掌握了数据库本身的相关知识点之后才能较好地理解,因而对SQL S
erver Management Studio的学习是贯穿整个数据库学习始终的。 就目前而言,只需要掌握该管理控制台的一些常见的
管理任务即可。   可以按如下方式打开SQL Server Management Studio:   单击“开始”|“所有程序”|
“Microsoft SQL Server 2005”|“SQL Server Management Studio”,首先将弹出“
连接到服务器”的对话框,如图2-21所示。     图2-21 “连接到服务器”对话框  (1) 服务器类型。连接时需要选择要连
接的数据库服务的类型,总共有以下五种选择(如图2-22所示):   ? 数据库引擎   ? 分析服务(Analysis Servi
ces)   ? 报表服务(Reporting Services)   ? ?SQL Server 精简版本(Compact Ed
ition)   ? 综合服务(Integration Services)   本书主要是讲解数据库引擎,因此大部分均为连接到数据
库引擎。  图2-22 连接的数据库服务的类型  (2) 服务器名称。连接到数据库服务时需要指定服务器的名称,下面以图2-1为例
说明服务器名称的格式(此处为了简约只说明本地连接的情况)。   ? 默认实例:数据库默认实例的名称即为该服务器的计算机名。所以在图
2-1中该默认实例的服务器名称为WestSVR。   ? 命名实例:数据库命名实例的名称格式为数据库服务器的计算机名\命名实例名称
,所以在图2-1中该命名实例的服务器名称为WestSVR\WESTWINDSQL。   注意,服务器名称不用区分字母的大小写。有关
如何指定远程连接的服务器名称的详细内容,可参阅2.6节的上机实验。  (3) 身份验证。SQL Server 2005数据库服务有
以下两种身份验证方式(如图2-23所示):   ? ?Windows身份验证   ? ?SQL Server身份验证   有关这两
种身份验证方式的详细介绍可参阅第5章。如果不做任何说明,本书默认的身份验证方式均为“Windows身份验证”。   在图2-21中
单击“连接”按钮即可连接到数据库服务器“WestSVR”的默认实例,如图2-24所示。  图2-23 SQL Server身份验
证方式     图2-24 SQL Server管理控制台界面  下面简要介绍SQL Server Management Stu
dio的一些主要的常用项目。   1.菜单栏   在SQL Server管理控制台的菜单栏中,有以下一些常用的项目:   1) “
文件”菜单   在图2-24所示的SQL Server管理控制台界面中,单击菜单栏中的“ ”菜单,将列出文件菜单中的项目,如图2
-25所示。  (1) “文件”|“连接对象资源管理器(E)...”:可打开图2-21所示的“连接到服务器”对话框,可以通过这种方
式连接到多个数据库服务对象。成功建立了连接的服务器对象将会显示在“对象资源管理器”窗口中。   (2) “文件”|“断开与对象资源
管理器的连接(D)”:断开与在“对象资源管理器”窗口中被选中的数据库服务对象的连接。   (3) “文件”|“新建”|“项目(P)
...”:创建SQL Server数据库项目,该项目是包含在数据库解决方案中的,可创建三种类型的数据库项目,分别为“SQL Ser
ver脚本”、“Analysis Services脚本”、“SQL Compact Edition脚本”。  图2-25 “文件
”菜单列表  (4) “文件”|“新建”|“使用当前连接查询(W)”:建立可运行T-SQL查询语句的窗口,如图2-26所示。“当前
连接”的意思是:在该窗口中运行的SQL语句是以在“对象资源管理器”窗口中被选中的数据库引擎服务对象为目标的。如果在“对象资源管理器
”窗口中没有数据库引擎被选中,则将弹出与图2-21相似的数据库引擎连接对话框。   注意,有关T-SQL查询语言的内容,可参阅2.
4小节。  图2-26 SQL查询窗口  (5) “文件”|“新建”|“数据库引擎查询”:首先弹出与图2-21类似的服务器对象连
接对话框,该对话框的服务器类型固定为“数据库引擎”,其状态为灰色,不可改变。成功建立连接之后,将创建一个新的SQL查询窗口,与图2
-26相同。   在“新建”子项中还可以建立其他类型的查询,读者可参阅SQL联机丛书以了解这些查询的详细信息。   “文件”菜单中
的其他项就不在此做详细说明了,有些属于常见操作,例如“关闭”、“全部保存”等。  2) “编辑”菜单   “编辑”菜单中的选项均属
于常见操作,例如“剪切”、“复制”、“粘贴”等,因而不在此做详细说明。   3) “视图”菜单   “视图”菜单中的选项主要用于决
定在SQL Server管理控制台的主界面中显示哪些管理器,以及在“工具栏”中显示哪些快捷按钮,可参阅图2-27的说明。     
图2-27 “视图”菜单选项  4) “工具”菜单   “工具”菜单中的选项主要用于调出SQL Server的性能监视工具以及设
置工具栏快捷按钮和主界面的显示环境,其选项如图2-28所示。   “工具”菜单的主要选项说明如下:   (1) “工具”|“SQL
Server Profiler(P)”:用于调出SQL Server事件探查器(SQL Server Profiler)。SQL
Server事件探查器是SQL跟踪的图形用户界面,用于监视SQL Server数据库引擎或SQL Server分析服务的实例,可
以捕获有关每个SQL Server事件的数据并将其保存到文件或表中供以后分析。图2-28 “工具”菜单选项  (2) “工具”|
“数据库引擎优化顾问”:用于调出数据库引擎优化顾问管理工具。SQL Server 2005 数据库引擎优化顾问可帮助数据库管理者非
常容易地选择和创建索引、索引视图和分区的最佳集合。   (3) “工具”|“选择工具箱项(X)...”:用于显示已经在数据库服务器
上注册的所有维护任务组件的列表,可以通过此选项更改工具箱中所显示的组件。用于选择是否启用各种维护任务,例如备份数据库等。每种维护任
务都与SQL Server相应的程序集(即注册的组件,以dll为后缀的动态链接库)实现。一般不需要对其进行更改。  (4) “工具
”|“外部工具(E)...”:用于外挂其他第三方的数据库管理工具,这些外部工具可以以插件的形式挂于SQL Server Manag
ement Studio上。插件是目前各种管理开发工具用于扩展自身的一种非常普遍的方式。   (5) “工具”|“自定义(C)..
.”:用于设置显示哪些工具栏(包括菜单),以及在工具栏中显示哪些快捷按钮。这些快捷按钮可以通过简单的拖放操作来实现添加或移除。  
 (6) “工具”|“选项(O)...”:用于设置主界面各管理器的表现形式,例如查询分析器的字体颜色,查询结果的显示方式等等。大部
分情况是不用更改这些选项的,除非有特别需要。   5) “窗口”菜单   “窗口”菜单中的选项主要用于主界面中各管理窗口的显示方式
,例如浮动、可停靠等,如图2-29所示。  图2-29 “窗口”菜单选项  6) “社区”菜单   “社区”菜单提供了一个SQL
Server 2005使用者与微软公司相互交流的平台,使用者在使用SQL Server 2005的过程中遇到的问题或疑问可通过此
种方式反馈给微软公司。   7) “帮助”菜单   “帮助”菜单可调出SQL Server 2005联机丛书。    注意:SQL
Server管理控制台中的菜单选项并不是一成不变的。菜单选项将会随着主界面中被操作对象的不同而有所不同,即这种操作界面也是面向对
象的,对象不同则其有关的操作也不同,因而界面菜单的选项也有所不同。例如,当打开一个运行查询分析的窗口时,菜单选项中将多出“查询”和
“项目”菜单。  2.工具栏   工具栏是实现各种管理任务的快捷按钮的集合。SQL Server管理控制台提供了很多已经组合好的工
具栏,而且这些工具栏是可以高度定制的,简单地说就是自己想要哪些工具栏就显示哪些工具栏,每个工具栏中要显示哪些按钮也都可以通过简单的
拖放操作实现。图2-30和图2-31显示了“标准”工具栏和“SQL编辑器”工具栏中的按钮。图2-30 “标准”工具栏  图2-3
1 “SQL编辑器”工具栏  工具栏的定制可以通过菜单“工具”|“自定义(C)...”实现,也可以单击工具栏右边的按钮“
”,然后在弹出的菜单中选择相应的选项来实现,如图2-32所示。     图2-32 添加或移除工具栏中的按钮  3.S
QL Server管理控制台主界面   “视图”菜单中的各管理器及各窗口均会显示在管理控制台的主界面中,如果在主界面中没有显示,则
可单击“视图”菜单中相应的选项。例如,如果要在主界面中显示“对象资源管理器”,可单击“视图”菜单中的“对象资源管理器(J)”。  
 为了节约主界面的空间,也为了布局得更加简洁明快,各管理器窗口可以按照需要设计成不同的布局方式。可以右键单击管理器窗口的标题栏查看
或指定这些布局方式(也可以单击标题栏右方的“ ”标志按钮),如图2-33所示。该右键菜单与“窗口”菜单中的选项相对应
。图2-33 各管理器的窗口布局方式  1) 浮动   如果将管理器窗口的布局方式设置为“浮动”,则该窗口可自由在SQL Ser
ver管理控制台界面中移动,也可经拖曳操作调整大小。   2) 可停靠   如果将管理器窗口的布局方式设置为“可停靠”,则该窗口除
了可自由在SQL Server管理控制台界面中移动之外,也可以以鼠标拖动的方式选择停靠在主界面的左、上、右或下方,或以“选项卡式文
档”的方式停靠。其说明如图2-34所示。     图2-34 “可停靠”布局方式说明  3) 选项卡式文档   “选项卡式文档”
以标签的形式来布局窗口。图2-35是“选项卡式文档”的布局方式。   4) 自动隐藏   当管理器窗口的布局方式设置为“自动隐藏”
时,该窗口将自动隐藏到主界面的左、右或下方,如图2-36所示。  图2-35 “选项卡式文档”布局方式  
  图2-36 隐藏于左方和右方的管理器窗口  当鼠标停留于某自动隐藏的管理器窗口的图标上时,该管理器将自动展
开,然后可以像平常一样操作,当鼠标离开并单击于其他空白地方时,该管理器将再次自动隐藏。   也可以单击管理器窗口标题栏右方的“  
 ”图钉标志,当此图钉标志形状为“   ”时,表示窗口为自动隐藏;当为“   ”形状时,表示窗口“钉”于此处,不能自动隐藏,这时窗
口状态为“可停靠”。  5) 隐藏   当设置管理器窗口的布局方式为“隐藏”时,相当于关闭该窗口。若要再次重新显示该窗口,可单击“
视图”菜单中的相应选项。2.1.4 sqlcmd管理工具   前面讲述的数据库管理工具都是基于图形用户界面,图形用户界面的管理大
大方便了数据库管理员对数据库的管理工作。例如,若要启用数据库引擎的邮件功能,只需在图2-19所示功能的外围应用配置器中,单击左边树
形节点中的“       ”,勾选右边的选项“                 ”,然后单击“确定”或“应用”按钮就完成了整个配置
。  在这个配置过程中,对于数据库引擎而言,它并不知道也不关心到底是谁让其启用数据库邮件功能,只知道自己接收到一个命令,然后执行这
个命令,于是就启用了数据库邮件这个本来没有启用的功能。而这个命令其实就是一段SQL语言程序,数据库引擎只识别SQL语言,至于SQL
语言是谁发送给它的(当然发送者得有权限这样做),它并不关心。  事实上,在这个例子中,当单击“确定”或“应用”按钮时,“功能的外围
应用配置器”其实也是发送了一段SQL语言给数据库引擎,这一段SQL语言就是命令数据库引擎启用其数据库邮件功能的。只是对于数据库管理
员而言,或许并不需要知道这一段SQL语言(只需要知道完成如上所述的简单勾选单击操作即可),如果知道,数据库管理员就可以直接将这一段
SQL语言发送给数据库引擎并使其执行,同样可以达到启用数据库邮件功能的这个目的。  可以在SQL Server管理控制台(Mana
gement Studio)的新建查询窗口中,也可以通过本节要介绍的“sqlcmd”管理工具中将这一段SQL语言发送给数据库引擎使
其执行。   sqlcmd是一个基于命令提示符的SQL Server管理工具,在SQL Server 2000中与之相对应的工具为
osql。在SQL Server 2005中,用改进的sqlcmd取代了osql。   在命令提示符中输入下列语句可查询sqlcm
d的语法功能:   sqlcmd -?   完整的sqlcmd语法还有很多,有些较为复杂,本小节只介绍该命令的最常用的几个参数选项
。  下面以图2-1为例,以“本地连接”的方式演示sqlcmd的用法,即在数据库服务器WestSVR上运行sqlcmd管理工具。
  (1) 以提供用户名和密码的方式连接到数据库服务器WestSVR的默认实例:打开“开始”|“所有程序”|“附件”|“命令提示符
”,然后输入图2-37所示的命令并回车(其语法说明也在该图中)。     图2-37 以提供用户名和密码的方式连接到数据库  (
2) 以信任连接的方式连接到数据库服务器WestSVR的默认实例:信任连接的方式与前一种连接方式的不同仅仅在于将“-U sa -P
password”替换为“-E”,如图2-38所示。   成功地与数据库引擎建立了连接之后,就可以在标志符“1>”之后输入SQL
语句,数据库引擎将会运行这些SQL语句。SQL语句以批处理的方式执行,每一批SQL语句以“GO”结束,当输入“GO”并回车时,当前
“GO”与上一个“GO”之间的SQL语句就作为一批一起执行(相当于后面要描述的T-SQL语言中的“BEGIN”和“END”之间的语
句)。当然,如果当前“GO”即为第一个“GO”,则当前“GO”与第一行(“1>”)之间的SQL语句(包括第一行)作为一批执行。  
  图2-38 以信任连接的方式连接到数据库  若要通过sqlcmd管理工具来启用数据库服务器WestSVR默认实例的数据库邮
件功能,可在sqlcmd界面中执行图2-39所示的操作,该图中的“sp_configure”是一个专门用来配置数据库实例的系统存储
过程,有关存储过程的内容将于第6章进行介绍。   由此可见,通过sqlcmd管理工具来管理数据库要比通过图形用户界面的管理工具复杂
许多。本节不再过多介绍sqlcmd的内容,读者如果感兴趣,可参阅SQL Server 2005联机丛书。  图2-39 通过sq
lcmd管理工具启用数据库引擎的邮件功能2.1.5 SQL Server 2005示例数据库   每一个版本的SQL Serve
r均附带示例数据库,否则就无法编写SQL Server联机丛书。SQL Server联机丛书描述的每一个SQL Server知识点
几乎都是基于其示例数据库来讲解的,因而示例数据库对于我们对联机丛书的理解是相当重要的。   SQL Server 2000版本附带
的示例数据库有两个,分别为Northwind和Pubs。这两个数据库的规模都比较小,其中的表也不多。到了SQL Server 20
05版本,微软将其更换为另外两个庞大的数据库AdventureWorks和AdventureWorksDW。不过在默认情况下,SQ
L Server 2005安装程序不会自动安装这两个数据库,如图2-40所示。当然,也可以在安装的过程中选择将其安装。     图
2-40 安装SQL Server 2005示例数据库  如果SQL Server 2005已经安装完毕,并且没有选择安装这两个
示例数据库,那么以后如果需要这两个数据库时,可以按以下两种方式的任意一种获得这两个示例数据库:   (1) 重新运行SQL Ser
ver 2005安装程序,在安装过程中,选择只安装示例数据库,如图2-40所示,然后按安装提示运行整个安装过程。   (2) 到微
软官方网站下载这两个数据库。注意,下载完毕之后,需要将这两个数据库附加到数据库实例中才可用,本书将在第4章介绍有关如何附加数据库的
知识点。     在创建数据库之前,有必要先对数据库的基本组成作一个初步的了解。 2.2.1 数据库文件   正如文档编辑软
件用于将输入的信息保存到物理文件中一样,数据库最终也是将数据库的信息保存到物理文件中。从操作系统的角度来看,这个文件就是普通的操作
系统文件。SQL Server 2005 将数据库映射为一组操作系统文件,这就是数据库文件。数据库文件分为以下两类:2.2 数据
库基本组成  (1) 数据文件。数据文件分为主数据文件和从数据文件。   ? 主数据文件:一般用扩展名“MDF”进行标识,不过这并
不是必需的,扩展名可有可无,但推荐采用该扩展名标识主数据文件。主数据文件用来存放数据库表、索引以及数据库的启动信息,包括系统表。主
数据文件是数据库的起点,指向数据库中的其他文件。每个数据库都有且只有一个主数据文件。   ? 从数据文件:一般用扩展名“NDF”进
行标识,也可以为其他的扩展名,不过这不是必需的,也可以没有。数据库可以没有从数据文件,也可以有多个从数据文件。从数据文件主要用于当
数据库文件跨越多个硬盘驱动器时。   当数据库中只有一个数据文件时,则该文件一定是主数据文件,否则除主数据文件之外,其余文件都是从
数据文件。   (2) 日志文件。每个数据库必须至少有一个日志文件,也可以有多个日志文件。日志文件包含着用于恢复数据库的所有日志信
息。日志文件没有主从之分。建议使用“LDF”扩展名来标识日志文件,同样这也不是必需的,该扩展名可有可无,也可以不是“LDF”而采用
其他扩展名。   每一个数据库文件(包括数据文件和日志文件),都有一个逻辑文件名和一个物理文件名。在SQL语言中,需要使用逻辑文件
名来指定该数据库文件,而如果要在操作系统中指定该数据库文件,就需要使用该数据库文件的物理文件名。逻辑文件名可以任意指定,只要该名称
符合标识符的一般规则(有关标识符规则的内容,可参阅2.4小节),物理文件名其实就是该文件完整的文件路径。图2-41显示了一个主数据
文件和日志文件的逻辑文件名和物理文件名的例子。     图2-41 数据库文件的逻辑文件名与物理文件名  【实践操作一】 查阅
示例数据库AdventureWorks的数据库文件。该数据库服务器的配置环境如图2-1所示。   可按如下操作进行:   (1)
以数据库服务器WestSVR管理员的身份登录服务器,单击“开始”|“所有程序”|“Microsoft SQL Server 200
5”|“SQL Server Management Studio”。   (2) 在“连接到服务器”对话框中选择服务器类型为“数据
库引擎”,服务器名称为“WestSVR”,身份验证为“Windows身份验证”,单击“确定”按钮。   (3) 在“对象资源管理器
”中展开节点“WestSVR”|“数据库”,右击节点“AdventureWorks”,在右键菜单中选择“属性”。   (4) 在“
数据库属性”对话框中单击左侧节点“文件”,右方列出数据库文件的详细信息,如图2-42所示。     图2-42 Adventur
eWorks数据库文件  在创建数据库时,需要给数据文件和日志文件指定一个初始大小。数据文件的初始大小默认值为3?MB,日志文件的
初始大小默认值为1?MB。当该初始大小容量已经容纳不下新的信息时,数据库文件就开始自动增长,数据库文件将以创建该数据库时设置的自动
增长方式增长。数据库文件有以下两种自动增长方式:   ? 按百分比。例如,假设数据库文件的初始大小为10?MB,自动增长设为10%
,则数据库文件的第一次增长值为:10×10%=1?MB,以后的每次增长值均为先前的数据库文件大小乘以该百分比值。日志文件默认为按1
0%增长。  ? 按MB。数据库文件每次增长都将按照指定的固定值增加,例如假设该值为10?MB,则数据库文件每次增长的值均为10?
MB。数据文件默认为按1?MB固定值增长。   数据库文件还可以指定“最大文件大小”值。当数据库文件的大小到达该值时,数据库将停止
增长,但同时数据库也将不能再容纳新加入的信息。该值默认为“不限制增长”,那么此时数据库文件的大小只受物理硬盘大小的限制。   有关
数据库文件自动增长方式及最大文件大小的内容,可参阅2.3节。2.2.2 数据库表   数据库是由一张一张的表构成的,数据库中所有
数据的数据库对象信息都存放在相应的表中。数据在表中的组织方式与在电子表格中相似,都是按行和列的格式组织的。每一行代表一条唯一的记录
,每一列代表记录中的一个字段。例如,在包含公司雇员数据的表中,每一行代表一名雇员,各列分别代表该雇员的信息,如雇员编号、姓名、地址
、职位以及家庭电话号码等。  数据库中的表由下列组件构成:   1.列   每一列(Column)代表由表建模的对象的某个属性,也
称一个字段。例如,一个雇员包含姓名、性别、出生日期等属性,这些属性分别由表中的一列表示。在设计表时,要给该列指定合适的数据类型,在
该列中只能存放指定数据类型的数据。如图2-43所示,该图是示例数据库AdventureWorks中的表“HumanResource
s. Employee”的一部分记录。  2.行   每一行(Row)代表由表建模的对象的一个单独的实例,也称一条记录(Recor
d)。每一行代表该表中记录的一个对象,如图2-43所示的表中,每一行代表一个雇员。     图2-43 AdventureWor
ks中的“HumanResources. Employee”表2.2.3 系统数据库   SQL Server 维护一组系统级数
据库(称为“系统数据库”),这些数据库对于服务器实例的运行至关重要。因为数据库实例的配置信息都保存在这些系统数据库中,例如,在该实
例中新创建的数据库、该数据库所对应的数据库文件、该数据库中新创建的表等诸多信息均存放于系统数据库中。每一个数据库实例均包含表2-1
中所示的几个重要的系统数据库。  表2-1 几个重要的系统数据库    注意,数据文件和日志文件的默认位置为C:\Program
Files\Microsoft SQL Server\Mssql.n\MSSQL\Data,其中n是SQL Server 实例的
序号。如果安装SQL Server时更改了默认位置,则此位置可能会变化。如图2-44所示,“mssqlsystemresource
.ldf”、“mssqlsystemresource.mdf”也是一个系统数据库“Resource”的文件,不过该数据库是只读的,
不可直接操作。图2-45为数据库实例中的系统数据库。     图2-44 系统数据库的数据文件和日志文件
图2-45 数据库实例中的系统数据库     创建数据库的过程并不复杂,尤其是通过SQL Server管理
控制台(Management Studio)进行创建。下面介绍如何在管理控制台中创建数据库,以图2-1所示的数据库服务器WestS
VR为例。2.3 使用SQL Server Management Studio创建数据库  1.通过SQL Server Man
agement Studio创建数据库的简单方式   该方式可以简单到只需要输入一个数据库名后单击“确定”按钮就可以完成整个创建过
程。具体步骤如下:   (1) 以数据库服务器WestSVR管理员的身份登录服务器,单击“开始”|“所有程序”|“Microsof
t SQL Server 2005”|“SQL Server Management Studio”,然后连接到该数据库服务器的默认
实例(如果默认实例尚未启动,可通过SQL Server配置管理器启动该实例,然后再连接)。  (2) 在“对象资源管理器”中展开节
点“WestSVR”,右击节点“数据库”,在右键菜单中选择“新建数据库(N)...”,在弹出的“新建数据库”对话框中的“数据库名称
”栏内输入数据库名称“Wxdstudent”,单击“确定”按钮即可完成整个数据库的创建。   事实上,创建数据库时只提供一个数据库
名称是不够的,上述操作之所以能够顺利完成,是因为创建数据库所需要的其他信息已经在该对话框中默认提供了,例如数据库文件的初始大小、文
件存放位置、文件以何种方式增长等。这种方式创建的数据库,其数据库文件将按默认位置存放在该数据库实例的data文件夹中,如图2-46
所示。  图2-46 数据库文件的默认存放位置  下面以一个实例来介绍创建数据库的一般方式。   2.通过SQL Server管
理控制台创建数据库的一般方式   【实践操作二】 数据库服务器的配置环境如图2-1所示。试在该服务器上通过SQL Server管
理控制台按以下要求创建数据库:   ? 该数据库的名称为“Wxdstudent”。   ? 数据库文件的逻辑名及物理文件名要求如图
2-41所示。   ? 数据文件初始大小为10?MB,按5?MB固定值增长;日志文件初始大小为5?MB,按50%的百分比值增长。
  ? 数据库文件的大小均不受限制。  该实践操作的步骤如下:   (1) 按创建数据库的简单方式所描述的步骤,打开“新建数据库”
对话框。   (2) 在“数据库名称”栏内输入数据库名称“Wxdstudent”。在“数据库文件(F)”表格中,将数据文件的逻辑名
称改为“WxdStudent_MNG”,初始大小设为10,单击自动增长的设置按钮“    ”,在弹出的对话框中,按图2-47所示进
行设置,单击路径的设置按钮“    ”,将路径设置为“C:\WxdDatabaseFiles”(如果没有该文件夹,请先将其创建好)
。将日志文件的逻辑名称改为“WxdStudent_LOG”,初始大小设为5,按照与设置数据文件相同的方式,将日志文件的自动增长方式
设置为按50%增长,并且不限制文件大小,将路径同样设置为“C:\WxdDatabaseFiles”。设置完毕之后如图2-48所示。
     图2-47 设置数据文件的自动 图2-48 新建数据库对话框图2-4
9 成功地创建了数据库  (3) 单击“确定”按钮,将成功创建该数据库。在“对象资源管理器”中展开“数据库”节点,可查看到新创建
的数据库“WxdStudent”,如图2-49所示。打开文件夹“C:\WxdDatabaseFiles”可查看到该数据库的数据文件
和日志文件。   此外,在创建数据库时,还可以在“新建数据库”对话框中通过单击“添加”按钮来添加多个数据文件和日志文件,可以在“文
件组”选项中添加多个文件组,并将相应的数据文件指派到相应的文件组中。日志文件没有文件组的概念,文件组只对数据文件适用。    
 本小节介绍使用SQL(Structure Query Language,结构化查询语言)语言来创建数据库。 2.4.1 T-S
QL简介   SQL语言是全球数据库的通用语言。国际标准化组织(ISO)和美国国家标准协会(ANSI)负责定义SQL 语言的标准,
目前该标准为SQL-92。微软公司在设计其SQL Server时,对该SQL语言标准进行了一些补充,形成了自己的SQL语言,即为T
ransact-SQL语言,通常又简称为T-SQL语言。2.4 使用T-SQL语言创建数据库  T-SQL 语言用于管理SQL
Server数据库引擎实例,创建和管理数据库对象,以及插入、检索、修改和删除数据。   T-SQL语言是使用SQL Server的
核心。与SQL Server实例通信的所有应用程序都通过将T-SQL语句发送到数据库服务器(不考虑应用程序的用户界面)来实现其目的
。这一点在本章2.1.4节介绍sqlcmd管理工具时已有所提及。2.4.2 T-SQL语法及变量说明   T-SQL语言是对数据
库或数据库对象执行某些操作的代码集合,这些代码基本可以分为三种类型:DDL(Data Definition Language,数据
定义语言)、DCL(Data Control Language,数据控制语言),DML(Data Manipulation lan
guage,数据操作语言)。   (1) 数据定义语言(DDL):属于数据库管理系统的一部分,用于定义和管理数据库对象的属性,包括
行的布局、列的定义、主键列、数据库文件的位置等。DDL分为下列三种语句形式:  ? ?CREATE<对象名>:用于创建数据库对象。
  ? ?ALTER<对象名>:用于修改数据库对象。   ? ?DROP<对象名>:用于删除数据库对象。   本节将介绍CREA
TE DATABASE语句,用以创建数据库,其余语句将在后续章节陆续介绍。  (2) 数据控制语言(DCL):用于控制对数据库对象
的访问权限,这与Windows系统中控制用户或组对文件(或其他对象)的访问权限很相似。DCL有下列三种语句形式:   ? ?GRA
NT:用于将数据库对象的操作权限授予数据库中的用户。   ? ?REVOKE:用于吊销数据库用户已经拥有的对数据库对象的某些操作权
限。   ? ?DENY:拒绝数据库用户对数据库对象的某些操作权限。   DCL语言将于第5章SQL Server安全性管理中介绍
。  (3) 数据操作语言(DML):用于检索、插入、修改、删除数据库中的数据。DML语句有以下四种形式:   ? ?SELECT
:用于从数据库表中检索出用户所需要的行和列。   ? ?INSERT:用于向数据库表中插入行(记录)。   ? ?UPDATE:用
于修改数据库表中的记录。   ? ?DELETE:用于删除数据库表中的记录。   DML将于第3章起开始陆续介绍。  T-SQL语
言可以通过sqlcmd管理工具运行,也可以通过应用程序将其发送给数据库引擎运行(例如应用程序通过ADO.NET技术与数据库交互,应
用程序可以是窗体程序,也可以是ASP.NET网页),不过在设计调试阶段,最容易的方式是在SQL Server Management
Studio中运行。该方式可通过以下步骤实现:   (1) 单击“开始”|“所有程序”|“Microsoft SQL Serve
r 2005”| “SQL Server Management Studio”,然后连接到该数据库服务器的某个实例。  (2) 单
击工具栏中按钮“       ”(或菜单“文件”|“新建”|“使用当前连接查询(W)”),将在主界面中以标签的形式打开一个查询窗口
。在此查询窗口输入T-SQL语句,然后单击工具栏按钮“     ”(或菜单“查询”|“执行(X)”,或按下快捷键F5,或组合键Ct
rl+E),就会运行查询窗口中的T-SQL语句,如图2-50所示。如果在查询窗口只需要运行某一段而不是所有的T-SQL代码,则先将
该段代码高亮选中,然后再运行,此时将只运行选中的代码段,如图2-51所示。     图2-50 运行查询窗口中的T-SQL语
句 图2-51 运行高亮选中的T-SQL代码段    如果对代码中的某个关键字语法不熟悉,例如“SELE
CT” ,可以在查询窗口中将该关键字高亮选中,然后同时按下Shift+F1键,将会打开SQL Server联机丛书,并显示该关键字
的说明。   下面对T-SQL的语法作简要说明。注意,为了方便对T-SQL语法的描述,需要用到一些SQL语句作为示例,此处只对这些
语句作简单说明,至于其详细具体含义,可参阅后续相关章节中的介绍。   T-SQL语言含有一系列的语法元素,这些语法元素包括标识符、
数据类型、变量、运算表达式、控制流语句以及注释语句等。  1.标识符   标识符(Identifiers)也就是数据库对象的名称,
就好像我们每个人都有名字一样,数据库对象都有其名称,该名称即为其标识符。Microsoft SQL Server 2005中的所有
内容都可以有标识符。服务器、数据库和数据库对象(例如表、视图、列、索引、触发器、过程、约束及规则等)都可以有标识符,前面章节中的数
据库默认实例名“WestSVR”以及命名实例名“WestSVR \WESTWINDSQL”均为标识符。大多数对象要求有标识符(例如
表、列),但对有些对象(例如约束),标识符是可选的(但是即便如此,如果没有明确给这些对象定义标识符,数据库系统仍会自动为其赋予标识
符以对其进行识别)。  对象标识符是在定义对象时创建的,标识符随后用于引用该对象。例如,下列代码清单2-1的语句在数据库中创建一个
标识符为Student的表,该表有两列,这两列的标识符分别是StudentID 和StudentName。   1) 标识符格式规
则   给数据库对象定义标识符时,标识符必须符合标识符格式规则。标识符格式规则包含以下要求:   (1) 第一个字符必须是下列字
符之一:   ● ?Unicode标准3.2所定义的字母。Unicode中定义的字母包括拉丁字符a~z和A~Z,以及来自其他语言
的字母字符。   ● 下划线(_)、at符号 (@) 或数字符号(#)。例如“Student234”、“_Student”、“#S
tudent”均为格式正确的标识符,而“234Student”、“Student”不符合标识符的格式规则要求。  (2) 后续字
符可以包括:   ● ?Unicode标准3.2中所定义的字母。   ● 基本拉丁字符或其他国家/地区字符中的十进制数字。   ●
?at符号、美元符号($)、数字符号或下划线。   (3) 标识符一定不能是T-SQL的保留关键字。SQL Server 可以保
留大写形式和小写形式的保留关键字。保留关键字即为T-SQL语句中一些具有特殊意义的关键字,例如前述的“CREATE”、“ALTER
”、“SELECT”等均为保留字。打开SQL Server 2005联机丛书,在索引中键入“关键字”,可查阅SQL Server
2005所有的保留关键字。  (4) 不允许嵌入空格或其他特殊字符。   在T-SQL语句中使用标识符时,不符合这些规则的标识符必
须由双引号或括号分隔,也即需要用到标识符种类中的“分隔标识符”。  2) 标识符的种类   标识符有以下两类:   (1) 常规标
识符:符合标识符格式规则的标识符,例如在代码清单2-1中,不需要使用特殊的符号来界定“Student”、“StudentID”、“
StudentName”,因为这些标识符都是符合标识符格式规则的。  (2) 分隔标识符:对于那些不符合标识符格式规则的标识符,例
如包含有空格、保留字的标识符,必须将其包含在分隔标识符——双引号("")或者方括号([])之内,如代码清单2-2所示(注意“--”
符号为行代码注释说明,这些注释说明之后的语句不会实际运行,请参阅本节代码注释)。如果标识符符合标识符的规则,则可以将其包含在分隔标
识符内,也可以不需要分隔标识符,如前述代码清单2-1也可以改写为代码清单2-3的形式。    在一般情况下,请尽量使标
识符符合其常规规则,而不要在其中加入空格或保留字等其他不符合该规则的元素,这样对数据库的整体设计有极大好处。  2.数据类型(Da
ta Types)   包含数据的对象都有一个相关联的数据类型,它定义对象所能包含的数据种类,例如字符、整数或二进制。下列对象具有
数据类型:   ? 表和视图中的列   ? 存储过程中的参数(参见第6章介绍存储过程)   ? 变量   ? 返回一个或多个特定
数据类型数据值的T-SQL函数  为对象分配数据类型时可以为对象定义如下四种属性:   ? 对象包含的数据种类   ? 所存储值的
长度或大小   ? 数值的精度(仅适用于数字数据类型)   ? 数值的小数位数(仅适用于数字数据类型)   在表2-2中,列出了S
QL Server 2005中常用的一些数据类型。对于初学者而言,此时可先对它作个了解,不必拘泥于细节,因为现阶段也不太可能对其有
深刻的理解,以后在SQL代码中遇到这些数据类型时,再回头查阅也不迟。  表2-2 SQL Server 2005常用数据类型续表
(一) 续表(一) 续表(二)   3.运算符表达式   运算符是一种符号,用来指定要在一个或多个表达式中执行的
操作。所有的程序语言都有运算符表达式(Expressions),而且彼此差别不大。表2-3列出了SQL Server 2005所使
用的运算符类别。  表2-3 SQL Server 2005运算符类别续表 续表   4.变量   所有的程序语言都
包含有变量(Variables)的概念,T-SQL语言也不例外。程序在运行时所需要用到的某些数据可以暂时存放在变量中。定义变量时,
必须要同时定义该变量的数据类型,此后这个变量只能用于存放该数据类型的数据值。  1) 变量的声明   使用变量之前,必须对变量进行
声明。在T-SQL语言中,声明变量的格式如下:   DECLARE <变量标识符> <数据类型>   变量的标识符(即变量的名称)
应当符合常规标识符的规则,并且变量名称必须以“@”符号开头,变量名不区分大小。例如,要声明一个名为“@EmployeeID_VAR
”,数据类型为整数类型INT的变量,可用下列T-SQL语言表示:   DECLARE @EmployeeID_VAR INT  2
) 对变量的赋值   在对变量声明完毕之后,就可以用该变量保存数据了,这就是给该变量赋值的过程。对变量进行赋值的语法如下:   S
ET <变量标识符> = <数据值>   例如,要将整数“3”赋予前述声明的变量“@EmployeeID_VAR”,可用下列语句表
示:   SET @EmployeeID_VAR = 3   下面将以上代码组合成一个比较完整的例子,如代码清单2-4所示(注意不
要输入每行左边的行号,例如1:)。   在上述代码中,第1行将Adventureworks数据库设为当前要操作的数据库,第
2行声明变量“@EmployeeID_VAR”,然后在第4行对其进行赋值,在第6行将此已赋值的变量加入WHERE子句中,作为WHE
RE子句的一个检索条件。运行上述T-SQL语句,将得到EmployeeID为4的雇员记录。    默认情况下,SQL Server
管理控制台的T-SQL查询语句窗口不会显示SQL语句的行数,如果需要,可以按下述方法启用该功能:    在SQL Serve
r管理控制台中,单击菜单“工具”|“选项”,在“选项”对话框中,展开左边的树形节点“文本编辑器”|“所有语言”|“常规”,然后勾选
右边的“行号”,单击按钮“确定”即可。  5.控制流语句   所有的程序语言都有控制流语句(Control-of-Flow Lan
guage),包括T-SQL语言。T-SQL语言有如下的控制流语句:   (1) BEGIN...END:如果希望将一组代码作为一
个整体,即要么这组代码都执行,要么都不执行,则可以将这组代码放入BEGIN...END之内。其语法格式为   BEGIN   ??
???{   ????????sql_statement | statement_block   ?????}   END 
 (2) IF...ELSE:指定T-SQL 语句的执行条件。如果满足条件,则在IF关键字及其条件之后执行T-SQL语句,布尔表达
式返回TRUE。可选的ELSE关键字引入另一个T-SQL语句,当不满足IF条件时就执行该语句,布尔表达式返回FALSE。其语法格式
为   IF Boolean_expression   ?????{ sql_statement | statement_blo
ck }   [ ELSE   ?????{ sql_statement | statement_block } ]  (3)
?WHILE:设置重复执行SQL语句或语句块的条件。只要指定的条件为真,就重复执行语句。可以使用BREAK和CONTINUE关键
字在循环内部控制WHILE循环中语句的执行。其语法格式为   WHILE Boolean_expression   ?????{
sql_statement | statement_block }   ?????[ BREAK ]   ?????{ sq
l_statement | statement_block }   ?????[ CONTINUE ]   ?????{ sq
l_statement | statement_block }  (4) ?BREAK:退出WHILE或IF...ELSE语句中最
里面的循环,将执行出现在END关键字后面的任何语句,END关键字为循环结束标记。如上例中WHILE的语法格式。   (5) ?CO
NTINUE:重新开始WHILE循环。在CONTINUE关键字之后的任何语句都将被忽略。   (6) ?RETURN:从查询或过程
中无条件退出。RETURN的执行是即时且完全的,可在任何时候用于从过程、批处理或语句块中退出。RETURN之后的语句是不执行的。 
 6.注释语句   注释语句也是所有程序语言的共性。程序中的注释语句主要是对程序中的代码进行说明,标示以下一行或几行代码要完成的功
能,这样做既方便自己以后阅读,也使其他人更容易读懂自己编写的代码。程序中的注释语句将不会被编译器编译,但前提是编译器首先要知道哪些
语句属于注释语句,所以必须要以适当的格式来注明哪些语句是注释语句。T-SQL中的注释语句有两类:  (1) ?--:单行注释语句由
两条短横线构成“--”。单行注释语句的语法格式为   -- <要进行标注说明的注释语句> 表示在这一行之内,所有在“--”之后的字
符均为注释语句。如代码清单2-2~2-4中的单行注释语句。  (2) ?/ ... /:多行注释语句。如果注释语句很长,放在一
行之内不方便阅读,则可以考虑使用多行注释语句。多行注释语句的格式为   /   <此处可包含多行注释语句>   /  
 凡在“/”之后、“/”之前的语句均属于注释语句,而不论这语句占用多少行。2.4.3 使用CREATE DATABASE创建
数据库   在2.3节中介绍了使用SQL Server Management Studio来创建数据库,这种方法很简单,但正如本节
介绍T-SQL语言时说的那样,当单击图2-46所示的“新建数据库”对话框的“确定”按钮时,SQL Server Managemen
t Studio仍然是先将创建符合该对话框要求的数据库的过程转化成相应的T-SQL语言,再将此T-SQL语言发送给数据库引擎,数据
库引擎执行这些T-SQL语言以创建数据库。由此可见,T-SQL语言是重点,读者应该掌握使用T-SQL语言创建数据库。  下面演示如
何使用T-SQL语言创建数据库,以图2-1所示的数据库服务器WestSVR为例。以下示例与2.3节通过SQL Server Man
agement Studio创建数据库的例子相对应。   1.通过T-SQL语言创建数据库的简单方式   该方式可以简单到只需要输
入一行T-SQL代码就可完成,操作步骤如下:   (1) 以数据库服务器WestSVR管理员的身份登录服务器,单击“开始”|“所有
程序”|“Microsoft SQL Server 2005”|“SQL Server Management Studio”,然后
连接到该数据库服务器的默认实例(如果默认实例尚未启动,则通过SQL Server配置管理器启动该实例,然后再连接)。  (2) 在
“对象资源管理器”中,展开节点“WestSVR”,单击节点“数据库”,单击工具栏按钮“       ”,在新打开的T-SQL查询窗
口中输入代码清单2-5所示的语句,单击运行按钮“     ”,代码将会成功执行。刷新数据库,可以看到新创建的数据库。   这种
方式创建的数据库与2.3节通过SQL Server管理控制台创建数据库的简单方式是完全一致的(例如数据文件、日志文件的位置、大小、
增量方式等,都按照默认值来设置)。  2.通过T-SQL语言创建数据库的一般方式   【实践操作三】 本实践操作三的要求与实践操
作二相同,但需要以T-SQL语言的形式来实现该要求。   该实践操作的步骤如下:   (1) 首先删除先前创建的数据库“WxdSt
udent”,然后按“通过T-SQL语言创建数据库的简单方式”中的操作打开T-SQL查询窗口。   (2) 在该查询窗口中输入代码
清单2-6中的代码(注意不要输入每行左边的行号,例如“1:”),然后单击运行按钮“”,代码运行完毕,成功地按要求创建了数据库。  
 注意,T-SQL语言是不分大小写的,但一般来说,习惯将T-SQL语言中的关键字以大写的形式书写以示区分,这些关键字的颜色均为彩色
(或灰色)。所以,如果某个关键字的颜色不是彩色的,则应检查代码是否书写错误。  下面对代码清单2-6中的T-SQL代码做详细的说明
:   ? ?CREATE DATABASE:在第1行代码中,使用该关键字表示要创建数据库,其后指定要创建的数据库名称,本例中为“
WxdStudent”。   ? ?ON:通过关键字ON指定对数据文件的要求,然后将对该数据文件的定义放在“()”之内,如第4、5
行代码所示,在第5行中,以“(”开始对数据文件的定义。   ? ?NAME:通过NAME关键字指定该数据文件的逻辑名称为“WxdS
tudent_MNG”,如第5行代码所示。   ? ?FILENAME:通过FILENAME关键字指定该数据文件的物理路径名称,也
就是物理名称,如第6行代码所示。该物理名称为字符数据类型,在T-SQL语言中,需要将字符数据类型放在英文状态的单引号“''''”之内。
  ? ?SIZE:通过关键字SIZE指定该数据文件的初始大小为“10?MB”,如第7行代码所示。注意,单位“MB”为默认值,可
以省略。其他可选的单位有“KB”、“GB”、“TB”,如果要采用这些单位来指定数据文件的大小,则必须明确写出。   ?? MAXS
IZE:通过关键字MAXSIZE指定该数据文件的最大值。单位的要求与SIZE相同。MAXSIZE还有另外一个关键字UNLIMITE
D,如果采用该关键字,则表明数据文件的增长不受限制(当然,将受到物理硬盘容量的限制),如第8行代码所示。   ? ?FILEGRO
WTH:通过关键字FILEGROWTH指定数据文件的增长速度及方式。如果单位为“%”,则以百分比的形式增长,否则可以以“KB”、“
MB”、“GB”、“TB”的增量方式增长,默认为“MB”。第9行指定数据文件每次增长的值为5?MB。对数据文件的定义完成之后,以“
)”结束。  ? ?LOG ON:通过LOG ON关键字指定对日志文件的定义及要求。对该日志文件的定义也必须放在“()”之内,如第
12、13行所示,在第13行中,以“(”开始对日志文件的定义。   ? 对日志文件定义的关键字与数据文件的相同,均为“NAME”、
“FILENAME”、“SIZE”、“MAXSIZE”、“FILEGROWTH”,其意义也一样。   若想查阅CREATE DAT
ABASE的完整语法,则打开SQL Server联机丛书,在索引的“查找”中输入“CREATE DATABASE”,可获其详尽说明
。    注意,T-SQL语言的书写结构是非常开放的,并不以“行”来作为语句的开始和结束。在代码清单2-6中,创建数据库的T-SQ
L语句被分为多行显示,这样可使其结构看上去非常清晰,使阅读变得容易,但也可以将上述代码完全放在一行内显示(当然注释语句除外),同样
可以正常运行,不过这样阅读起来就非常不方便。养成良好的T-SQL格式书写习惯,有助于在编程时保持思路清晰,少犯错误,也可使代码更为
流畅。     在2.2.2小节中,讲述了数据库表(Table)的基本概念,本节开始正式介绍如何创建符合要求的数据库表。2.
5 创建数据库表2.5.1 设计表的基本原则   本节以1.5节上机实验描述的“学生管理数据库”为例来说明设计表的基本原则。
  为了对学生进行管理,数据库中必定应该有存放学生信息的表,通过对数据库的查询,可以知道每个学生的详细情况,例如姓名、性别、联系电
话、所属的班级、该班级的名称及课室位置,还有该班班主任的联系电话等。为了完成上述目的,可以将这些信息存放在图2-52所示的表中,该
表的表名(表的标识符)为“Student”。  图2-52 学生表(Student)的初始设计  图2-51所示的学生表似乎已经
满足要求,因为从该表中可以得知学生的详细信息。不过,仔细分析一下该表,可以发现该表有一个严重弊端:行与行之间的数据严重重复。例如,
学生陈好所属的班级为“2002级08班”,该班级信息重复了2次,其班主任“甘里朝”的信息也重复了4次。这种情况同样出现在2005级
09班以及该班的班主任王溧上。按照这样的设计,该班有多少学生,则其班级信息和班主任信息就会重复多少次。还有一个弊端是:如果某个班的
学生记录全部被删除了,则该班的班级信息及其班主任信息也随之被删除,而这是我们必须要避免的。  事实上,该表之所以出现这样的弊端,是
因为该表违背了设计数据库表的第一条原则。   (1) 每一个表应该只存贮一种类型对象的信息。   在图2-52所示的学生表中总共存
储了三种类型对象的信息,这三种对象分别是:学生、班级、班主任教师,因而造成了数据的冗余重复。应该将这三种对象的信息分别存放在各自的
表中,所以可以将图2-52所示的学生表拆分为三张表:Student、Class、Teacher,如图2-53~图2-55所示。  
图2-53 学生表“Student”     图2-54 班级表“Class” 图
2-55 教师表“Teacher”  经过这样的修改之后,可以看到,尽管在学生表“Student”中仍然还是有重复数据,但重复的
仅仅是班级名,重复的信息量已经大大减少,“Class”表中重复的信息也仅仅是班主任的姓名而已。   仔细研究一下图2-53~图2-
55所示的表,不难发现这三张表并不是孤立的。学生表“Student”通过列(字段)“所属班级”与班级表“Class”联系起来,班级
表“Class”通过列(字段)“班主任”与教师表“Teacher”联系起来。这三张表之间彼此都通过一个相同的字段从而将三张表串联在
一起,所以这三张表之间是有“关系”的,这正是关系数据库的由来。关系数据库中的表都不是孤立的,而是通过这样的方式紧密地将彼此联系在一
起。  查阅表时,可以通过“Student”表查阅到学生的信息,例如第一条记录为学生陈好的性别、联系电话信息,并且知道该生属于“2
002级08班”。如果想知道该生所属班级的详细信息,则可以根据班级名“2002级08班”在班级表“Class”中进一步查询,可得知
该班的课室、班级简介、班主任信息。如果想联系该班的班主任,则可以根据“Class”表知道该班班主任姓名为“甘里朝”,然后在教师表“
Teacher”中可以进一步查找到“甘里朝”教师的联系电话信息。   由此可见,当将最初的学生表一分为三之后,不但信息量没有减少,
反而极大地消除了冗余数据。   下面的问题是:在图2-53所示的学生表“Student”中,如果有另外一个学生(或另外几个)的名字
也叫“陈好”,当查找学生“陈好”的信息时,如何知道查找的到底是哪一位“陈好”的信息呢?显然,这种名字重复的现象是相当普遍的,因此这
种问题必须解决。在数据库表中,解决这种记录重复的方法就是设计数据库表的第二条原则。  (2) 每一个表都应该有一列(字段)作为表的
唯一标识列。   在数据库中,每一个表都应该有一列来作为该表的唯一标识列,这一列的数据不允许重复,这样就可以唯一地标识表中的每一条
记录(行)。对于图2-51所示的学生表,要解决学生名字重复的问题,可以在该表中增加一列(例如“学号”)来作为该表的唯一标识列,该列
(“学号”)中的值不能重复。同样,对班级表“Class”和教师表“Teacher”也分别各自增加一个唯一标识列。改进之后的三张表分
别如图2-56~图2-58所示(注意,此时将三张表的字段名都改成了英文字符,并不是不可以用中文汉字来做为字段名,只是在专业的数据库
设计中,几乎都以英文字符来做为字段的名称,以免引起不必要的麻烦,尤其是在数据库前端程序的设计中。本书沿用此不成文的规矩)。   在
图2-56所示的学生表中,增加了一列“StudentID”来作为该表的唯一标识列,此列中的值都是唯一的,如果在此列中插入一个值(例
如“20020845”),而该值已存在于该列中,则插入该值的操作将失败,数据库将会提示用户不允许插入重复记录的错误信息,如图2-5
9所示。  图2-56 增加了唯一标识列“StudentID”的学生表     图2-57 增加了唯一标识列“ClassI
D”的班级表 图2-58 增加了唯一标识列“TeacherID”的教师表     图2-59 插入重复记录的错误
消息提示  图2-57所示的“Class”表增加一个名为“ClassID”的字段来做为该表的唯一标识列。图2-58所示的“Teac
her”表增加了一个名为“TeacherID”的字段来做为该表的唯一标识列。   经过这样改进之后,即便学生表中有重复的学生姓名(
例如“陈好”),但其唯一标识列(学号“StudentID”)的值是不一样的(分别为“20020845”、“20050801”)。所
以只要知道其唯一标识列值(学号“StudentID”),就可以唯一地查询到该学生的信息,而不会引起误会。  而且,现在的学生表“S
tudent”中只需要通过字段“ClassID”来与班级表“Class”建立联系,这个字段中存储的值是班级表唯一标识列“Class
ID”中的值,该列中的值更为简约,因此重复的数据信息就更少了。班级表“Class”与教师表“Teacher”之间的关系同样如此。
  一般来说,我们是通过定义表的主键(Primary Key)来定义该表的唯一标识列的。数据库中的每个表都应该有且只有一个主键列(
可以没有主键列)。主键列中的值必定是唯一的。在定义表的列时,如果还需要定义多个具有唯一值的列,则可以通过关键字“UNIQUE”来实
现,在这些列中不允许有重复的值出现。  (3) 数据库表列的值应尽量避免为空值(NULL)。   数据库表中的列可以定义为允许空值
。空值是指表中某条记录(即某个对象)的某列(某个属性)没有值,空值仅仅是表明其属性没有值,绝对不是表明其值为“0”或为空白。在图2
-57所示的“Class”表中,“2005级10班”的列“Remark”中的值为空值。   之所以建议表中列的值应尽量避免为空值,
是因为在数据库中,对空值的判断将使对数据的处理变得更复杂。查询表时,可以在“WHERE”子句中使用“IS NULL”和“IS NO
T NULL”来对空值作出判断,但这种判断的效率是很低下的,尤其是当表中的记录量很大且有大量空值时,这种判断将花费大量的时间,使数
据处理变得缓慢。  如果在表中不可避免地必须使用空值(例如学生的相片列,该列数据类型一般为IMAGE或VARBINARY(MAX)
),并且有多个列的值可能为空值,建议另建一个新表用于包含这些列,然后将此新表与原表通过相同的字段值来建立联系,正如前面介绍的学生表
与班级表一样。  (4) 数据库中的表不应该有多个列存储相同类型的值。   在学生管理数据库的设计中,如果需要存储学生的选课信息,
或许可以使用图2-60所示的表来存放这些信息。   但是一个学生显然不会只选一门课程,所以必须给该表增加字段来表示学生所选的多门课
程,或许可以增加两到三个字段,如图2-61所示。   可是问题并没有解决,有的学生可能会选五到六门课程,而有的学生只选两到三门课程
。其实到此为止,应该很清楚地看到,不管在学生选课表中增加多少个课程字段,都是无法最终满足要求的,因为每个学生选的课程数目可能都不一
样,而且这些字段存储的都是相同类型的数据。这种多个字段存储相同类型数据的情况,是我们在设计数据表时要极力避免的。  图2-60
学生选课表  图2-61 增加课程字段之后的选课表当出现这样的情况时,最好的解决办法是另外新建一个表(假设“Courses”),
将这些相同类型数据的值(本例中这些值为课程的名称“微机基本操作”、“计算机网络”等)存入该表中,然后再新建一个表(假设“Stude
ntCourses”),将先前新建的表(“Courses”)与原始表(本例中为学生表“Student”)连接起来。创建好之后的表如
图2-62所示。     图2-62 改进之后的学生选课表“StudentCourses”  在本例中,学生选课表“Studen
tCourses”被称为学生表“Student”与课程表“Courses”的联结表(Junction Table)。学生选课表通过
字段“StudentID”与学生表连接起来,通过“CoursesID”与课程表连接起来。这样设计之后,每个学生选多少课程都无所谓了
,只需要在该选课表中加入这些记录即可。   对于联结表而言,可以专门使用某一列来作为其主键列,也可以使用连接其他表的列共同组成主键
列(在表中,主键可以由多个列共同构成)。在本例中,学生选课表“Student Courses”的主键可以由“StudentID”和
“CoursesID”列共同组成,因为这两列的组合值不应该有相同的,如果相同,就不符合实际情况了,例如在图2-62所示的学生选课表
中,第一行为“20050801”、“1”,则第二行(或其他行)的值显然不能与之相同了,如果相同,则表明学号为“20050801”的
学生选了两次课程编号为“1”的课程(“计算机网络”)。2.5.2 数据库表之间的关系   通过上一小节对表的设计规则的描述,我们
知道在数据库中所有表之间都不是孤立的,而是相互之间通过某个字段连接在一起,这样就构成了表与表之间的关系(Relationship)
。总结下来,这种关系共分为三类。  1.一对多的关系   这里的“一”是指一个表中的任一条记录,“多”是指另外一个表中的多条记录。
假如两个表A和B之间构成“一对多”的关系,则表A中的一条记录与表B中的多条记录相对应,但是表B中的任意一条记录只能在表A中找到一条
相对应的记录。例如,图2-57所示的班级表“Class”与图2-56所示的学生表“Student”构成了一对多的关系,因为班级表中
的任意一条记录(例如“200509”)都与学生表中的多条记录相对应(例如“20050901”、“20050902”等)。也就是说,
一个班级包含多个学生;反之,学生表中的任意一条记录(例如“20050901”)只能在班级表中找到一条与之相对应的记录(例如,班级表
中只有“200509”记录与学生表的“20050901”记录相对应),即一个学生只能属于一个班级,这是符合现实情况的。   同样,
图2-58所示的教师表“Teacher”与图2-57所示的班级表“Class”、图2-62所示的学生表“Student”与学生选课
表“StudentCourses”、课程表“Courses”与学生选课表“StudentCourses”均构成一对多的关系。   
一对多的关系是数据库中表与表之间最为常见的一种关系。在设计表时,应尽量使表满足这样的一对多关系。  2.多对多的关系   在数据库
中,如果表A与表B之间构成多对多的关系,则表A中的一条记录与表B中的多条记录相对应;反之亦然,表B中的一条记录总能在表A中找到多条
记录与之对应。例如,在图2-62所示的表中,学生表“Student”与课程表“Courses”之间构成了多对多的关系,因为学生表中
的一个学生(即学生表中一条记录)总是可以选择多门课程(对应课程表中的多条记录);反之,课程表中的一门课程(即课程表中的一条记录)总
是可以由多个学生共同选择(对应学生表中的多条记录)。  在设计表时,应尽量避免表与表之间出现多对多的关系。如果两个表之间满足多对多
的关系,则总是可以通过新建一个中间联结表来将此多对多的关系转化成两个一对多的关系。例如,可以通过新建中间联结表学生选课表“Stud
entCourses”来将学生表“Student”与课程表“Courses”之间的多对多关系转化成两个一对多关系(学生表“Stud
ent”与学生选课表“StudentCourses”构成一对多关系,课程表“Courses”与学生选课表“StudentCours
es”亦构成一对多关系)。这正是图2-62所采取的解决办法。  3.一对一的关系   在数据库中,如果表A与表B之间构成一对一的关
系,则表A中的一条记录只与表B中的一条记录相对应,反之亦然。这种关系在数据库的表中是比较少见的,因为尽管不违背表的设计原则,但是,
如果两个表之间构成一对一的关系,则完全可以将此两表合成为一个表了。2.5.3 使用管理控制台创建表   掌握了表的设计规则及表与
表之间的关系之后,就可以开始创建表了。可以在管理控制台中创建表,也可以通过T-SQL语言来创建表。   下面通过实践操作四来描述如
何在管理控制台中创建表。   【实践操作四】 通过SQL Server管理控制台在数据库“WxdStudent”(如该数据库尚未
创建,则按2.4节中的说明将其创建好)中完成对图2-56所示的学生表“Student”的创建,合理选择各字段的数据类型,并根据实际
情况适当增加一些字段。  以下为操作步骤:   (1) 以数据库服务器“WestSVR”管理员的身份登录服务器,打开SQL Ser
ver管理控制台。在对象资源管理器中展开节点“WestSVR”|“数据库”|“WxdStudent”,右击节点“表”,在右键菜单中
选择“新建表(N)...”,将于右方详细窗格中显示表设计器界面。在此表设计器界面中,按照图2-63所示的信息将此表设计完毕。注意,
若要使“StudentID”列成为主键,可于表设计器中,单击选中此列定义,再单击菜单“表设计器”|“设置主键(Y)”即可(也可单击
工具栏的图标“   ”来设置主键)。设置完毕,该列即为学生表“Student”的唯一标识列,在此列左边有一把钥匙符号的标记。  图
2-63 在表设计器对学生表各列进行定义  (2) 单击菜单“文件”|“保存(S)”,在弹出的保存对话框中输入表的名称“Stud
ent”,单击按钮“确定”,完成学生表“Student”的创建,如图2-64所示。   注意,在表设计器中对表的列进行定义时,若要
控制该列的详细信息,则可在该列下方的“列属性”详细窗格中进行操作。  图2-64 创建完毕的学生表“Student”2.5.4
使用T-SQL语言创建表   除了可以在SQL Server控制台中创建表,还可以通过T-SQL语言的关键字CREATE TAB
LE来创建表。   CREATE TABLE的简单语法如下:   CREATE TABLE <表的名字(该名字必须符合标识符的规则
)>   (    <此处对每列进行定义,列与列的定义之间用“,”隔开>   )   下面以实践操作五来说明如何使用T-SQL
语言创建数据库表。  【实践操作五】 使用T-SQL语言在数据库“WxdStudent”(如该数据库尚未创建,则按2.4节中的说
明将其创建好)中创建教师表“Teacher”,该表如图2-58所示。合理选择各字段的数据类型,并可以根据实际情况适当增加一些字段。
  以下为操作步骤:   (1) 以数据库服务器“WestSVR”管理员的身份登录服务器,打开SQL Server管理控制台。在
对象资源管理器中展开节点“WestSVR”|“数据库”,单击选中数据库节点“WxdStudent”,再单击工具栏按钮“      
  ”。在新打开的查询窗口中输入代码清单   2-7所示的代码(注意不要输入每行左边的行号,例如“1:”)。  (2) 单击工具栏
按钮“     ”,消息窗口中显示“命令已成功执行”,表明成功地创建了教师表“Teacher”。   下面对代码清单2-7所示的代
码进行说明:   ? 第1行代码使数据库“WxdStudent”成为当前数据库,表示以下操作均在“WxdStudent”数据库中进
行。   ? 第3行代码使用关键字“CREATE TABLE”表明创建表,并指定表的名称为“Teacher”。   ? 第4行用左
括号“(”开始对表中的每列进行定义,对表中所有列的定义必须放入一对小括号“()”中,并且列与列的定义之间用“,”隔开。注意,在最后
一列定义的末尾处不需要用“,”,否则会出错,如第11行所示。  ? 第5行定义列名“TeacherID”,该列的数据类型为“cha
r(4)”,“NOT NULL”关键字表示该列不允许为空值,“PRIMARY KEY”关键字表明此列为该表的主键。   ? 第6~
11行分别对“TeacherName”、“Phone”、“Photo”、“PhotoURL”、“Home-Address”、“De
partmentID”各列进行定义。在第12行处以右括号“)”结束对表中各列的定义。注意,“Photo”列用于存放教师的相片,由于
相片属于图片格式,因而在第7行定义该列的数据类型为二进制“varbinary(max)”,并可允许为空值。  以上仅讲述CREAT
E TABLE的基本语法,若要查看其完整语法,可打开“SQL联机丛书”,在索引中输入“CREATE TABLE”,以获其详细的语法
说明。     本节上机实验以1.5节上机实验为基础,在进行本节实验之前,应先确保已经完成了1.5节的上机实验。   当完成1
.5节上机实验之后,WXD学校学生管理数据库如图2-65所示。2.6 上 机 实 验     图2-65 WXD学校学生管理数
据库  本节实验的实验设备均为图2-65所示,且只需要数据库服务器WestSVR。   1.实验一:SQL Server配置管理器
与SQL Server外围应用配置器的基本操作   1) 实验要求   本实验有以下要求:   (1) 使用SQL Server配
置管理器或SQL Server外围应用配置器启动、停止、重新启动数据库实例引擎。  (2) 使用SQL Server配置管理器或S
QL Server外围应用配置器设置数据库实例引擎所采用的网络协议。   (3) 使用SQL Server外围应用配置器启用SQL
Server 2005的外围功能。   (4) 使用SQL Server配置管理器创建数据库引擎实例的别名。  2) 实验目的
  掌握SQL Server配置管理器与SQL Server外围应用配置器的基本操作。   3) 实验步骤   (1) 以数据库服
务器WestSVR管理员(此管理员为Windows Server 2003操作系统的管理员)的身份登录该服务器。打开SQL Ser
ver配置管理器,单击左边树形图节点“SQL Server 2005服务”,右方详细窗格中将列出该服务器的所有数据库服务。注意保持
所有的服务均为停止状态(如果该服务已启动,则右键单击之,选择“停止”操作以将其停止)。  (2) 打开“SQL Server外围应
用配置器”|“服务和连接的外围应用配置器”|“按实例查看”,展开节点“MSSQLSERVER”| “Database Engine
”|“服务”,右方的“服务状态”显示为“已停止”。查看完毕,关闭“服务和连接的外围应用配置器”对话框,但保持“SQL Server
外围应用配置器”为打开状态。   (3) 切换到“SQL Server配置管理器”窗口,右击“SQL Server(MSSQLSE
RVER)”,选择“启动”,开始启动数据库默认实例。   (4) 等到数据库默认实例启动完毕,切换到“SQL Server外围应用
配置器”窗口,按第(2)步骤的操作查看默认实例的服务状态。此时该数据库默认实例的服务状态是什么?  (5) 单击“停止”按钮以停止
运行数据库默认实例。等到该默认实例完全停止运行之后,关闭“服务和连接的外围应用配置器”对话框,但保持“SQL Server外围应用
配置器”为打开状态,然后将窗口切换到“SQL Server配置管理器”,右击左边树形图中的节点“SQL Server 2005服务
”,单击“刷新”,此时在右边详细窗格中显示的该数据库默认实例的服务状态是什么?  (6) 在“SQL Server配置管理器”窗口
中展开节点“SQL Server 2005网络配置”,单击节点“MSSQLSERVER的协议”,默认情况下,在右方详细窗格中,“S
hared Memory”、“Named Pipes”、“TCP/IP”三种协议的状态显示为“已启用”,“VIA”协议显示为“已禁
用”。如果读者的协议状态与此默认情况不符,请将协议状态配置为与此默认情况相一致。不要关闭“SQL Server配置管理器”窗口,保
持其为打开状态。   (7) 将窗口切换到“SQL Server外围应用配置器”,打开“服务和连接的外围应用配置器”|“按实例查看
”,展开节点“MSSQLSERVER”|“Database Engine”|“远程连接”,可以看到右方的单选按钮“        
   ”和“                ”处于选中状态,表示同时启用了“Named Pipes”和“TCP/IP”协议。单击选
中“             ”,然后再单击“应用”按钮,此时系统将提示更改必须在数据库引擎实例重新启动之后才能生效。关闭“服务和
连接的外围应用配置器”窗口,但保持“SQL Server外围应用配置器”为打开状态。  (8) 切换到“SQL Server配置管
理器”窗口,在左边树形图中右击节点“           ”,选择“刷新”。此时,右方窗格中四种协议的状态有什么变化吗?   (9
) 在右方窗格中右击协议“Named Pipes”,单击“禁用(I)”,此时系统将提示更改必须在数据库引擎实例重新启动之后才能生效
。   (10) 将窗口切换到“SQL Server外围应用配置器”,打开“服务和连接的外围应用配置器”|“按实例查看”,展开节点
“MSSQLSERVER”|“Database Engine”|“远程连接”。此时,右方显示的该数据库默认实例的远程连接状况是什么
?关闭“服务和连接的外围应用配置器”窗口,但保持“SQL Server外围应用配置器”为打开状态。  通过以上步骤,有什么体会?
  (11) 打开“开始”|“运行”,输入“cmd”,然后回车,进入命令提示符窗口。在命令提示符中输入代码清单2-8所示的代码。然
后回车,转到C盘根目录,打开文件“StudySQL.txt”,请问该文件的内容是什么?查看完毕后将该文件删除。  (12) 将窗口
切换到“SQL Server配置管理器”,并启动数据库默认实例。   (13) 打开“开始”|“所有程序”|“Microsoft
SQL Server 2005”|“SQL Server Management Studio”。当出现“连接到服务器”对话框时,在
服务器名称栏中输入服务器计算机名“WestSVR”以连接到数据库默认实例。   (14) 在“对象资源管理器”中单击选中节点“We
stSVR”,单击工具栏“       ”打开T-SQL查询窗口,此时该窗口的当前数据库为系统数据库“Master”。在该查询窗口
中输入代码清单2-9所示的代码。   (15) 单击“       ”按钮。此时下部的“消息”窗体中显示红色文本的消息“...SQ
LServer 阻止了对组件''xp_cmdshell'' 的过程''sys.xp_cmdshell'' 的访问... ”,表示该查询未能
成功执行。不要关闭“SQL Server Management Studio”,保持其为打开状态。  (16) 将窗体切换到“SQ
L Server外围应用配置器”,单击“功能的外围应用配置器”进入该对话框。打开“按实例查看”|“MSSQLSERVER”|“Da
tabaseEngine”,单击选中“xp_cmdshell”,然后在右方单击选中复选按钮“启用xp_cmdshell(E)”,再
单击“确定”按钮,然后关闭“SQL Server外围应用配置器”窗口。   (17) 将窗体切换到“SQL Server Mana
gement Studio”,再单击“”按钮。此时能成功地运行该查询窗口的T-SQL语言吗?转到C盘根目录,查看是否存在文件“St
udySQL.txt”,如果存在,请问该文件的内容是什么。  (18) 关闭“SQL Server Management Stud
io”窗口。   (19) 将窗口切换到“SQL Server配置管理器”,展开节点“SQL Native Client配置”,右
击别名,选择“新建别名...”。在新建别名对话框中,在别名栏内输入名称“WXD_Default_TCP”,端口号保持为空,服务器栏
内输入计算机名“WestSVR”,协议栏内选中“TCP/IP”协议。单击“确定”以创建此别名,该别名将于后续实验中使用。不要关闭“
SQL Server配置管理器”窗口,该窗口将于实验二中继续使用。  2.实验二:建立SQL Server客户端与服务器端的本地连
接   1) 实验要求   本实验有以下要求:   (1) 能熟练地使用“SQL Server Management Studio
”与本地数据库服务器(包括默认实例和命名实例)建立连接。   (2) 能使“SQL Server Management Studi
o”采用别名的方式与本地数据库服务器(包括默认实例和命名实例)建立连接。  2) 实验目的   掌握如何建立SQL Server客
户端与服务器端的本地连接。   3) 实验步骤   (1) 将窗口切换到“SQL Server配置管理器”,展开节点“SQL Se
rver 2005的网络配置”,检查数据库默认实例“MSSQLSERVER的协议”以及数据库命名实例“WESTWINDSQL的协议
”是否启用了“Shared Memory”、“Named Pipes”、“TCP/IP”。如果没有启用,则启用这些协议。  (2)
单击节点“SQL Server 2005服务”,检查数据库默认实例“SQL Server(MSSQLSE-RVER)”和数据库命
名实例“SQL Server(WESTWINDSQL)”是否处于运行状态,如果已经运行,则将其重新启动一次(确保刚启用的协议生效)
;如果没有运行,则将其启动运行。将其他所有的服务停止运行。   (3) 打开“SQL Server Management Stud
io”,在“连接到服务器”对话框中,服务器类型选择为“数据库引擎”,服务器名称为“WestSVR”,身份验证选择为“Windows
身份验证”,单击“连接”按钮,将成功地与数据库默认实例建立本地连接。  (4) 在对象资源管理器中,单击按钮“”断开连接。单击“连
接”|“数据库引擎”,在弹出的“连接到服务器”对话框中,在服务器名称栏内输入英文句点“.”,其余保持与第(3)步骤中的选项相同。单
击“连接”按钮,将成功地与数据库默认实例建立本地连接。   (5) 重复第(4)步骤,但在服务器名称栏内依次换成以下名称:   (
local)   localhost   这些名称均可与数据库默认实例建立本地连接。  (6) 单击按钮“”断开连接,保持对象资源
管理器为空。单击“连接”|“数据库引擎”,在弹出的“连接到服务器”对话框中,在服务器名称栏内输入名称“WestSVR\WEST-W
INDSQL”,其余保持与第(3)步骤中的选项相同。单击“连接”按钮,将成功地与数据库命名实例WESTWINDSQL建立本地连接。
  (7) 重复第(6)步骤,但在服务器名称栏内依次换成以下名称:   .\WESTWINDSQL   (local)\WEST
WINDSQL   localhost\WESTWINDSQL   这些名称均可与数据库命名实例WESTWINDSQL建立本地连接
。  (8) 单击按钮“   ”断开连接,保持对象资源管理器为空。单击“连接”|“数据库引擎”,在弹出的“连接到服务器”对话框中,
在服务器名称栏内输入实验一的第(19)步骤建立的别名名称“WXD_Default_TCP”,其余保持与第(3)步骤中的选项相同。单
击“连接”按钮,将成功地与数据库默认实例建立连接。再次单击按钮“   ”断开连接。   注意:在实验一的第(19)步骤中,当建立数
据库默认实例的别名时,在服务器栏内既可以输入计算机名“WestSVR”,也可以输入“.”或“(local)”或“localhost
”,均代表本地数据库默认实例。  (9) 重复实验一的第(19)步骤,在别名栏内输入名称“WXD_Instance_TCP”,服务
器栏内输入“WestSVR\ WESTWINDSQL”(注意此处也可输入“.\WESTWINDSQL”或“(local)\WEST
WINDSQL”或“localhost\WESTWINDSQL”,均代表本地数据库命名实例WESTWINDSQL),其余保持与实验
一第(19)步骤相同。  (10) 将窗口切换到“SQL Server Management Studio”,单击“连接”|“数据
库引擎”,在弹出的“连接到服务器”对话框中,在服务器名称栏内输入第(9)步骤建立的别名名称“WXD_ Instance_TCP”,
其余选项不变。单击“连接”按钮,将出现图2-66所示的错误消息(注意,本次连接失败并不是由于没有启用远程连接而导致的,因为已经启用
了“Named Pipes”和“TCP/IP”协议)。单击“确定”按钮关闭该消息,保持“连接到服务器”为打开状态。  图2-66
连接到服务器错误消息提示  (11) 将窗口切换到“SQL Server配置管理器”,单击选中节点“SQL Server 200
5服务”,在右边详细窗格中右击“SQL Server Browser”,单击“启动(S)”以启动该服务。   (12) 将窗口切换
到“SQL Server Management Studio”,再次单击“连接到服务器”对话框的“连接”按钮,此次可以成功地与数据
库命名实例WESTWINDSQL建立连接。   什么是SQL Server Browser 服务?   SQL Server Br
owser服务侦听对SQL Server资源的传入请求,并提供有关计算机中安装的 SQL Server实例的信息。当SQL Ser
ver Browser服务运行时,用户可以通过提供计算机名称和实例名(而不是计算机名称和端口号)连接到命名实例。在本实验的第(9)
步骤中,如果在端口号中输入命名实例的端口号(假如为1465),则在SQL Server Browser没有运行的情况下,也可以成功
地与该数据库命名实例建立连接。与默认实例相连,并不需要指定端口号,因为默认实例的端口总为1433,除非对此进行了明确的更改,而命名
实例总是使用动态端口,当然,也可以按照图2-10所示的方式将其设为静态端口。  3.实验三:建立SQL Server客户端与服务器
端的远程连接   1) 实验说明   本实验演示如何从其他计算机与数据库服务器建立连接。在实际情况下,当数据库客户端组件与数据库服
务处于不同的计算机之上时,彼此之间建立的连接为远程连接,但本演示仍只在一台计算机上进行(客户端组件与数据库服务同处于一台计算机)。
在建立连接时,只要以IP地址的形式指定数据库服务实例,并指定连接的协议为“TCP/IP”或“Named Pipes”,就是属于远程
连接的模式,而不论客户端组件与数据库服务是否处于同一台计算机。  2) 实验要求   本实验有以下要求:   (1) 能使用“SQ
L Server Management Studio”与远程数据库服务器(包括默认实例和命名实例)建立连接。   (2) 能使用“
SQL Server Management Studio”采用别名的方式与远程数据库服务器(包括默认实例和命名实例)建立连接。  
 3) 实验目的   掌握如何建立SQL Server客户端与服务器端的远程连接。  4) 实验步骤   (1) 完成实验二的第(
1)、(2)步骤,尤其确保“SQL Server Browser”服务处于停止状态。   (2) 展开“SQL Server 20
05网络配置”,单击节点“WESTWINDSQL的协议”,在右方详细窗格中右击协议“Named Pipes”,选择“属性”,在“属
性”对话框中,将管道名称改为“\\.\pipe\MSSQL$WESTWINDSQL\WXD_SQL\query”。右击协议“TCP
/IP”,选择“属性”|“IP地址”,按图2-10所示的设置将该命名实例设置为使用1465的静态端口。按要求重新启动该数据库命名实
例。对于默认实例,保持其“Named Pipes”和“TCP/IP”协议的属性不变(即为其初始默认值)。  (3) 打开“SQL
Server Management Studio”,按下述操作与数据库命名实例建立连接:   ? 使用“Named Pipes”协
议建立连接。在“连接到服务器”对话框中,在服务器名称栏内输入下列名称:  np:\\192.168.1.13\pipe\MSSQL
$WESTWINDSQL\WXD_SQL\query   单击“连接”按钮,可使用“Named Pipes”协议与命名实例建立远程
连接,其前缀“np:”表示使用“Named Pipes”协议建立连接。单击按钮“ ”断开连接。  ? 使用“TC
P/IP”协议建立连接。单击“连接”|“数据库引擎”,在弹出的“连接到服务器”对话框中,在服务器名称栏内输入下列名称:   tcp
:192.168.1.13\WESTWINDSQL,1465(或tcp:192.168.1. 13,1465)   单击“连接”按
钮,可使用“TCP/IP”协议与命名实例建立远程连接,其前缀“tcp:”表示指定使用“TCP/IP”协议建立连接,1465为端口号
。单击按钮“ ”断开连接。  (4) 按下述操作与数据库默认实例建立连接:   ? 使用“Named Pip
es”协议建立连接。在“连接到服务器”对话框中,在服务器名称栏内输入下列名称:   np:\\192.168.1.13\pipe\
sql\query   单击“连接”按钮,可使用“Named Pipes”协议与默认实例建立远程连接,单击按钮“
”断开连接。   ? 使用“TCP/IP”协议建立连接。单击“连接”|“数据库引擎”,在弹出的“连接到服务器”对话框中,在服务
器名称栏内下列名称:   tcp:192.168.1.13,1433(或tcp:192.168.1.13)   单击“连接”按钮,
可使用“TCP/IP”协议与默认实例建立远程连接。单击按钮“ ”断开连接。  (5) 将窗口切换到“SQL S
erver配置管理器”,按图2-67~图2-70所示的配置创建别名。然后按照实验二的第(9)及之后的步骤操作,分别使用这些别名对各
数据库实例建立远程连接(因为在别名中已经指定了端口号,所以在数据库服务器中不需要运行SQL Server Browser)。也可以
在“sqlcmd”中采用这些别名建立与数据库实例之间的连接,如图2-71所示。     图2-67 创建别名(一)
图2-68 创建别名(二)     图2-69 创建别名(三)
图2-70 创建别名(四)  图2-71 在“sqlcmd”中使用别名与数据库实例建立
连接  4.实验四:创建学生管理数据库WxdStudent   1) 实验要求   (1) 能熟练地使用“SQL Server M
anagement Studio”创建数据库。   (2) 能熟练地使用T-SQL语言创建数据库。   2) 实验目的   掌握如
何创建符合要求的数据库。  3) 实验步骤   (1) 以系统管理员的身份登录到数据库服务器“WestSVR”,在C盘根目录下建立
一个名为“WxdDatabaseFiles”的文件夹,如果此文件夹已经存在,则省略此步骤。   (2) 打开“SQL Server
Management Studio”,并按照前述实验的描述连接到数据库默认实例。打开“对象资源管理器”|“WestSVR”|“数
据库”。如果已经存在名为WxdStudent的数据库,则右击该数据库,然后选择“删除”以删除该数据库。   (3) 按照2.3节实
践操作二的描述创建学生管理数据库“WxdStudent”。   (4) 创建完毕,删除该数据库。   (5) 按照2.4节实践操作
三的描述采用T-SQL语言创建学生管理数据库“WxdStudent”。创建完毕之后,不要删除该数据库。   (6) 关闭“SQL Server Management Studio”窗口。  5.实验五:在学生管理数据库WxdStudent中创建表   1) 实验要求   (1) 能熟练地使用“SQL Server Management Studio”在数据库中创建表。   (2) 能熟练地使用T-SQL语言创建表。   2) 实验目的   掌握如何在数据库中创建符合要求的表。  3) 实验步骤   (1) 按照实践操作四的描述在管理控制台中通过图形用户界面的形式来创建   “Student”表。   (2) 按照实践操作五的描述在管理控制台中通过T-SQL来创建“Teacher”表。   (3) 单击工具栏按钮“ ”,打开一个新的查询窗口,再单击“ ”,定位至与本书配套的资源文件“SQLServer2005章节资源\第二章\Create_WXD_Table.sql”,打开该文件。然后单击按钮“ ”。运行完毕,将会为WXD学生管理数据库创建完整系列的表。  (4) 在对象资源管理器中,展开节点“WestSVR”|“数据库”|“WxdStudent”|“表”,查阅刚创建完毕的学生数据库表,然后关闭“SQL Server Management Studio”窗口。  6.附加学生管理数据库WxdStudent   1) 实验目的   将随本书配套提供的数据库文件(“WxdStudent_MNG?.mdf”及“WxdStudent_log.LDF”)附加到数据库默认实例中,为以后的章节内容奠定学习的基础。   2) 实验步骤   (1) 在SQL Server管理控制台中删除实验四创建的数据库WxdStudent。   (2) 将随本书配套提供的数据库文件(“WxdStudent_MNG?.mdf”及“WxdStudent_log.LDF”)复制到文件夹“C:\WxdDatabaseFiles”之内。  (3) 在SQL Server管理控制台的对象资源管理器窗口中,右击节点“WestSVR”|“数据库”,选择“附加(A)…”,在弹出的“附加数据库”对话框中,单击“添加”按钮以添加数据库的主数据文件(扩展名默认为“MDF”),定位至“C:\WxdDatabaseFiles\WxdStudent_MNG.mdf”文件,将其加入。在该对话框的下部会自动列出与之相对应的日志文件“C:\WxdDatabaseFiles\WxdStudent_log.LDF”。单击“确定”按钮完成数据库的附加操作。有关附加数据库的更多内容可参阅4.4节“分离和附加数据库”。     一、选择题(下面每个选择题有一个或多个正确答案)   1.使用“SQL Server配置管理器”可以实现以下哪些任务?   A.安装或删除SQL Server 2005实例   B.启动、停止、重新启动SQL Server 2005数据库服务   C.配置SQL Server 2005数据库实例以使其允许“远程连接”或“仅限本地连接”或“仅限本地连接”   D.为SQL Server 2005数据库实例建立别名   E.配置SQL Server 2005数据库实例所使用的TCP端口号习 题  2.当某个数据库服务的启动模式设置为“自动”时,表明该数据库服务:   A.将会随着操作系统的启动而自动启动运行   B.运行到一定时间时,将会自动停止   C.运行时所占用的内存资源比“手动”模式要少   D.将自动地进行数据库备份  3.以下哪些协议属于SQL Server 2005数据库的通信协议(网络库)?   A.TCP/IP协议   B.Shared Memory   C.NWLink IPX/SPX   D.AppleTalk   E.Named Pipes  4.如果某个SQL Server 2005数据库实例只启用了“”协议,则表明该数据库实例:   A.只允许本地连接   B.只允许远程连接   C.同时允许本地连接和远程连接   D.不允许任何连接  5.使用“SQL Server外围应用配置器”可以实现以下哪些任务?   A.安装或删除SQL Server 2005实例   B.启动、停止、重新启动SQL Server 2005数据库服务   C.配置SQL Server 2005数据库实例以使其允许“远程连接”或“仅限本地连接”或“仅限本地连接”   D.为SQL Server 2005数据库实例建立别名   E.配置SQL Server 2005数据库实例所使用的TCP端口号   F.禁用或启用SQL Server 2005外围功能  6.以下有关数据库文件的说法,哪些是正确的?   A.数据库文件至少有一个数据文件和一个事务日志文件。   B.数据库文件可以没有事务日志文件但必须至少有一个数据文件。   C.数据库文件可以没有数据文件但必须至少有一个事务日志文件。   D.数据库文件可以有多个数据文件和多个事务日志文件。   E.数据库文件必须要有扩展名,主数据文件的扩展名为“MDF”,从数据文件的扩展名为“NDF”,事务日志文件的扩展名为“LDF”。事务日志文件的扩展名为“LDF”。   7.下列所示的数据库标识符中,哪些是符合标识规范的?   A._StudentID   B.2005StudentID   C.无线电2005StudentID   D.StudentID  8.在数据库中设计表时,下列对表与表之间关系的描述哪些是正确的?   A.应当尽量使表与表之间构成一对多的关系。   B.应当尽量使表与表之间构成多对多的关系。   C.应当尽量使表与表之间构成一对一的关系。   D.如果两个表之间构成了多对多的关系,应当设计一个联结表,使这两个表分别与该联结表构成一对多的关系。  9.在数据库中设计表时,下列对表中列的描述哪些是正确的?   A.每个表都应该有主键列以唯一标识表中的每一条记录。   B.列与列之间的数据类型不应当重复。   C.每列都必须指定合适的数据类型,该列中只能存入指定的数据类型的值。   D.每列都必须指定合适的数据类型,但该列中可以存入其他数据类型的值。  10.在某SQL Server 2005数据库中,有一名为“Product”的表,在该表中有一名为   “Photo”的列,该列用于存放每一类产品的图片。试问该列“Photo”应该采用哪种最适合的数据类型?   A.Image   B.Varbinary(max)   C.Int   D.Decimal  二、简答题   1.通过Windows操作系统的“服务”来更改数据库服务的登录身份是合理的操作吗?为什么?   2.通过SQL Server Management Studio连接数据库服务时,可以连接到哪几种类型的数据库服务器?  3.有一台安装了SQL Server 2005企业版数据库的服务器,计算机名为“WXD_Server”,IP地址为“192.168.100.2”,该服务器安装了一个默认实例和一个命名实例,命名实例的名称为“WXD_Instance”,默认实例和命名实例都启用了允许远程连接,并同时启用了TCP/IP和Named Pipes协议,命名实例的TCP端口被指定为“1465”,命名管道保持为默认值。该服务器没有运行SQL Server Browser服务。当使用远程连接的方式并分别使用TCP/IP协议和Named Pipes协议连接到此数据库服务器的默认实例和命名实例时,其服务器名称应当如何指定?  4.可以通过sqlcmd工具来创建数据库和数据库表吗? 如果可以,请简要描述如何创建。   5.简要描述数据库文件的自动增长方式有哪些种类。   6.在关系数据库中设计数据库表时,应当使表尽量符合哪些原则?
献花(0)
+1
(本文系大高老师首藏)