第 9 章 sql server 数据库基础

80
第9第 SQL Server 第第第第第

Upload: guinevere-church

Post on 03-Jan-2016

208 views

Category:

Documents


0 download

DESCRIPTION

第 9 章 SQL Server 数据库基础. 内容提要. SQL Server 基本知识 SQL Server 数据库管理 SQL Server 数据表管理 SQL Server 数据表基本操作 SQL Server 索引操作 SQL Server 视图操作. 9.1 SQL Server 概述. 9.1.1 SQL Server 2000 简介 SQL Server 的发展 1988 年 首次推出了 SQL Server 的第一个版本 1992 年 Microsoft 公司将 SQL Server 移植到 Windows NT 操作系统中 - PowerPoint PPT Presentation

TRANSCRIPT

第 9 章 SQL Server 数据库基础

内容提要 SQL Server 基本知识 SQL Server 数据库管理 SQL Server 数据表管理 SQL Server 数据表基本操作 SQL Server 索引操作 SQL Server 视图操作

9.1   SQL Server 概述 9.1.1 SQL Server 2000 简介 SQL Server 的发展

1988 年首次推出了 SQL Server 的第一个版本 1992 年 Microsoft 公司将 SQL Server 移植到 W

indows NT 操作系统中1996 年 Microsoft推出了 SQL Server 6.5 版本1998 年推出了 SQL Server 7.0 版本2000 年推出了 SQL Server 2000

2005 年推出了目前最新的版本 SQL Server 2005

9.1.2 SQL Server 2000 的安装

1 .安装 SQL Server 2000 的环境需求 ( 1 )硬件需求

1 ) CPU

2 ) 内存 3 ) 硬盘容量( 2 )软件需求

软件需求主要指对操作系统的要求, SQL Server 2000 有多个版本,不同的版本对操作系统的要求也不尽相同

软件需求企业版:一般作为生产数据库服务器使用,它支持 SQL Server 2000 的所有功

能。它必须运行于安装了 Microsoft Windows NT Server 4.0 、 Microsoft Windows NT Server Enterprise Edition 4.0 、 Windows 2000 Advanced Server 或 Windows 2000 Data Center Server 的操作系统下。

标准版:一般作为小型工作组或部门的数据库服务器使用。它必须运行于安装了 Microsoft Windows NT Server 4.0 、 Microsoft Windows NT Server Enterprise Edition 4.0 、 Windows 2000 Server 、 Windows 2000 Advanced Server 或 Windows 2000 Data Center Server 的操作系统下。

个人版:主要适用于移动用户,除事务处理复制功能外,个人版能够支持所有标准版支持的特性。它可运行在安装了 Windows 98 、 Windows Me 、Windows NT Workstation 4.0 、 Windows 2000 Professional 、 Windows NT Server 4.0 、 Windows 2000 Server 和所有更高级的 Windows版本操作系统下。

开发版:该版本可以供程序员用来开发以 SQL Server 2000 作为数据存储的应用程序,它只能作为开发和测试系统使用,而不能作为生产服务使用。它可运行于安装了 Windows NT Workstation 4.0 、 Windows 2000 Professional 以及其它所有更高级的 Windows NT 和 Windows 2000 版本的操作系统下。

SQL Server 2000 的安装

SQL Server 2000 的服务管理器负责启动 / 停止 SQL Server 服务。启动 SQL Server 服务:

【开始】→【程序】→【 Microsoft SQL Server 】→【服务管理器】,打开“ SQL Server 服务管理器”对话框

SQL Server 2000 的安装

9.1.3 SQL Server 常用工具 服务管理器

主要作用是:启动数据库服务器的实时服务、暂停和停止正在运行的服务,或在暂停服务后继续启动服务。

企业管理器

启动企业管理器的步骤: 【开始】→【程序】→【 Microsoft SQL Server 】→

【企业管理器】 主要功能:

管理 SQL Server 服务器 创建和管理数据库 创建和管理各种数据库对象 备份数据库和事务日志、恢复数据库 复制数据库 设置任务调度 设置警报 管理用户帐户 建立 Transact-SQL 命令语句

查询分析器 SQL Server 2000 查询分析器允许用户交

互式输入和执行 SQL 语句,并能立即返回语句的执行结果。

启动查询分析器:→ →【开始】 【程序】 【Microsoft SQL

Server →】 【查询分析器】

查询分析器

服务器网络实用工具 SQL Server 2000 服务器网络实用工具用于管理服务器网络连接的相关设置,该实用工具用于指定:

SQL Server 2000 实例在其上监听客户端请求的网络协议栈从应用程序建立连接时考虑使用的服务器顺序SQL Server 2000 实例监听的新网络地址

服务器网络实用工具

客户端网络实用工具 SQL Server 2000 的客户端网络实用工具

用来配置客户端的网络连接,它允许用户创建到指定服务器的网络协议连接和更改默认的网络协议,并用于显示当前系统中安装的网络库的有关信息。

启动客户端网络实用工具 :【开始】→【程序】→【 Microsoft SQL Serv

er 】→【客户端网络实用工具】

客户端网络实用工具

事件探测器 SQL Server 2000 的事件探测器是从服务

器捕获 SQL Server 2000 事件的工具,它能够监视服务器和数据库活动(如死锁数、严重错误、跟踪存储过程和 Transact-SQL 语句或登录活动等)。

启动事件探测器:选择【开始】→【程序】→【 Microsoft SQL Server 】→【事件探测器】

事件探测器

导入和导出数据工具 SQL Server 2000 的导入和导出数据工具采用向导程序来完成在不同的 SQL Server 服务器之间传递数据,同时还可以用于与其它数据库管理系统(如 Access 、 Foxpro等)或其它数据格式(如电子表格、文本文件等)进行数据交换。

启动导入和导出数据工具:选择【开始】→【程序】→【 Microsoft SQL Server 】→【导入和导出数据】

Transact-SQL 语言 Transact-SQL 语言功能 实用工具和应用程序使用两个组件来访问 SQL Server :

数据库应用编程接口( API )Transact-SQL 语句。

Transact-SQL 语句是根据 SQL Server 2000 的 Transact-SQL 语言生成的。大多数数据库操作都是由以下四个 Transact-SQL 语句之一实现的:

SELECT 语句用于检索现有数据。 UPDATE 语句用于更改现有数据。 INSERT 语句用于添加新的数据行。DELETE 语句用于删除不再需要的行。

9.2 SQL Server 数据库管理 9.2.1 引例    大四学生小李经过了三年的学习后进入了毕业前的实习阶段,他和几个同学联系了一所新建成的独立学院的教务处作为实习地点。教务处要求他们负责学校选课系统的数据库建设,并要求选用 SQL Server 2000 作为数据库平台。在已有数据库设计方案情况下,小李和同学们面临的第一个问题是如何建立和管理选课数据库?要解决这个问题,需要了解以下问题: SQL Server 2000 数据库由哪些文件构成? 数据库和数据表之间有什么关系? 可以采有哪些方法创建数据库? 如何查看、修改或删除已有数据库?

9.2.2 数据库概述

1 .文件类型 主数据文件 辅助数据文件 事务日志文件

数据库文件组 为了更好地实现数据库文件的组织,以便于分配和管理,SQL Server从 7.0 版本开始允许将多个文件归纳为一组,并赋予一个名称,这就是数据库文件组。 SQL Server 数据库文件组分为以下三类:

主文件组 自定义文件组 默认文件组

系统数据库 系统数据库是在 SQL Server 2000 安装完成时系统自动建立的特殊数据库,包括同 master 、model 、 msdb 、 tempdb 、 pubs 和 Northwind六个数据库。

master 数据库 master 数据库是 SQL Server 2000 中的主控数据库,

记录了 SQL Server 系统的所有系统信息,包括所有的登录信息、系统设置信息、系统初始化信息、其它系统数据库和用户数据库的信息等。

系统数据库 model 数据库   model 数据库是 SQL Server 2000 中的模板数据库,当创建一个用户数据库时,系统会自动将model 数据库的内容复制到该数据库中 msdb 数据库   msdb数据库主要被 SQL Server Agent 用于进行复制、作业调度以及管理报警等活动,它常用于通过调度任务排除故障。 tempdb 数据库   tempdb数据库用于存储用户创建的临时表、存储过程或全局变量。pubs 和 Northwind 数据库   pubs 和 Northwind 数据库是 SQL Server 2000 中自带的两个实例数据库,可以作为学习 SQL Server 2000 的工具。

9.2.3 创建数据库 在 SQL Server 2000 中可以通过三种方法

来创建数据库:使用向导、使用企业管理器以及使用 Transact-SQL 语句创建数据库。

1 .使用向导创建数据库

2 .利用企业管理器创建数据库 依次选择【开始】→【程序】→【 Microsoft S

QL Server 】→【企业管理器】 在窗口左边的“树”窗格中,依次展开“ Micr

osoft SQL Server” 和“ SQL Server 组”,选中要在其上创建新数据库的服务器或其下的任一节点,只要工具栏上的【新数据库】 按钮呈可选状态即可。单击该按钮,出现“数据库属性”对话框

2 .利用企业管理器创建数据库

3 .利用 Transact-SQL 语句创建数据库

【例 9-1 】用 CREATE DATABASE 语句创建 test 数据库,所有参数均取默认值。

语句清单如下:CREATE DATABASE test这是利用 CREATE DATABASE 语句创建数

据库最简单的方法。将上述语句在 SQL Server 2000 查询分析器的编辑窗格中输入,单击工具栏上的“执行查询”按钮或“ F5” 键,就可以快速建立 test 数据库。

3 .利用 Transact-SQL 语句创建数据库

【例 9-2 】用 CREATE DATABASE 语句创建“选课”数据库,其中主数据文件的逻辑文件名为“ course_dat” ,物理文件名为“ coursedb.mdf” ,存放在“ d:\mssql\example\” 目录下,初始大小为 2MB ,最大大小为 50MB ,增长增量为 1MB;事务日志文件的逻辑文件名为“ course_log” ,物理文件名为“ courselog.ldf” ,存放在“ d:\mssql\example\” 目录下,初始大小为 1MB ,最大大小为 10MB ,增长增量为 10% ,其它参数均取默认值。

语句清单如下:CREATE DATABASE选课ON ( NAME = course_dat, FILENAME = 'd:\mssql\example\coursedb.mdf', SIZE = 2, MAXSIZE = 50, FILEGROWTH = 1 )LOG ON( NAME = course_log, FILENAME = 'd:\mssql\example\courselog.ldf',

SIZE = 1MB, MAXSIZE = 10MB, FILEGROWTH = 10% )

9.2.4 操作数据库 数据库创建之后,可以通过查看数据库操作来了解当前数据库的相关信息。数据库信息主要包括基本信息、维护信息和空间使用情况。 可以通过 SQL Server 2000 的企业管理器和系统存储过程两种方法来查看数据库信息。

利用企业管理器查看数据库 选择【开始】→【程序】→【 Microsoft SQL

Server 】→【企业管理器】,打开“ SQL Server Enterprise Manager”窗口。

在窗口左边的“树”窗格中,依次展开“ Microsoft SQL Server” 、“ SQL Server 组”、“数据库”节点,在列出的数据库列表中选中要查看的数据库,单击右按钮,在弹出的快捷菜单中,单击【属性】命令

利用系统存储过程查看数据库 语法格式如下:[EXECUTE] sp_helpdb [数据库名 ]

【例 9-3 】用 sp_helpdb 存储过程查看 test 数据库的信息。语句清单如下:

EXEC sp_helpdb test

修改数据库 利用企业管理器修改数据库

打开要修改数据库的“属性”对话框,在“数据文件”、“事务日志”、“文件组”、“选项”、“权限”选项卡中修改需改变的属性

利用 Transact-SQL 语句修改数据库 通过企业管理器来修改数据库,只能修改数据库的属性,不能更改数据库的名字, Transact-SQL 则提供了这两方面的修改方法。

利用 Transact-SQL 语句修改数据库

( 1 )数据库更名 【例 9-4 】将已存在的 test 数据库更名为

test2 。语句清单如下:   EXEC sp_renamedb test , test2

利用 Transact-SQL 语句修改数据库2 )修改数据库属性 【例 9-5 】更改 test2 数据库以添加一个初始大小为 3 MB 大小的新数据文件,其逻辑文件名为“ test2_dat2” ,物理文件名为“ test2data2.ndf” ,存放在“ d:\mssql\example\” 目录下,最大大小为 30MB ,增长增量为 2MB 。

 语句清单如下:   ALTER DATABASE test2   ADD FILE   ( NAME = test2_dat2,     FILENAME = 'd:\mssql\example\test2data2.ndf'     SIZE = 3MB,     MAXSIZE = 30MB,     FILEGROWTH = 2MB  )

删除数据库

利用企业管理器删除数据库 利用 Transact-SQL 语句删除数据库 【例 9-6】删除已存在的 test2数据库。语句清单如下: DROP DATABASE test2

9.3 SQL Server 数据表管理 9.3.1 引例  在建好“选课”数据库后,小李负责其中“学生”数据表的建

立。小李又面临以下新的问题: SQL Server 2000 数据表由哪些部分构成? 建立数据表结构需要哪些信息? 在建立数据表结构时,如何保证数据的完整性? 可以采有哪些方法创建数据表? 如何查看、修改或删除已有数据表结构?

9.3.2 数据表概述

1 .数据表概念 数据表是互相关联的行列集合,用来存储数

据库中的实际数据。在关系型数据库中每一个关系都体现为一张数据表,表的结构包括列和行。列主要描述数据的属性,称为字段;而行则组织数据的单位,称为记录。

整型数据类型 浮点数据类型 字符数据类型 日期和时间数据类型 文本和图形数据类型 货币数据类型 二进制数据类型 位数据类型

数据完整性    数据的完整性是指存储在数据库中的数据的正确性和相容性以防止数据库中存在不符合语义的数据或在进行各种数据操作(插入、删除、修改等)时破坏了数据的一致性。

( 1 )实体完整性 实体完整性要求数据表中所有的行唯一,即所有记录都是可区分的,例如一个学校的每个学生在学生档案库中应该有且只有一条记录。

( 2 )域完整性 域完整性是指给定列的输入有效性,例如在代表月份的列中,应该只

能输入 1~ 12之间的数值,否则输入是无效的。 ( 3 )引用完整性

在输入或删除记录时,引用完整性保持表之间已定义的关系。在 SQL Server 2000 中,引用完整性基于外键与主键之间或外键与唯一键之间的关系(通过 FOREIGN KEY 和 CHECK 约束)。

( 4 )用户定义完整性 用户定义完整性使用户得以定义不属于其它任何完整性分类的特定业

务规则。

数据约束 约束可以分为列级约束和表级约束,列级约束是行定义的一部分,只能够应用在一列上;表级约束的定义独立于列的定义,可以应用在一个表中的多列上。 ( 1 )非空( NOT NULL )约束 ( 2 )检查( CHECK )约束 ( 3 )唯一( UNIQUE ) 约束 ( 4 )主键( PRIMARY KEY ) 约束 ( 5 )外键( FOREIGN KEY )约束

9.3.3 创建数据表 利用企业管理器创建数据表  ( 1 )创建表结构 ( 2 )设置约束

利用 Transact-SQL 语句创建数据表

【例 9-7】用 CREATE TABLE “ ”语句在 选课 数据库创建如表 9-1“ ”所示 学生 数据表。

语句清单如下:USE 选课CREATE TABLE 学生

( 学号 char(12) NOT NULL, 姓名 nvarchar(10) NOT NULL,

专业编号 char(4) , 性别 char(2),

出生日期 datetime, 入学时间 datetime, 入学成绩 numeric,

团员否 bit, 简历 ntext

设置约束 【例 9-8 】用 CREATE TABLE “ ”语句在 选课 数据库创建如表 9-1 所

“ ” “ ” “ ”示 学生 数据表,并将 学号 设置为主键, 姓名 设置为具有唯一“ ”性, 入学成绩 设置为必须大于等于 0。

语句清单如下:USE 选课CREATE TABLE 学生

( 学号 char(12) NOT NULL PRIMARY KEY, 姓名 nvarchar(10) NOT NULL,

专业编号 char(4) , 性别 char(2),

出生日期 datetime, 入学时间 datetime, 入学成绩 numeric 5,

团员否 bit, 简历 ntext,

CONSTRAINT UNIQ_FIELD UNIQUE(姓名) ,CONSTRAINT CHECK_FIELD CHECK (入学成绩>=

0) ,)

设置外键约束 另外,若需要建立另一张数据表“学生选课”

表,因为其中的“学号”字段来源于“学生”数据表,则在建立“学生选课”表时,应将表中的“学号”字段与“学生”表中的“学号”字段建立外键约束:

  CREATE TABLE学生选课 ( …… ,

   CONSTRAINT FOREIGN_FIELD FOREIGN KEY (学号) REFERENCES  学生(学号)

)

9.3.4 操作数据表 1 .利用企业管理器查看数据表

( 1 )查看数据表结构 ( 2 )查看数据表约束

2.利用 Transact-SQL 的存储过程和语句查看数据表

【例 9-9 】用 sp_help “存储过程查看 学”生 表的结构和约束。

语句清单如下:USE 选课EXEC sp_help 学生

修改数据表 1 .利用企业管理器修改数据表 2 .利用 Transact-SQL 语句修改数据表  【例 9-10 】用 ALTER TABLE 语句修改“学生”表的结构,将“姓名”字段的类型改为 varchar(8) 型,删除“团员否”字段,增加“政治面貌”字段,类型为 char(4) 型。

语句清单如下:  USE 选课  ALTER TABLE 学生 ALTER COLUMN 姓名 varchar

(8)  ALTER TABLE 学生 DROP COLUMN 团员否  ALTER TABLE 学生 ADD 政治面貌 char(4) 如果“学生”表中建有约束,上述操作可能会失败,要先去除约束,才能执行成功。

修改数据表 【例 9-11 】用 ALTER TABLE 语句修改”学

生”表的结构,去除在例 9-8 中建立的名为 UNIQ_FIELD 的约束,同时设置“性别”字段的值只能为“男”或“女”。

语句清单如下:  USE 选课  ALTER TABLE 学生 DROP UNIQ_FIELD  ALTER TABLE 学生 ADD CONSTRAINT

    SEX_CHECK CHECK (性别 IN( '男 ','女 ' ))

删除数据表 1 .利用企业管理器删除数据表 2 .利用 Transact-SQL 语句删除数据表 【例 9-12】用DROP TABLE语句删

“ ”除 学生 数据表。 语句清单如下: USE 选课 DROP TABLE 学生

9.4 数据表基本操作 9.4.1 引例   按照上面介绍的方法,小李建好了“选课”数据库中的“学生”数据表,但刚建好的数据表里面没有任何数据,小李需要将学生的信息输入到“学生”数据表中,在这个过程中他遇到以下问题:如何向 SQL Server 2000 数据表中添加数据?当数据添加出现错误时,如何进行修改?如何删除数据表中无用的数据?如何在数据表中快速查找符合某类条件的学生信息?

9.4.2 添加数据 1 .利用企业管理器添加数据

添加数据 2 .利用 Transact-SQL 语句添加数据 ( 1 ) INSERT…VALUES 语句 【例 5-16 】用 INSERT 语句向 test 数据库的学生成绩数据表(表 5-

1 )添加一条记录:学号: 200403;姓名:张杰;语文: 78;数学: 56;英语 50;总分: 184;平均分: 61 。

语句清单如下:USE testINSERT INTO 学生成绩表 (学号 , 姓名 , 语文 , 数学 , 英语 , 总分 , 平均分) VALUES (‘ 200403’ , ‘张杰’ , 78 , 56 , 50 , 184 , 61 )或:USE testINSERT INTO 学生成绩表 VALUES (‘ 200403’ , ‘ 张杰’ , 78 , 56 , 50 , 184 , 61 )

添加数据 ( 2 ) INSERT…SELECT 语句 【例 9-13】用 INSERT “ ” “ ”语句向 选课 数据库的 学生 数据表中添加一条记录:学号: 200610401011;姓名:张春梅;专业编号: 04;性别:女;出生日期: 1987.2.1;入学时间: 2006.9.1;入学成绩: 611;团员否: 0;简历:湖北仙桃一中。

语句清单如下: USE 选课 INSERT INTO 学生(学号,姓名,专业编号,性别,出

生日期,入学时间,入学成绩,团员否,简历) VALUES ( '200610401011' , ' 张 春 梅 ' , '04' , ' 女 ' , '1987/2/1' , '2006/9/1' , 611 ,0, '湖北仙桃一中 ')

9.4.3 查看数据 1 .利用企业管理器查看数据 2 .利用 Transact-SQL 语句查看数据

SELECT * FROM 数据表名【例 9-14】用 SELECT “ ”语句查看 学生 表数据。语句清单如下: USE 选课 SELECT * FROM 学生

9.4.4 修改数据 1 .利用企业管理器修改数 2 .利用 Transact-SQL 语句修改数据 【例 9-15】用 UPDATE “ ”语句修改 学生 表的数

“ ”据,将表中姓名为 王小凤 同学的入学成绩改为 601 “ ”,简历改为 江苏南通二中 。语句清单如下: USE 选课 UPDATE 学生 SET 入学成绩 = 601, 简历 =

'江苏南通二中 '

9.4.5 删除数据 1 .利用企业管理器删除数据 2 .利用 Transact-SQL 语句删除数据

利用 Transact-SQL 提供的 DELETE 语句和 TRUNCATE TABLE 语句可以删除一条或多条甚至全部数据表记录。

【例 9-16 】用 DELETE 语句删除“学生”表中入学成绩低于 300 分的记录。

语句清单如下: USE 选课 DELETE 学生 WHERE 入学成绩 <300

【例 9-17 】用 TRUNCATE TABLE 语句删除“学生”表。语句清单如下: TRUNCATE TABLE 学生

9.4.6 查询数据 对数据的查询是指从数据表中检索出符合用户

需求的数据,是数据表操作中最常用的一种操作。 SQL Server 2000利用 Transact-SQL 的 SELECT 语句来实现对数据的各种查询, SELECT 语句也是 Transact-SQL 中使用频率最高的一条核心语句。另外, SQL Server 2000还可以利用“查询设计器”进行数据查询,但其实质还是通过用户界面生成 SELECT 语句实现查询。

利用“查询设计器”查询

【例 9-27 】用查询设计器自动生成以下 SQL 语句: SELECT 学号 , 姓名 , 入学成绩 FROM 学生 WHERE 入学成绩 >600 AND 性别 ='男 ' ORDER BY 学号 DESC

9.5 SQL Server 索引 9.5.1 引例  通过前面几节的学习,小李对 SQL Server 2000 最基本的数据

库、数据表、数据的管理有了一定的了解,但也发现了一个问题。由于他在输入学生信息时,并没有完全按照学号的顺序输入,这样使得要查找某学生信息,就要用到 9.4.6节中查询数据的方法。但是,如果数据表中的数据已经按照“学号”排好了序,自己直接根据要查找学生学号的相对位置,就能够快速定位到该学生信息所在记录。那么怎样能使数据表中的数据按某个字段(如按“学号”)或多个字段排序,以加快查找的速度?

9.5.2 索引概述1 .索引功能

可以利用索引快速访问数据库表中的特定信息。索引是一种特殊类型的数据库对象,是对数据库表中一个或多个列的值进行排序的结构。索引有助于更快地获取信息。

索引提供指针以指向存储在表中指定列的数据值,然后根据指定的排序次序排列这些指针。数据库使用索引的方式与使用书的目录很相似:通过搜索索引找到特定的值,然后跟随指针到达包含该值的行。

索引的类型唯一索引

唯一索引不允许两行具有相同的索引值。如果现有数据中存在重复的键值,则大多数数据库都不允许将新创建的唯一索引与表一起保存。当新数据将使表中的键值重复时,数据库也拒绝接受此数据。

主键索引 在数据库关系图中为表定义一个主键将自动创建主键索引,主

键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的。当在查询中使用主键索引时,它还允许快速访问数据。

聚集索引 使用聚集索引,可以使表中各行的物理顺序与键值的逻辑(索引)顺序相同。一个数据表只能包含一个聚集索引。

9.5.3 创建索引

三种方法:创建索引向导企业管理器Trans-act SQL 语句

利用企业管理器创建索引

利用 Transact-SQL 语句创建索引

   Transact-SQL 提供了 CREATE INDEX 语句来创建视图。

【例 9-28 】用 CREATE INDEX 语句为“学生”表建立非聚合索引 stud_index ,使表中的数据先按性别的升序索引,再按“入学成绩”的降序索引。

语句清单如下:  USE 选课  CREATE NONCLUSTERED INDEX stud_index   O

N 学生(性别 ASC, 入学成绩 DESC )

9.5.4 操作索引( 1 )利用企业管理器查看索引( 2 )利用 Transact-SQL 存储过程查看索引

Transact-SQL 提供了 sp_helpindex 系统存储过程用来查看索引信息,其语法格式为:    [EXEC] sp_helpindex 数据表名

【例 9-29 】查看“学生”表中的索引信息。语句清单如下:  USE 选课  exec sp_helpindex 学生

删除索引( 1 )利用企业管理器删除索引( 2 )利用 Transact-SQL 语句删除索引

Transact-SQL 提供了 DROP INDEX 语句来一次性删除数据表的一个或多个索引。

【例 9-30 】删除“学生”表中的 stud_index 索引。语句清单如下:  USE 选课  DROP INDEX学生 stud_index

9.6 SQL Server 视图 9.6.1 引例  小李在输入学生信息时,发现如果所有的学生信息都由教务

处来输入,工作量很大。另外,如果某个系的学生信息有变化,要先由系里的教学秘书向教务处汇报,再由教务处来修改,十分不便。于是小李建议,学生信息由各院系教学秘书直接管理,包括数据的输入、修改、删除等。 SQL Server 2000 数据库可以通过网络进行远程访问,但是这种方法存在着安全隐患,各院系的教学秘书不但可以修改自己院系的学生信息,还可以修改其它院系学生的信息,可能会因为误操作而导致数据的错误。小李于是想寻求一种方法,希望可以达到以下目的: 不需要建立多个数据表,就可以使各院系教学秘书只能访问本院系

的学生信息; 各院系教学秘书对数据表所做的修改,都真实地反映在“学生”数

据表中。

9.6.2 视图概述

1 .视图概念 视图是从一个或多个数据表中导出的虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在,行和列的数据来自由定义视图的查询所引用的表(通常称为基表),并且只在引用视图时才动态生成这些数据。

视图功能

将用户限定在表中的特定行上。 将用户限定在特定列上。 将多个表中的列联接起来,使它们看起来象一

个表。 聚合信息而非提供详细信息。

视图优点

简化用户对数据库的操作 减少数据库中无用数据的干扰 重新组织数据 提供简单有效的安全保护功能

9.6.3 创建视图 只能在当前数据库中创建视图。 视图名称必须遵循标识符的规则,且对每个用户必须为唯一。此

外,该名称不得与该用户拥有的任何表的名称相同。 可以在其它视图和引用视图的过程之上建立视图。允许嵌套 32

级视图。 不能将规则或 DEFAULT 定义与视图相关联。 定义视图的查询不可以包含 ORDER BY 、 COMPUTE 或 COM

PUTE BY子句或 INTO 关键字。 不能在视图上定义全文索引定义。 不能创建临时视图,也不能在临时表上创建视图。

9.6.3 创建视图 利用向导创建视图 利用视图设计器创建视图 利用 Transact-SQL 创建视图

【例 9-31 】用 CREATE VIEW 语句创建名为 stud_view 的视图,要求基表为:“选课”数据库的“学生”数据表;在视图中显示“学号”、“姓名”、“入学成绩”字段;视图查询的数据为所有专业编号为“ 03” 同学的信息。

语句清单如下: USE 选课 GO CREATE VIEW stud_view AS SELECT 学号 ,姓名 , 入学成绩 FROM 学生 WHERE专业编号 =

'03'

要查看 stud _view 视图的内容,可以像查看一般数据表一样 : SELECT * FROM stud _view

9.6.4 操作视图( 1 )利用企业管理器查看视图( 2 )利用 Transact-SQL 存储过程查看视

图1 )查看视图基本信息

[EXEC] sp_help 视图名2 )查看视图定义信息

[EXEC] sp_helptext 视图名3 )查看视图依赖关系

[EXEC] sp_depends 视图名

修改视图( 1 )利用企业管理器修改视图( 2 )利用 Transact-SQL 语句修改视图

Transact-SQL 提供了 ALTER VIEW 语句来修改视图的定义。

【例 9-32 】对在例 9-31 中已经生成的 stud_view 视图进行修改:显示的字段增加“团员否”字段。

语句清单如下:  USE 选课  GO  ALTER VIEW stud_view AS SELECT 学号 ,  姓名 , 入学成绩 , 团员否 FROM 学生 WHERE专业编号 = '03'

使用视图( 1 )使用视图进行基表数据更改的条件

生成视图的 SELECT 语句不能包含计算字段。生成视图的 SELECT 语句不能使用各种统计函数。生成视图的 SELECT 语句不能使用 TOP 、 GROUP BY 、

DISTINCT 等子句。如果视图的引用来自于多个基表,则当使用 UPDATE

语句修改视图中的数据时,不能同时影响多个表中的数据变化。

使用视图( 2 )使用视图进行基表数据更改的方法【例 9-33 】通过对 stud_view 视图的操作删

除“学生”表中所有专业编号为“ 03” 的同学的信息。

 语句清单如下:   USE 选课   DELETE FROM stud_view

删除视图( 1 )利用企业管理器删除视图( 2 )利用 Transact-SQL 语句删除视图

【例 9-34 】用 DROP VIEW 语句删除 stud_view 。

语句清单如下:USE 选课DROP VIEW stud_view