1、 数据库原理数据库原理第三章:关系数据库标准语言第三章:关系数据库标准语言SQLSQL本章学习内容本章学习内容1SQL概述、数据库的体系结构2创建及管理数据库3管理数据表4管理表数据5数据库单表查询6数据库综合查询7视图的创建及删除本次课主讲内容本次课主讲内容1.SQL基础知识2.SQL Server 基础知识3.SQL Server 体系结构4.创建及管理数据库一、一、SQL基础知识基础知识vSQL(Structured Query Language),即结构化查询语言,是关系数据库的标准语言,是一个通用的、功能极强的关系数据库语言;其功能并不仅仅是查询;主要用来对存放在计算机中的数据库进行
2、组织、管理和检索。v标准的SQL语句几乎可以在所有的关系型数据库上不加修改地使用。Access、Visual Foxpro、Oracle这样的数据库同样支持标准的SQL。v当前,几乎所有关系数据库管理软件都支持SQL,许多软件厂商对SQL基本命令集还进行了不同程度的扩充和修改;v如Transact-SQL是SQL Server 在SQL的基础上添加了变量、运算符、函数及流程控制语句及注解。那么别的关系型数据库就不支持T-SQL语言,语言是SQL Server系列产品独有的。1、SQL概述(概述(P78)v1974年被Boyce和Chamberlin提出,并在IBM公司研制的关系数据库管理系统S
3、ystem R上实现。由于SQL简单易学,功能丰富,因此被数据库厂商所采用。v1986年,美国国家标准局ANSI的数据库委员会批准了SQL作为关系数据库语言的美国标准,同年公布了SQL的标准文本。v1987年,国际标准化组织ISO也通过了这一标准。2、SQL语言特点语言特点一、语言功能和模式结构的一体化v在关系模型中实体和实体间的联系均用关系表示,关系数据结构的单一性带来了数据操作符的统一,查找、插入、删除、修改等每一种操作都只需一种操作符,克服了信息表示方式的多样性带来的操作复杂性。二、高度非过程化的语言v用SQL语言进行数据操作,只要提出“做什么”,而无须指明“怎么做”,因此无需了解存取路
4、径,存取路径的选择以及SQL语句的操作过程由系统自动完成。这不但减轻了用户负担,而且有利于提高数据独立性。三、面向集合的操作方式vSQL语言采用集合操作方式,不仅操作对象、查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。四、两种使用方式、统一的语法结构vSQL语言既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机交互的使用方式,用户可以在终端键盘上直接键入SQL命令对数据库进行操作;作为嵌入式语言,SQL语句能够嵌入到高级语言(例如VB、PB、VC)程序中,供程序员设计程序时使用。v在两种不同的使用方式下,SQL语言的语法结构基本上是一致的。五
5、、五、语言言简捷,易学易用捷,易学易用vSQL语言接近英语口语,因此容易学习,容易使用。表 31 SQL语言的动词SQL 功能动 词数据查询SELECT数据定义CREATE,DROP,ALTER数据操纵INSERT,UPDATE,DELETE数据控制GRANT,REVOKE3、SQL Server SQL Server的管理工具的管理工具现在就介绍一下这些工具的功能:1.企业管理器企业管理器 企业管理器(Enterprise Manager)是SQL Server中最重要的一个管理工具。用户和系统管理员可以使用它来管理网络、计算机、服务和其它系统组件 安装好系统之后,我们可从“开始”-“程序”
6、-“Microsoft SQL Server”中看到如图10.8所示的画面。2.查询分析器分析器 SQL Server 2000的查询分析器(Query Analyzer)可以使用户交互式地输入和执行各种Transact-SQL语句,并且迅速地查看这些语句的执行结果,来完成对数据库中的数据的分析和处理,是SQL Server 2000提供用来分析查询计划(The Plan of A Query)、同时执行多个查询和查看数据及索引的工具,单击选项会出现“连接到SQL Server”对话框,请输入要连接的主机和帐户信息。查询分析器有许多功能都是非常有用的,对于一般初学者来说,可以把查询分析器看作T
7、-SQL代码编译的地方,在查询分析器里编写代码用以建立数据库、表、视图、查询等很多操作。查询分析器的启动前提是服务管理器已经处于启动状态。3服服务管理器管理器 SQL Server服务管理器(Service Manager)是在服务器端实际工作时最有用的实用程序。SQL Server服务管理器的主要作用是用来启动数据库服务器的实时服务、暂停和停止正在运行的服务,或在暂停服务后继续服务。4 客客户端网端网络实用工具用工具 客户端网络实用工具(Client Network Utility)用来配置客户端的网络连接,管理和测定客户端的网络库等。进行与SQL Server 2000连接的网络配置,通常
8、用户的SQL Server上无特殊的设置与更改,基本上连通应该都没有问题,所以这个工具就很容易被用户忽略。倘若在其他计算机上的SQL Server让用户无法连接,可由此工具加入服务器主机的名称和网络协议等设置。5服务器网络实用工具服务器网络实用工具 服务器网络实用工具(Server Network Utility)用来配置本计算机作为服务器时允许使用的连接协议,还可以在此设置相关参数等。6 事件探查器事件探查器 SQL Server 2000中的事件探查器可以即时获得服务器的活动,帮助用户监控SQL Server所产生的事件,如登录失败、连接终止、Transact-SQL SELECT、INS
9、ERT、UPDATE,DELETE的语句、RPC(Remote procedure Call)的批处理状态、存储过程的开始及结束等。可以有选择的进行事件的监视。注:不要选择过多的事件进行监视,以免影响性能。7导入和导出数据导入和导出数据 导入和导出数据(Input and Export Data)采用DTS导入/导出向导来完成。此向导包含了所有的DTS(Data Transformation Services)工具,提供了在OLE DB数据源之间复制数据的最简捷的方法。8联机丛书联机丛书 SQL Server 2000提供了大量的联机帮助文档(Books Online),它具有索引和全文搜索能
10、力,可根据关键词来快速查找用户所需信息,是用户学习SQL Server 2000的良师益友。4.SQL Server 4.SQL Server 的系的系统数据数据库 1 SQL Server 系统数据库简介系统数据库简介 SQL Server 2000安装成功后,系统会自动创建6个系统数据库。这些系统数据库的文件存储在Microsoft SQL Server默认安装目录下的MSSQL子目录的Data文件夹中,数据库文件的扩展名为.mdf,数据库日志文件的扩展名为.ldf。u(2)Model数据库:是所有用户数据库和Tempdb数据库的模板数据库。它含有Master数据库的所有系统表子集,这些系
11、统数据库是每个用户定义数据库时都需要的。u(1)Master数据库:记录了SQL Server系统的所有系统信息。这些系统信息包括所有的登录信息、系统设置信息、SQL Server的初始化信息和其它系统数据库及用户数据库的相关信息。vmsdb数据库是SQL Server中的一个特例。如果你查看这个数据库的实际定义,会发现它其实是一个用户数据库。不同之处是SQL Server拿这个数据库来做什么。所有的任务调度、报警、操作员都存储在msdb数据库中。该库的另一个功能是用来存储所有备份历史。SQL Server Agent将会使用这个库。u(3)Msdb数据库:是代理服务数据库。u(4)Tempd
12、b数据库:tempdb数据库是一个非常特殊的数据库,供所有来访问你的SQL Server的用户使用。这个库用来保存所有的临时表、存储过程和其他SQL Server建立的临时用的东西。例如,排序时要用到tempdb数据库。数据被放进tempdb数据库,排完序后再把结果返回给用户。每次SQL Server重新启动,它都会清空tempdb数据库并重建。永远不要在tempdb数据库建立需要永久保存的表。u(5)Pubs和Northwind数据库:它们是SQL Server自带的两个实例数据库。三、数据库的体系结构三、数据库的体系结构 v数据库是存储和管理数据的对象;v从逻辑上看,数据库的逻辑存储结构指
13、的是数据库是由哪些性质的信息所组成,所有与数据处理操作相关的信息都存储在数据库中。v从物理上看,SQL Server 数据库是指用于存储数据库的文件及文件组。数据库的物理存储结构则是讨论数据库文件是如何在磁盘上存储的。1、逻辑数据库、逻辑数据库 v逻辑角度的数据库呈现为各种数据库对象,这些数据对象是用于编写数据库应用系统和管理数据库的单位。vSQL Server 的数据库对象主要包括表(table)、视图(view)、索引(index)、默认(default)、存储过程(stored procedure)、触发器(trigger)和约束(constraint)等。v在T-SQL语句中,数据库对
14、象可使用两种对象名:完全限定名:完全限定名:在SQL Server 2005上创建的每个对象都有唯一的完全限定名。它包括四个部分:服务器名、数据库名、模式名、所有者名和对象名,其格式为:Server.database.schema.owner.object 部分限定名部分限定名:只包含对象完全限定名中的一部分的对象名称使用TSQL编程时,使用全名往往很繁琐且没有必要,所以常省略完全限定名中的某些部分。对象全名中的前4部分可被省略。2、物理数据库、物理数据库 v物理角度的SQL Server 2005数据库呈现为各种操作系统文件。v在默认安装路径C:Program FilesMicrosoft
15、SQL ServerMSSQL.1MSSQLData目录下存放了数据库的数据文件。vSQL Server 的每个数据库都必须包含下面两类文件。数据文件:用于存放所有数据和数据库中建立的所有逻辑对象。又分为主要数据文件和次要数据文件。日志文件:记录了用户对数据库进行的所有操作。1)主要数据文件(Primary Data File)主数据文件简称主文件,它是数据库的关键文件,包含了数据库的启动信息。每个数据库必须有且仅能有一个主文件;其默认扩展名为.MDF;唯一的唯一的2)次要(辅助)数据库文件(Secondary Data File)辅助数据文件简称辅(助)文件,用于存储未包括在主文件内的其他数
16、据。辅助文件的默认扩展名为.NDF。辅助文件是可选的,根据具体情况,可以创建多个辅助文件,也可以不用辅助文件。一般当数据库很大时,有可能需要创建多个辅助文件;而数据库较小时,则只要创建主文件而不需要辅助文件。零个、一个或多个零个、一个或多个3)日志文件(Transaction Log File)日志文件用于保存恢复数据库所需的事务日志信息。每个数据库至少有一个日志文件,也可以有多个。日志文件的扩展名为.LDF。至少一个至少一个4)数据)数据库文件文件组为了便于分配和管理,SQL Server允许将多个文件归纳为同一组,并赋予此组一个名称,这就是文件组。主文件组(Primary FileGrou
17、p)用户定义文件组(Secondary FileGroup)四、创建及管理数据库四、创建及管理数据库v在建立用户逻辑组件之前(如基本表)必须首先建立数据库。v而建立数据库时完成的最实质任务是向操作系统申请用来存储数据库数据的物理磁盘存储空间。这些存储空间以操作系统文件的方式体现,它们的相关信息将存储在master数据库及其系统表中。v创建SQL Server 数据库可以在Management Stuio中以图形界面的方式交互完成,或者在查询界面下通过SQL语句完成。1.界面方式管理数据库2.命令方式下管理数据库1)界面方式创建数据库)界面方式创建数据库v以学生-课程数据库为例,在Managem
18、ent Stuio中以图形界面的方式练习创建数据库,修改数据库。例1:要求创建一个学生-课程数据库(名称为student)。v逻辑名称:数据文件和日志文件名称v文件类型:数据文件及日志文件v文件组:各个数据文件所属的文件组名称v初始大小:文件大小v自动增长:文件按指定的大小增长,也可限制到最大容量。v路径:存放文件的物理目录v文件名:显示数据文件和日志文件的物理名称Student数据库默认创建选项:v名称:主数据文件为student,日志文件为student_log;v主数据文件初始大小为3MB,增量为1MB;v日志文件初始大小为1MB,增量为10%;v主数据文件和日志文件都存放在C:Prog
19、ram FilesMicrosoft SQL ServerMSSQL.2MSSQLDATA目录下,文件分别为student.mdf 和student_log.ldf;v文件组Primary。v例2:要求在本地磁盘D创建一个学生-课程数据库(名称为student1),只有一个数据文件和日志文件,文件名称分别为stu和stu_log,初始大小都为3MB,增长方式分别为10%和1MB,数据文件最大为500MB,日志文件大小不受限制。将主数据初始文件修改为将主数据初始文件修改为3MB或或3MB以上以上2)界面方式查看数据库信息)界面方式查看数据库信息3)界面方式修改数据库)界面方式修改数据库在数据库创
20、建后,数据文件和日志物理文件名就不能更改了,对已存在的数据库可以进行如下修改:1.改变文件的大小和增长方式2.增加或删除数据文件3.增加或删除日志文件4.增加或删除数据文件组4)界面方式下删除数据库)界面方式下删除数据库1、命令方式下管理数据库、命令方式下管理数据库v创建数据库:CREATEv修改数据库:ALTERv删除数据库:DROP1)命令方式下创建数据库)命令方式下创建数据库v在使用TSQL语句创建数据库中,其核心是CREATE DATABASE 语句。该语句基本语法格式是:CREATE DATABASE database_name /*指定数据库名*/ON file子句子句/*指定数据
21、库文件和文件组属性 LOG ON file子句子句 /*指定日志文件属性*/vfile子句子句 NAME=logical_file_name,FILENAME=os_file_name,SIZE=size,MAXSIZE=max_size|UNLIMITED,FILEGROWTH=grow_increment),.n例例1:要求:要求创建一个学生建一个学生-课程数据程数据库(名称(名称为student)。)。Create database student例例2:要求在本地磁:要求在本地磁盘D创建一个学生建一个学生-课程数据程数据库(名称(名称为student),只有一个数据文件和日志文件,文件
22、名称分),只有一个数据文件和日志文件,文件名称分别为stu和和stu_log,初始大小都,初始大小都为3MB,增,增长方式分方式分别为10%和和1MB,数据文件最大,数据文件最大为500MB,日志文件大小不,日志文件大小不受限制。受限制。CREATE DATABASE studentON(NAME=stu,FILENAME=D:stu.mdf,SIZE=3MB,MAXSIZE=500MB,FILEGROWTH=10%)LOG ON(NAME=stu_log,FILENAME=D:stu_log.ldf,SIZE=1MB,MAXSIZE=unlimited,FILEGROWTH=1MB)2)命令
23、方式修改数据库)命令方式修改数据库主要内容:v增加或删除数据文件v改变数据文件的大小和增长方式v增加或删除日志文件v改变日志文件的大小和增长方式v增加或删除文件组语法格式语法格式Alter database database_nameadd file,n to filegroup filegroupname|add log file,n|remove file logical_file_name with delete|modify file|modify name=new_databasename|add filegroup filegroup_name|remove filegroup f
24、ilegroup_name|modify filegroup filegroup_name例例3:在数据库student中增加数据文件db2,初始大小为10MB,最大大小为50 MB,按10%增长;alter database studentadd file(name=db2,filename=D:db2_data.ndf,size=10MB,maxsize=50MB,filegrowth=10%)例例4:修改数据库student主数据文件的大小,将主数据文件的初始大小修改为10Mb,增长方式为20%;alter database student modify file(name=stu,si
25、ze=10MB,filegrowth=20%)v删除数据库student辅助数据文件;alter database student remove file db23)命令方式删除数据库)命令方式删除数据库语法格式:DROP DATABASE,数据库名组例1:将数据库student删除,可使用下述语句。DROP DATABASE studentGO练习题练习题1、创建一个Company数据库,该数据库的主数据文件逻辑名称为Company_data,物理文件为Company.mdf,初始大小为10MB,最大尺寸为无限大,增长速度为10%;数据库的日志文件逻辑名称为Company_log,物理文件名为Company.ldf,初始大小为1MB,最大尺寸为50MB,增长速度为1MB。小小 结结1.SQL基础知识v概述、SQL特点、基础概念2.SQL Server 基础知识v发展史、版本信息、安装环境、平台3.SQL Server 体系结构v逻辑角度、物理角度4.创建及管理数据库v创建,修改、删除