ASP程序设计教程第8章 数据库基础与ADO.ppt

上传人:amazingpat195 文档编号:378628 上传时间:2018-10-09 格式:PPT 页数:160 大小:1.12MB
下载 相关 举报
ASP程序设计教程第8章 数据库基础与ADO.ppt_第1页
第1页 / 共160页
ASP程序设计教程第8章 数据库基础与ADO.ppt_第2页
第2页 / 共160页
ASP程序设计教程第8章 数据库基础与ADO.ppt_第3页
第3页 / 共160页
ASP程序设计教程第8章 数据库基础与ADO.ppt_第4页
第4页 / 共160页
ASP程序设计教程第8章 数据库基础与ADO.ppt_第5页
第5页 / 共160页
亲,该文档总共160页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、ASP.NET程序设计教程 第8章 数据库基础与ADO.NET,上海交通大学出版社,2,内 容,本章的主要内容包括三方面:一是数据库的基本概念。二是常用的数据库管理系统Microsoft SQL Server 2000的使用要点。三是在ASP.NET中使用数据库的基本技术ADO.NET框架和方法。本章的内容给后续有关数据库操作的章节提供了必要的理论和技术基础。,3,8. 1 数据库基本概念,8.1.1 数据库技术概述,4,8.1.1.1 数据库技术的产生和目的,从计算机数据管理技术的发展历史来看,经历了人工管理、文件系统、数据库系统三个阶段. 数据库技术的主要目的是:提高数据的共享性,使多个用

2、户能够并发存取数据库中的数据;减少数据的冗余度,以提高数据的一致性和完整性;提供数据与应用程序的独立性,从而减少应用程序的维护代价。 现在,数据库已经成为各种信息系统的核心和基础。,5,8.1.1.2 从现实世界到机器世界,为了把现实世界中的事物能够用计算机支持的数据模型来表示和处理,人们通常先将现实世界的事物先抽象到信息世界,建立所谓的“概念模型”,然后再将信息世界的模型映射到机器世界,将概念模型转换为计算机世界中的模型。如图8.1所示。,6,7,三个世界,现实世界 概念世界 机器世界,8,数据模型,数据库系统所采用的数据模型是直接面向数据库中数据的逻辑结构,数据模型有四种,分别是:层次模型

3、、网状模型、关系模型、面向对象模型。 20世纪70年代是数据库技术蓬勃兴起的年代,基于层次和网状模型的数据库系统占据主导地位,而20世纪80年代以后,关系模型很快成为理论和实践最成熟的数据模型,关系数据库系统成为主流的数据库管理系统。目前常见的数据库产品基本都是基于关系模型的。,9,8.1.1.3 实体-联系方法,概念模型最常用的建模方法就是“实体-联系方法”(Entity-Relationship approach),简称E-R方法。该方法采用E-R图来描述某一系统的概念模型。 实体是客观存在并且可以相互区别的事物。实体可以是实际事物,也可以是抽象事件。例如,一本书、一个读者等属于实际事物;

4、一次借阅是一个抽象的事件。同一类实体的集合称为实体集,例如图书馆的所有图书。,10,在E-R图中,实体集用长方形框表示,框内写上实体集名;属性用椭圆或圆角框表示,里面写上属性名,并用线段将实体集和它的全部属性连接起来;实体集之间的联系用菱形表示,里面写上联系名,并用线段将菱形框和有关实体集相连。联系本身也可以有属性。图8.2是一个ER图的简单实例。(图中只画出了实体的部分属性),11,12,8.1.1.4 数据库技术的若干重要概念,数据库(Database):数据库是通用化的相关数据集合,它不仅包括数据本身,而且包括相关数据之间的联系。数据库中的数据不只面向某一项特定应用,而是面向多种应用的,

5、可以被多个用户、多个应用程序共享。 数据库系统(Database System,DBS):数据库系统是指在计算机系统中引入数据库后的系统构成,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户构成。,13,8.1.1.4 数据库技术的若干重要概念(续),数据库管理系统(Database Managemet System,DBMS):数据库管理系统是位于用户与操作系统之间的一层数据管理软件。数据库在建立、运用和维护时由数据库管理系统统一管理、统一控制。数据库管理系统使用户能方便地定义数据和操纵数据,并能够保证数据的安全性、完整性,以及多用户对数据的并发使用和发生故障后的数

6、据库恢复。 数据库应用系统(Database Application System,DBAS):数据库应用系统是由系统开发人员利用数据库系统资源开发出来的,面向某一类实际应用的应用软件系统。,14,8.1.2 关系模型和关系数据库,关系模型的基本结构是表(table),即关系(relations)。在关系数据库中,每个关系是一张命名的二维表。 关系数据库使用表(即关系)来表示实体及其联系。如表8.1所示。,15,表8.1 读者关系,16,表中的第一行表示了表的结构,其余各行是表的内容,每一行反映了一个实体的有关信息,称为一条记录。表中的每一列是一个字段。 这种用二维表的形式来表示实体和实体间联

7、系的数据模型称为关系数据模型。 从用户观点看,关系数据库是一个存放数据的表和支持这些数据的存储、检索、安全性和完整性的逻辑成分所组成的集合。,17,常用的关系术语,关系:一个关系就是一张二维表,每个关系有一个关系名。在计算机中,一个关系可以存储为一个表。如表8.1的读者关系。 关系模式:对关系的描述称为关系模式,其格式为:关系名(属性名1,属性名2,属性名n)。一个关系模式对应一个关系的结构。例如:图书(总编号、书名、书号、分类号、作者、出版单位、出版日期、单价);读者(借书证号、姓名、性别、职称、单位、电话);借阅(借书证号、总编号、借书日期、还书日期)分别描述了三个关系模式。,18,常用的

8、关系术语(续),元组:表中的行称为元组。一行是一个元组,对应存储文件的一个记录值。如表8.1有4个元组。 属性:表中的列称为属性,每一列有一个属性名,属性值相当于记录中的字段值。如表8.1的借书证号、姓名等均为属性。 元数:关系模式中属性的数目是关系的元数。如图书关系是一个8元关系。 一个具体的关系模型是若干个关系模式的集合。上面的图书、读者、借阅三个关系构成一个简化了的图书管理系统的关系模型。,19,常用的关系术语(续),域:属性的取值范围,即不同元组对同一个属性的取值所限定的范围。例如图书的分类号限定为“2个字母3个数字1个小数点3个数字”;逻辑型属性只能从逻辑真和逻辑假两个值中取值。 关

9、键字:又称为“键”或“码”,是属性或属性组合,其值能够唯一地标识一个元组,例如图书关系中的总编号,其他属性都不能起到这个作用。对于关系模式借阅,其关键字是属性组合(借书证号、总编号)。,20,常用的关系术语(续),外关键字:又称外码。某个关系模式R中的属性或属性组X并非R的关键字,但X是其他关系模式的关键字,则称X是R的外关键字。例如借书证号不是关系模式借阅的关键字,但借书证号是关系模式读者的关键字,则借书证号是关系模式借阅的外关键字。外关键字提供了数据库中多个数据表进行关联的手段。如读者关系和借阅关系就是通过借书证号来体现它们之间的联系的。借书证号是关系模式读者和借阅的公共属性,在关系模型中

10、,公共属性的属性名一般是相同的,但是并非一定要相同,只要具有相同的语义和相同的域即可。,21,8.1.3 数据库设计,数据库设计是对一个给定的应用环境,构造一个最优的数据库模式,并据此建立一个能反映现实世界的信息和信息之间的联系、满足用户对数据的要求和对数据加工的要求的数据库及其应用系统,使得数据库既能有效、安全、完整地存储大宗数据,又能满足多个用户的信息要求和处理要求。 数据库设计过程是数据库生命周期的一个阶段。数据库生命周期一般包含数据库系统的规划、设计、实现、运行管理和维护、扩充和重构等大的阶段。应该用软件工程的原理和方法来指导设计过程。,22,数据库设计步骤,需求分析。数据库设计的第一

11、步是调查与分析设计的对象,对所有可能的数据库用户的数据要求和处理要求,进行全面的了解、收集和分析。需求分析是后续各步的基础。 概念模型设计。在需求分析的基础上,构造每个数据库用户的局部视图,然后合并各局部视图,并经优化后形成一个全局的数据库公共视图。这个公共视图就是数据库的概念模型,或称为企业的组织模式,它是整个企业信息的轮廓框架,是独立于任何一种数据模型和任何具体的DBMS的信息结构的。,23,数据库设计步骤(续),逻辑设计。逻辑结构设计的任务是按照一定的规则,将概念模型转换为某种数据库管理系统所能接受的数据模型。这个数据模型需要经过优化处理,并适当考虑完整性、安全性、一致性以及恢复和效率等

12、一系列有关数据库性能的因素。逻辑设计所得到的数据模型反映了数据库的全局逻辑结构,它就是数据库的模式。在这个阶段可以用DBMS提供的DDL(数据定义语言)描述。DDL主要用于描述数据库的逻辑结构,但由于实际的DDL往往带有一些描述物理结构的成分,因此用DDL定义模式的工作一般可放在物理设计之后进行。,24,数据库设计步骤(续),物理设计。数据库的物理设计是为一个给定的逻辑数据模型选取一个最合适应用环境的物理结构的过程。这里的物理结构主要指数据库在物理设备上的存储结构和存取方法,它是完全依赖于给定的计算机系统的。,25,8.2 在SQL Server 2000中使用数据库,目前Web应用程序开发中

13、所使用的数据库管理系统有多种,中小型数据库可用Microsoft Access,而大型数据库则可以选用Microsoft SQL Server、Oracle等。 Access是Microsoft Office套件中提供的一个桌面型关系数据库管理系统。 Microsoft SQL Server是具备完全支持的新一代大型关系型数据库管理系统,是当前应用最广泛的DBMS之一。,26,8.2.1 SQL Server概述,SQL Server是使用ASP.NET进行应用系统开发的首选数据库系统。目前常用的版本是SQL Server 2000。 Microsoft SQL Server 2000使用的语

14、言称为Transact-SQL(简称T-SQL),这是一种功能强大的数据库查询和编程语言,它除了包含标准的SQL语句外,还增加了一些非标准的SQL语句。 在SQL Server 2000中,主要有两种方式对数据库、表进行操作,一是通过企业管理器界面,另一种方式是通过T-SQL命令方式。,27,SQL Server企业管理器是Microsoft管理控制台(Microsoft Management Console,MMC)的管理单元组件,它通过易于使用的图形用户界面,将所有的SQL Server对象展示在一个分层结构的控制台树中,按照“数据库服务器组”“数据库服务器”“数据库”“数据库对象(表、视

15、图等)”的层次结构组织对象并进行管理的。,28,通过T-SQL命令方式对数据库进行操作,一般可以在SQL Server的查询分析器中进行。其步骤是:打开SQL Server企业管理器选择主菜单的“工具”“SQL查询分析器”,即可在查询分析器的输入窗口中输入T-SQL命令语句。如图8.3所示。语句输完后,按下F5键,或单击工具栏中的运行按钮,将执行所输入的语句。,29,8.2.2 SQL语言,SQL是关系数据库的标准语言,是结构化查询语言(Structured Query Language)的缩写,它实际上包括定义、查询、操纵和控制四个部分,是一种功能强大、使用方便的数据库语言。 SQL语言早在

16、20世纪70年代中期由Boyce和Chamberlin提出。由于SQL具有语言简洁、方便实用、功能齐全等突出优点,很快得到推广和应用。国际标准化组织(ISO)采纳SQL为关系数据库语言的国际标准,先后推出了SQL89和SQL92(即SQL2)标准。目前已增加面向对象功能的SQL3标准即将发布。,30,SQL语言四大部分的功能,数据定义语言(Data Definition Language,DDL),用于定义、删除和修改关系模式,即定义数据库、基本表、视图、索引等操作。 数据查询语言(Data Query Language,DQL),用于查询数据库中的数据。在数据库系统中,数据的查询是最常用的操

17、作。 数据操纵语言(Data Manipulation Language,DML),用于对关系中的具体数据进增加、删除和更新等操作。 数据控制语言(Data Control Language,DCL),用来实现对数据访问权限的授予或撤消。,31,目前,各种数据库管理系统几乎都支持SQL,或者提供SQL的接口。 SQL有两种使用方法,一种是以与用户交互的方式联机使用,另种是作为子语言嵌入到其他程序设计语言中使用。前者称为交互式SQL,可以在软件开发时使用。后者称为宿主型SQL,适合于程序设计人员用高级语言编写应用程序并访问数据库时嵌入到主语言中使用。 在本书中,应用最多的是嵌入到C#中的SQL语

18、句,C#即为宿主语言。,32,8.2.3 SQL Server系统安全管理,SQL Server提供了较为复杂的数据库安全保护机制,主要有两个方面:用户身份认证和存取控制。用户身份认证即用户标识和鉴定,主要手段是用户名和口令;存取控制机制确保只授权给有资格的用户访问数据库的权限,以防止未经授权的访问。,33,每个用户,包括网络和本地用户,在访问SQL Server数据库之前,都必须经过两个阶段的安全性验证。 第一个阶段是身份验证,验证用户是否具有“连接权”,即是否允许用户访问SQL Server服务器实例,对应到连接权的用户称为登录账户(Login)或登录名。 第二个阶段是数据库的访问权,即已

19、经登录的用户是否有相应的权限在数据库中进行某种操作,如查询、更新数据的权限。,34,SQL Server的身份认证模式是指系统确认用户的方式。SQL Server 2000有两种身份认证模式,即Windows身份认证模式和SQL Server身份认证模式。 Windows身份认证模式。用户对SQL Server实例的访问控制通过Windows NT或Windows 2000操作系统完成。当连接数据库时,用户不需要提供SQL Server实例的登录账户。这样做有一个前提,即SQL Server系统管理员必须指定Windows账户或工作组作为有效的SQL Server登录账户。 SQL Serve

20、r身份认证模式。当使用SQL Server身份认证机制时,SQL Server系统管理员必须定义SQL Server登录账户和口令。当用户要连接到SQL Server实例时,必须提供SQL Server登录账户和口令。,35,在Windows NT或Windows 2000下安装或管理SQL Server实例时,SQL Server系统管理员可以选择或指定SQL Server的以下两种身份认证模式之一: 仅Windows身份认证模式。只允许采用Windows验证机制,用户不用指定SQL Server登录账户。 混合认证模式。SQL Server系统既允许使用Windows账户登录,也允许使用S

21、QL Server账户登录。,36,在企业管理器中依次展开“服务器组”“服务器”“安全性”,单击“登录”节点,就会在详细信息窗口中看到以下两个内置的登录账户。 BUILTINAdministrators。一个Windows系统用户的组,凡属于该组的系统账户都可以作为SQL Server的登录账户。 sa。SQL Server系统管理员登录账户,在混合验证模式下,该账户拥有最高的管理权限,可以执行服务器实例范围内的所有操作。,37,8.2.4 在SQL Server 2000中创建和维护数据库、表,本节以图书管理数据库、表操作为例介绍介绍Microsoft SQL Server 2000系统中数

22、据库、表的创建和维护方法。数据库名为TSGL,包含3个表:图书信息表、读者信息表和借阅信息表,各个表的名称分别为students,courses和gardes。各表的结构分别列于表8.2表8.4中。,38,表8.2 Book表结构,39,表8.3 Reader表结构,40,表8.4 Borrow表结构,41,8.2.4.1 创建数据库,在SQL Server 2000中,一个数据库是包含表、视图、存储过程等数据库对象的容器,数据库的各种数据库对象都是保存在数据库的数据文件中。 创建数据库应具备的条件是:在SQL Server 2000中,能够创建数据库的用户必须是系统管理员或具有Databas

23、e Creators权限的服务器角色。,42,1) SQL Server数据库的文件,在默认方式下,创建的数据库都包含一个主数据文件和一个事务日志文件,如果需要,可以包含辅助文件和多个事务日志文件。用户创建数据库或添加新的文件时,可以自行指定文件的路径。 下面分别说明SQL Server数据库的3类文件。,43,(1) 主数据文件(Primary File)。主数据文件是数据库的起点,指向数据库中文件的其他部分,同时也用来存放用户数据。每个数据库都有一个且仅有一个主数据文件,文件扩展名为.mdf。,44,(2) 辅助数据文件(Secondary File)。辅助数据文件专门用来存放数据。有些数

24、据库可能没有辅助数据文件,而有些数据库可能有多个辅助数据文件。辅助数据文件的扩展名为.ndf。使用辅助数据文件可以扩大数据库的存储空间,如果数据库只有主数据文件,那么该文件的最大容量受整个磁盘空间的限制,若数据库使用了辅助数据文件,则可以将该文件建立在不同的磁盘上,这样数据库的容量则不再受一个磁盘空间的限制了。,45,(3) 事务日志文件(Transaction Log File)。事务日志文件存放恢复数据库所需的所有信息。凡是对数据库中的数据进行的修改操作,如INSERT、UPDATE、DELETE等SQL语句,都会记录在事务日志文件中。当数据库遭到破坏时,可以利用事务日志文件恢复数据库的内

25、容。每个数据库至少有一个事务日志文件,也可以有多个事务日志文件,其扩展名为.ldf。,46,2) 使用图形界面创建数据库,在图形界面下创建数据库的过程如下: (1) 启动企业管理器。在企业管理器的树型界面中,展开到要创建数据库的服务器实例,右键单击结点“数据库”,在打开的快捷菜单中选中“新建数据库”菜单项。此时将出现“数据库属性”对话框。,47,(2) “数据库属性”对话框有3个选项卡:常规、数据文件、事务日志。如图8.4所示。首先在“常规”选项卡中输入要创建的数据库名称tsgl。在“数据文件”选项卡中可以看到数据库文件名、存放位置、初始大小、所属文件组,以及数据文件的空间属性,这些数据都是由

26、系统自动产生的。用户也可以根据自己的需要进行相应的修改。如可以修改主文件的位置为E:sqldata,将初始主文件的初始大小改为5MB。文件的空间属性可以选默认设置:文件按10自动增长,文件增长大小不受限制。,48,图8.4 数据库属性对话框,49,如果希望将数据库存放于多个数据文件上,此时可以在“文件名”的第2行或第3行指定辅助数据文件的文件名、存放路径、初始大小和所属文件组等。选择“事务日志”选项卡,同样可以设置日志文件的相应选项。 (3) 最后单击“确定”按钮,关闭“数据库属性”对话框,保存所创建的数据库。,50,3) 使用命令方式创建数据库。,使用命令方式创建数据库用CREATE DAT

27、ABASE命令。 CREATE DATABASE 数据库名 ON(PRIMARY NAME=数据文件的逻辑名,FILENAME=数据文件的物理名 ,SIZE=文件的初始大小 ,MAXSIZE=文件的最大容量 ,FILEGROWTH=文件空间的增长量), nLOG ON(NAME=日志文件的逻辑名, FILENAME=日志文件的物理名,51, ,SIZE=文件的初始大小 ,MAXSIZE=文件的最大容量 ,FILEGROWTH=文件空间的增长量), n 各个关键字的含义如下: ON:指定用来存储数据库数据部分的磁盘文件(数据文件)。PRIMARY:指定主文件组中的主数据文件。一个数据库只能有一个

28、主数据文件。如果没有使用PRIMARY关键字,则列在语句中的第1个文件就是主文件。,52,FILEGROWTH:指定每次需要新的空间时为文件添加的空间大小,该值可按MB、KB或%的形式指定,默认为MB。如果FILEGROWTH未指定,则默认值为10%,且最小值为64 KB。 N:占位符。表示可以为新数据库指定多个文件。 LOG ON:指定用来存储数据库日志的磁盘文件。,53,8.2.4.2 创建数据表,表是一个数据库的主要组成部分。创建数据库以后,就可以在其中建立表。 1) 使用图形界面创建表。在企业管理器中使用图形界面创建表的过程如下: (1) 打开企业管理器。选中所创建的数据库tsgl,右

29、键单击结点“表”,选中弹出菜单中的“新建表”命令,即可打开“表设计器”窗口。如图8.5所示。,54,图8.5 表设计器,55,(2) 在“表设计器”窗口中输入所要创建的表的结构,包括表的每一列的列名、数据类型、长度、是否允许空等。 “列名”也称为“字段名”,应符合命名规则:可以包含英文字母、汉字、数字、下划线;最长128个字符;同一个表中的字段名必须唯一。 “数据类型”必须是下拉表中的类型之一,可以是系统数据类型或用户定义的数据类型。SQL Server 系统数据类型见表8.5。,56,表8.5 SQL Server 系统数据类型,57,“长度”对于字符型等数据类型,只需输入字节的长度(一个汉

30、字占2个字节)。对于日期时间等类型,其长度是系统确定的,不能修改。对于精确数据类型等,还需要在表设计器下部的附加属性中,指定“精度”和“小数位数”。 在表设计器下部,可以设置当前字段的附加属性,如默认值、精度、小数位数、标识、标识种子及标识递增量等。,58,(3) 设置“主键”。方法一:选中要设置为主键的字段所在的行,然后单击工具栏上的“钥匙”按钮。方法二:右键单击要设置为主键的字段所在的行,在打开的快捷菜单中选中“设置主键”菜单项。 (4) 保存创建的表。单击工具栏上的“保存”按钮,会出现“选择名称”对话框,输入表名,单击“确定”按钮即可完成表的创建。在这里可以建立前述的Book、Reade

31、r、Borrow等3个表。,59,2) 用SQL语句创建表,CREATE TABLE 表名( 列名1 列属性 列完整性约束,列名2 列属性 列完整性约束, 表完整性约束 ) 其中,列属性的格式为:数据类型 (长度)NULL|NOT NULLIDENTITY(初始值,步长) 列约束的格式为: CONSTRAINT 约束名 PRIMARY KEY (列名) /指定主键CONSTRAINT 约束名 UNIQUE KEY (列名) /指定唯一键CONSTRAINT 约束名FOREIGN KEY (外键列)REFERENCES引用表名(引用列)CONSTRAINT 约束名CHECK(检查表达式) /指定

32、检查约束CONSTRAINT 约束名 DEFAULT 默认值 /指定默认值,60,8.2.4.3 数据表结构的修改和维护,表创建以后,可以修改其结构。在企业管理器中修改表结构的方法是:在企业管理器中,展开到数据库tsgl,右键单击要操作的表“Book”,在弹出菜单中选择命令项“设计表”,则打开如图8.5的表设计器窗口。该窗口和创建表时的窗口是一样的,所做操作也基本相同。 下面介绍使用企业管理器对表的数据进行添加、修改和删除的方法。这里以表Book为例。,61,1)在企业管理器中,展开到数据库tsgl,右键单击要操作的表“Book”,在弹出菜单中选择命令项“打开表”“返回所有行”,即可打开数据录

33、入窗口。如图8.6所示。 在打开的数据录入窗口中,可以对表进行添加记录、修改数据、删除记录等操作。 要添加数据记录,直接在最后一行添加即可。 删除记录的方法是:选中要删除的行,右键单击此行,在打开的快捷菜单中选中“删除”命令。,62,图8.6 数据录入窗口,63,8.2.4.4 T-SQL的数据更新语句,表中数据的添加、删除和修改也可以用SQL语句来实现。T-SQL的数据更新语句包括INSERT、UPDATE、DELETE语句。,64,1) 数据插入语句INSERT,INSERT语句可给表添加一个或多个新行。其语法格式如下:INSERT INTO table_or_view (column_l

34、ist) data_values 此语句将使data_values作为一行或者多行插入已命名的表或视图中。column_list是由逗号分隔的列名列表,用来指定为其提供数据的列。如果没有指定column_list,表或者视图中的所有列都将接收数据。,65,如果column_list没有为表或视图中的所有列命名,将在列表中没有命名的任何列中插入一个null值(或者在默认情况下为这些列定义的默认值)。在列的列表中没有指定的所有列都必须允许null值或者指定的默认值。 在执行INSERT语句时,所提供的数据值必须与列的列表匹配。数据值的数目必须与列数相同,每个数据值的数据类型、精度和小数位数也必须与

35、相应的列匹配。如果插入的数据与约束或规则的要求产生冲突或值的数据类型与列的数据类型不匹配,那么INSERT执行失败。,66,指定数据值的两种方法:,第一种方法是用VALUES子句为一行指定数据值: 例8.1 向表Reader中插入一条记录:INSERT INTO ReaderVALUES(1203,王大力,男,副教授,计算机系,13900015678) 例8.2 向表Reader中插入一条记录:INSERT INTO Reader(借书证号,姓名) VALUES(1303, 赵勇);,67,指定数据值的两种方法:,第二种方法是用SELECT子查询为一行或多行指定数据值。 例8.3 首先用如下的

36、CREATE语句建立一个表Reader2:CREATE TABLE Reader2( 借书证号 char(4) NOT NULL,姓名 char(8) NOT NULL,单位 char(10) ) 用如下的INSERT语句向Reader2表中插入数据:INSERT INTO Reader2SELECT 借书证号,单位,姓名FROM ReaderWHERE 单位=计算机系,68,2) 数据删除语句DELETE,DELETE语句的功能是从表中删除行,其基本语法格式是:DELETE FROM table_name|view_nameWHERE 该语句的功能为从table_name指定的表或view_

37、name所指定的视图中删除满足条件的行,若省略该条件,表示删除所有行。 例8.4 将TSGL数据库的Reader表中姓名为“王大力”的行删除,使用如下的SQL语句:DELETE FROM ReaderWHERE 姓名王大力,69,3) 数据修改语句UPDATE,UPDATE语句可以用来修改表中的数据行,其基本格式为:UPDATE table_name|view_nameSET column_name=expression|DEFAULT|NULL,nWHERE 该语句的功能是:将table_name指定的表或view_name所指定的视图中,满足条件的记录中由SET指定的各列的列值设置为SET

38、所指定的新值。若不使用WHERE子句,则更新所有记录的指定列值。,70,例8.5 将Reader表中姓名为“王大力”的读者的职称改为“教授”,使用如下的SQL语句:UPDATE ReaderSET 职称 = 教授WHERE 姓名王大力,71,8.2.4.5 建立表之间的依赖关系,数据库中的表往往不是彼此孤立的,它们之间会有密切的联系,因此建立和利用表之间的依赖关系对于数据库应用程序开发是十分重要的。 下面介绍创建数据库关系图的方法。1) 在企业管理器中,展开到数据库tsgl,右键单击结点“关系图”,在打开的快捷菜单中选定“新建数据库关系图”,取消向导方式,右键单击“关系设计窗口”的空白处,在打

39、开的快捷菜单中选定“添加表”菜单项,依次添加Borrow、Book、Reader三个表。,72,2) 拖动Borrow表的“总编号”字段,拖到表Book上,即自动打开“创建关系”对话框,如图8.7所示,按图示进行设置,即建立了Borrow表和Book表之间的关系。 采用同样的方法,可以建立Borrow表和Reader表之间的关系。结果如图8.8所示。 图中的锁链端表示外键所在的表,钥匙端表示主键所在的表,即分别表示引用方和被引用方。,73,图8.7 创建关系对话框,74,图8.8 图书管理系统中表之间的关系,75,8.2.5.1 视图的概念,视图(View)是从一个或几个基本表(Base Ta

40、ble)或其他视图导出来的表。视图本身并不独立存储数据,系统只保存视图的定义。在访问视图时,系统将按照视图的定义从基本表中存取数据。因此,视图是个虚表,它动态地反映基本表中的当前数据。从用户的观点看,基本表和视图都是关系,用SQL一样访问。,76,8.2.5.2 创建视图,在SQL Server 2000中,创建视图可以用两种方法:一是在企业管理器中使用可视化的方法或视图向导进行,二是使用T-SQL的CREATE VIEW语句。本节介绍第二种方法。见例8.6,77,例8.6 创建包含计算机系的读者信息的视图。USE TSGLGOCREATE VIEW V_JSJXASSELECT *FROM

41、READERWHERE 单位=计算机系WITH CHECK OPTIONGO,78,8.2.5.3 视图的查询和更新,视图定义后,就可以如同查询基本表那样对视图进行查询,在此不再赘述。 但视图的更新(包括增加、删除、修改记录)是受限的。因为对视图的操作最终要转换为对基本表的操作,而有些视图的更新不能唯一地有意义地转换为对相应基本表的更新。一般地,行列子集视图是可以更新的。所谓行列子集视图是从单个基本表导出,并且只是去掉了基本表的某些行和某些列,但保留了关键字的视图。,79,8.3 SQL的数据查询 8.3.1 SQL的SELECT查询概述,在数据库应用中,最常用的操作是查询,同时查询还是数据库

42、的其他操作(如统计、插入、删除及修改)的基础。SELECT查询是SQL语言的核心,功能强大,和各类SQL子句相结合,可以完成各类复杂的查询操作。 SELECT查询是高度非过程化的,用户只需要指出查询要求和查询目标,不需要指出如何去查询,系统自动对查询过程进行优化,可以实现对数据库及其数据表的高速查询。SELECT查询的结果是元组的集合。,80,SELECT语句的完整语法较为复杂,其主要的子句可归纳如下:SELECT select_list INTO new_table FROM table_source WHERE search_condition GROUP BY group_by_expr

43、ession HAVING search_condition ORDER BY order_expression ASC | DESC ,81,其中,SELECT子句用于指定由查询返回的列;INTO子句用于创建新表并将结果行从查询插入新表中;FROM指定从其中检索行的表或视图,即查询结果的来源;WHERE子句用于指定用于限制返回的行的搜索条件;GROUP BY子句用于按指定的列进行分组;HAVING子句通常与 GROUP BY子句一起使用,用于指定组或聚合的过滤条件;ORDER BY子句用于对查询的结果进行排序,ASC指定按递增顺序排序,DESC指定按递减顺序排序,缺省值是ASC。 可以在查询

44、之间使用UNION运算符,以将查询的结果组合成单个结果集。,82,例8.7 查询全部图书的情况。SELECT *FROM Book例8.8 查询计算机系所有读者的姓名和职称。SELECT 姓名,职称FROM ReaderWHERE 单位=计算机系,8.3.2 基本查询,83,例8.9 查找清华大学出版社的所有图书及单价,结果按降序排列。SELECT 书名,出版单位,单价FROM BookWHERE 出版单位=清华大学出版社ORDER BY 单价 DESC,84,1)DISTINCT子句,DISTINCT子句的作用是在查询结果中去掉重复元组。试比较例8.8和例8.9的结果。例8.10 DISTI

45、NCT子句的使用。SELECT DISTINCT书名,出版单位,单价FROM BookWHERE 出版单位=清华大学出版社ORDER BY 单价 DESC,85,2) 常用聚合函数,对表数据进行检索时,经常需要对结果进行汇总或计算,例如在图书管理数据库中求图书的平均价格等。聚合函数用于计算表中的数据,返回单个计算结果。常用的聚合函数列于表8.6中。,86,表 8-6 常用聚合函数,87,例8.11 计算所藏图书的总价值SELECT SUM(单价) AS 图书总值FROM BOOK,88,3) GROUP BY子句,GROUP BY子句可以实现分组统计。例8.12 计算所藏图书中各个出版社所出版

46、图书的册数SELECT 出版单位,COUNT(*) AS 图书总册数FROM BOOKGROUP BY 出版单位,89,8.3.3 多表连接查询,在查询中,数据来源往往不止是一个表,而是涉及到多个表,查询时这些表不是彼此孤立的,而必须通过其内在的逻辑关系建立连接,因此这种查询称为多表连接查询。这种连接分为交叉连接、内连接、外连接和自连接4种。其中最常用的是自然连接,即去掉重复属性的等值连接。交叉连接的结果是两个表的笛卡儿积,在实际应用中一般是没有意义的。,90,8.3.3.1 内连接,内连接按照ON所指定的条件连接两个表,返回满足条件的行。内连接是系统默认的,可以省略INNER关键字。内连接可

47、以有两种书写格式。 例8.13 查询所有借出去的图书的书名及借出日期。 第一种格式:SELECT 书名,借书日期FROM Borrow , Bookwhere Borrow.总编号= Book.总编号 第二种格式:SELECT 书名,借书日期FROM Borrow JOIN Book ON Borrow.总编号= Book.总编号,91,内连接还可以实现多表查询。见例8.14。 例8.14 查询所有借出去的图书的信息,包括书名和读者姓名。SELECT Borrow.*,Reader.姓名, Book.书名FROM Book JOIN Borrow JOIN Reader ON Reader.借

48、书证号= Borrow.借书证号 ON Borrow.总编号= Book.总编号 请注意表名和ON子句的书写顺序。,92,8.3.3.2 外连接,外连接的结果不仅包含满足连接条件的行,还包括相应表中的所有行 外连接包括三种: 左外连接(LEFT OUTER JOIN):结果表中除了包括满足连接条件的行外,还包括左表的所有行。 右外连接(RIGHT OUTER JOIN):结果表中除了包括满足连接条件的行外,还包括右表的所有行。 完全外连接(FULL OUTER JOIN):结果表中除了包括满足连接条件的行外,还包括两个表的所有行。 其中的OUTER关键字均可省略。,93,外连接只能对两个表进行

49、。 例8.15 查询所有读者的借书信息。包括读者姓名、单位以及所借图书总编号、借书日期。SELECT READER.姓名, READER.单位, BORROW.总编号, BORROW.借书日期FROM READER LEFT OUTER JOIN BORROW ON READER.借书证号=BORROW.借书证号 结果如图8.9所示。从结果可以看出,查询结果包括未借书的读者的信息,相应行的借阅信息字段为NULL。,94,图8.9 外连接的执行结果,95,8.3.4 嵌套查询,在SQL语言中,当一个查询块嵌套在另一个查询块内部时,称为之子查询。 在执行嵌套查询时,每一个内层子查询是在上一级外层处理之前完成的,即外层用到内层的查询结果,从形式上看是自下而上进行处理的,因此按照手工查询的思路可以很自然地组织嵌套查询。,96,8.3.4.1 用IN指出包含在一个子查询模块的查询结果中,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 教学课件 > 大学教育

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1