1、SQL Server 教材(上基础),SQL Server 2000基础数据库的基本操作,1.SQL Server 2000基础,1.1 SQLServer 2000简介1.1.1 SQLServer 2000概述SQLServer 2000提供了在服务器系统上运行的服务器软件和在客户端运行的客户端软件。连接客户端和服务器计算机的的网络软件则由Windows NT/2000/XP提供。其中SQL Server 2000数据库系统的服务器运行在Windows NT/2000/XP系统上,负责创建、维护数据库、表和索引等数据库对象,确保数据的完整性和安全性,能够在出现各种错误时恢复数据。SQL S
2、erver 2000数据库系统的客户端应用程序可以运行在Windows NT/2000/XP系统上,完成所有的用户交互操作,将数据从服务器检索出来后,可以生成拷贝,以便在本地保留,也可以进行操作。,1.1.2 SQL Server 2000特性SQL Server 2000是一个优秀的数据库管理系统,用来对数据库进行管理。它适合于各类型应用的后台数据库管理,还可用于数据仓库、大型数据联机分析和电子商务等。,一. 企业级数据库功能SQL Server 2000关系数据库引擎支持几乎所有的数据处理环境所需的功能。数据库引擎保护数据库的完整性,并使许多并发数据库操作的用户的开销减到最小。 SQL S
3、erver 2000分布式查询可以引用来自不同的数据源的数据,就好象这些数据是SQL Server 2000数据库的一部分。,二. XML支持SQL Server 2000对XML的支持主要表现在以下几个方面。(1)支持XML-DATA模式。(2)能够使用HTTP访问SQL Server 2000。(3) 可通过同意资源定位URL访问SQL Server 2000。(4)Microsoft SQL Server 2000 OLE DB 提供程序(SQLOLEDB)可以将XML文档设置为命令文本并以流的形式返回结果集。(5)可检索 、操作XML数据。,三. Internet集成SQL Serve
4、r 2000具有构成大型Web站点的数据库存储组件所需要的可伸缩性、安全性和可用性。 SQL Server 2000可与Windows DNA 和J2EE 等分布式构架集成,用以开发Web应用程序。它还支持English Query和Microsoft搜索服务等功能,这样在Web应用程序中包含了友好的用户查询和强大的所有功能。,四.可伸缩性和可用性同一个数据库引擎可以在不同平台上使用,如Windows 98/2000/xp等, SQL Server 2000企业版还支持索引视图、联合服务器和大型内存等功能,使系统可以升级到最大系统所需的性能级别。,五.使用方便使用简便是SQL Server 2
5、000的一大特点。 SQL Server 2000易于安装、部署、使用,它包括一系列管理和开发工具,如企业管理器、查询分析器等,这些工具可以使部署、管理和使用SQL Server 2000变得简便好用。,六. 数据仓库SQL Server 2000包括析取和分析汇总数据以进行联机分析处理技术,用以组织大量的数据仓库数据供客户端工具进行快速分析,并提供先进的数据挖掘技术以分析和发现数据仓库数据内的信息。 SQL Server 2000中还包括一些工具,可用来直观地设计数据库并通过English Query来分析数据。 English Query是用于创建客户端应用程序的开发工具,使客户端应用程序
6、可以将英语转换为SQL语句以查询关系数据库,或者转移为多维表达式语句以查询OLAP多维数据集。,1.3. SQL Server 2000数据库结构,SQL Server 2000中所有的数据都存储在数据库中。在物理层次上,数据库至少由两个存储在服务器上的文件组成。在逻辑层次上,数据库包括表、视图、存储过程以及其他对象。 SQL Server 2000数据库分为系统数据库和用户数据库。,1.3.1. 物理数据库,物理数据库由构成一个数据库的实际文件组成,至少需要两个我文件,扩展名为“.mdf”。另一个是数据库的事物日志文件,扩展名为“.ldf”,当 SQL Server 2000运行时,将信息写
7、入事务日志文件,一旦数据库遭到破坏,则事务日志文件用来恢复数据库。每个数据库一般都有一个日志文件,也可以有多个日志文件。,一. 页页是SQL Server 2000中的最小数据存储单元。每一页的长度是8KB,数据库的实际数据就写在这里。每页的开始部分是96个字节的页首,用于存储系统信息,如页的类型、页的可用空间量、拥有页的对象ID等。 SQL Server 2000数据库的数据文件中有数据、索引、文本/图象、全局分配映射表和辅助全局分配映射表、页的可用空间、索引分配映射表、大容量更改映射表、差异更改映射表等8种页类型。,二.扩展区域扩展区域是SQL Server 2000每次申请空间时能分配的
8、最小单元。扩展区域是8个相邻页,既64KB,是创建表和索引的基本单位。为了使空间分配更有效, SQL Server 2000对只含少量数据的表不分配完整的扩展区域。 SQL Server 2000有以下两种类型的扩展区域。(1).统一扩展区域。它由单个对象所有,扩展区域中的所有8页只能由拥有该区域的对象使用。(2).混合扩展区域。它最多可由8个对象共享。,1.3.2 数据库对象,物理数据库对于一般的数据库用户没有多大的直接用处,相反,逻辑数据库应用更为普遍,它是将表、视图、索引和存储过程等数据库对象存储得来的。数据库对象是指一个数据库的逻辑组件,其中包含数据库或用于数据交互。,一. 表表是数据
9、库中很重要的对象,与日常生活中的表格类似,它也是由行和列组成。列由同类的信息组成,每列称为一个字段,每列的标题称为字段名。行包含了若干信息项,一行数据称为一条记录,它表达一个特定意义的信息组合。一个数据库表由若干条记录组成。每一个表通常有一个主键,用来唯一确定一条记录,,二.视图视图也称为虚拟表,是建立在实际存储数据的表之上的虚拟表,表面上看来和表一样,具有一定命令的字段和数据项。视图用于查询表中存储的数据,被用来显示表中数据的子集。视图中数据可以来源于一个表,也可以来源于多个表。视图可以用来控制用户对数据的访问,并能简化数据的显示,即通过视图只显示需要的数据信息。,三.索引索引是用于加快数据
10、访问速度并且保证表中数据完整性的一种数据库对象。索引是对数据库表中一个或多个列的值进行排序的结构。索引提供指针以指向存储在表中指定列的数据值,然后根据指定的排序次序排列这些指针。数据库使用索引的方式与书的方式与书的目录很相似,通过搜索索引找到特定的值,然后跟随指针到达包含该值的行。SQL Server 2000有两种不同类型的索引:聚集索引和非聚集索引。聚集索引是将表中的数据按排好的顺序进行物理存储。这种索引可以建立在一列或者多列上。一个表只能有一个聚集索引。非聚集索引是指向表中数据并独立于表的一种物理结构,表中的任何一列可以建索引。,四. 数据类型数据类型用来定义或者描述一列中可以输入的数据
11、类型,以及SQL Server 2000如何存储数据,当开发人员建表时,每创建一列,必须给列指定一个数据类型,如datetime类型, SQL Server 2000提供了许多数据类型,也允许用户自定义数据类型。,五.规则规则是对数据库表中数据信息的限制,它限制表的列。六.默认值当在表中穿件列或输入数据时,对没有指定具体值的列或列数据项赋予预先社顶好的值,称为默认值。,七.存储过程存储过程是为完成特定的功能而汇聚在一起的一组SQL语句,经编译后存储在数据库中的SQL程序。开发人员编写自己的存储过程来自动执行许多数据处理任务。 八.触发器触发器是当对数据库中对象发生特殊事件时执行的一类特殊的存储
12、过程,实际上也是一组SQL语句。如当表中的数据被插入、删除时,触发器可以被自动触发,执行一系列的SQL语句。,1.3.3 系统数据库和用户数据库安装SQL Server 2000后,系统会创建6个数据库,从企业管理器中即可以看到。这些系统自己创建的数据库分为两类:一类是系统数据库,包括master、model、tempdb和msdb, SQL Server 2000使用这些数据库来跟踪记录自己及其管理的数据库:另一类是用户数据库,包括pubs和Northwind。下面分别介绍这些数据库。,一. Master数据库master数据库是一个非常重要的系统数据库,它包含SQL Server 2000
13、所有的配置信息,所以SQL Server 2000开始运行时,首先是寻找master数据库并打开它。如果损坏或丢失了master数据库, SQL Server 2000将无法运行,恢复master也比较困难,所以最好时常备份最近的master数据库。,二. model数据库Model数据库为创建新的用户数据库提供样本。当创建一个新数据库时, SQL Server 2000会把model数据库中的所有对象建立一份拷贝并转至新建数据库中。在样本对象被拷贝到新的用户数据库中后,该数据库的所有多余空间将被空页填满。,三. tempdb数据库tempdb数据库用于存放SQL Server 2000运行期
14、间创建的所有临时表及其他数据库对象。不要在tempdb数据库中建立需要永久保存的表。 四. msdb数据表msdb数据库供SQL Server 2000代理程序调度警报和作业以及记录操作员时使用。 SQL Server Agent将会使用这个数据库。,五. Pubs和Northwind数据库SQL Server 2000会在初次安装过程中建立这两个数据库,用来进行学习,是一个很好的样本数据库。,1.4.Transact-SQL语言,Transact-SQL对使用SQL Server 2000非常重要。与SQL Server通信的所有应用程序都通过向服务器发送Transact-SQL语句来进行,
15、而与应用程序的用户界面无关。熟练掌握Transact-SQL语言对于一个数据库开发人员来说是至关重要的。,1.5.1 Transact-SQL语言概述,Transact-SQL是ANSI SQL的扩充版语言,它继承了ANSI SQL的命令和功能外,还对其进行了许多扩充,并且在不断地变化、发展。它提供了类似C等程序设计语言的基本功能,如变量说明、功能函数、程序流程控制语言等。,Transact-SQL语言的分类如下: 变量声明: Transact-SQL语言可以使用两类变量,局部变量和全局变量。 数据定义语言DDL(DATA Definition Language):用来建立数据库及数据库对象,
16、绝大部分以CREATE开头,如CREATE TABLE等。 数据控制语言DCL(Date Control Language):用来控制数据库组件的存取许可、权限等命令,如GRANT、REVOKE等。 数据库操纵语言DML(Data Manipulation Language):用来操纵数据库中数据的命令,如SELECT、UPDATE等。 流程控制语言FCL(Flow Control Language):用于控制应用程序流程的语句,如IF、CASE等。,1.5.2 SELECT查询语句,数据库应用中,最重要的操作就是查询操作。在Transact-SQL语言中,使用SELECT语句对数据库进行查询
17、。SELECT从一个或多个表或视图中检索数据库行。 SELECT子句包括SELECT、INTO、FROM、WHERE、GROUP BY、HAVING、ORDER BY等。,SELECT子句 SELECT子句指定有查询返回的列,其语法如下: SELECT ALL | DISTINCT TOP n PERCENTWITH TIES: = * table _name | view_name | table_alias. * column_name | expression | IDENTITYCOL | ROWGUIDCOL AS column_alias | column_alias=expres
18、sion ,n,例如:从SQL Server 2000的实例数据库pubs的表authors中查询列au_fname和au_lname,列的别名分别为first_name和last_name,其Transact-SQL语句如下:USE pubsSELECT au_fname AS first_name,au_lname AS last_nameFROM authorsGO,二. INTO子句使用INTO子句,可以创建一个新表,并将查询出来的结果集插入到新表中。INTO子句的语法如下:INTO new_table其中,new_table即为新表名。值得注意的是,要执行带有INTO子句的SELEC
19、T语句,必须在数据库中具有CREATE TABLE权限。,例如:从SQL Server 2000实例数据库pubs的表employee中查询列lname、fname,并将结果存入到新表中。再从新表中查询所有数据,其Transact-SQL语句如下:USE pubsSELECT fname, lnameINTO search_employeeFROM employeeGOSELECT *FROM search_employeeGO,三. FROM子句FROM 子句是用来指定查询的表或视图。 例如:从SQL Server 2000实例数据库pubs的表authors中查询列 au_id、phone
20、、address,将表authors与表titleauthor联接,联接条件是两表中au_id相同。语句如下:USE pubsSELECT authors.au_id,phone,addressFROM authors JOIN titleauthorON (authors.au_id = titleauthor.au_id)GO,四.WHERE子句WHERE子句是用来设置查询条件,即限制返回的行。 例如:从SQL Server 2000实例数据库pubs的表authors 中查询state为CA的所有记录,语法如下:USE pubsSELECT au_id , address, city,
21、stateFROM authorsWHERE state = CAGO,五. GROUP BY 子句GROUP BY子句对数据按照某个字段分组。如果SELECT子句中包含聚合函数,则会将聚合函数应用到所选行的子组中。语法如下:USE pubsSELECT emp_id , lname, fnameFROM employeeWHERE pub_id = 1389GROUP BY emp_id, lname, fnameGO,六. HAVING子句HAVING子句为分组统计进一步设置条件,通常与GROUP BY 子句一起使用。如果不使用GROUP BY 子句,HAVING子句的作用相当于WHERE子句。,例如:从SQL Server 2000实例数据库pubs表employee中查询pub_id为1389的所有记录,显示列emp_id、lname、fname、pub_id,并分组,如果使用HAVING子句,而不是WHERE子句,其Transact-SQL语句如下:USE pubsSELECT emp_id, lname, fname, pub_idFROM employeeGROUP BY emp_id, lname, fname, pub_id HAVING pub_id= 1389 GO,演示完毕,谢谢!,