【教学课件】第1章Access数据库基础.ppt

上传人:牧羊曲112 文档编号:5658011 上传时间:2023-08-06 格式:PPT 页数:183 大小:1.19MB
返回 下载 相关 举报
【教学课件】第1章Access数据库基础.ppt_第1页
第1页 / 共183页
【教学课件】第1章Access数据库基础.ppt_第2页
第2页 / 共183页
【教学课件】第1章Access数据库基础.ppt_第3页
第3页 / 共183页
【教学课件】第1章Access数据库基础.ppt_第4页
第4页 / 共183页
【教学课件】第1章Access数据库基础.ppt_第5页
第5页 / 共183页
点击查看更多>>
资源描述

《【教学课件】第1章Access数据库基础.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第1章Access数据库基础.ppt(183页珍藏版)》请在三一办公上搜索。

1、,第1章 Access数据库基础,第2章 SQL Server基础,第3章 Visual Basic 数据库访问概述,第4章 用户界面控件,第5章 数据访问对象(DAO),第6章 开放式数据库连接与远程数据对象,第7章 Active X数据对象(ADO),Visual Basic数据库应用电子教案,第8章 报表,第1章 Access数据库基础,返回总目录,第2章 SQL Server基础,返回总目录,第3章 VB数据库访问概述,返回总目录,第4章 用户界面控件,返回总目录,第5章 数据访问对象,返回总目录,返回总目录,第6章 开放式数据库连接与远程数据对象,返回总目录,第7章 ActiveX数

2、据对象,返回总目录,第8章 报表,1关系数据库系统,关系数据库系统是指支持关系模型的数据库系统。关系模型由关系数据结构、关系操作集合和完整性约束三部分组成。,2数据库的定义,在关系数据库模型中,数据库为一些相互之间存在一定关联的表格的集合。一个表格是由若干的行(记录)来构成。字段是记录的一部分。数据表有以下特点:数据表的任意行和列可以以任何顺序排列;数据表的名称必须唯一;数据表中不能有重复的记录,每条记录都是可以辨认的。,1.1.1 关系数据库的定义,1主关键字,在关系的各种属性中,能够用来唯一标识记录的属性称为关键字。主关键字不允许为空或重复,并且要保证其唯性,以保证数据的的完整性。,2外关

3、键字,在实现关系数据库时,必须能表示表与表之间的联系。因此,需要一个表中的一列与另一个表的主关键字相匹配,这样的列可以做为外关键字。这种完整性规则,称为引用完整性。,1.1.2 主关键字和外关键字,关系数据库的模型简明,便于用户理解;用户对数据库的操作使用了非过程化的表示,操作方便;用户接口不涉及任何存储路径和存储方式,数据独立性高。此外,关系数据库有着网状数据库和层状数据库所没有的强大数学基础;关系数据库管理程序能够在同一时刻对多个表格进行操作,这种能力可以将数据分成更合乎逻辑的和易于管理的类别,关系数据库常常由许多通过“关系”联系起来的表格组成。,1.1.3 关系数据库的特点,1Visua

4、l Basic访问数据库的类型,在Visual Basic中通过数据访问控件或数据访问对象(DAO)等可以访问的数据库有以下几种:JET数据库,即Microsoft Access数据库;ISAM数据库,例如:dBase,FoxPro数据库等;ODBC数据库,凡是遵循ODBC标准的客户/服务器数据库。,2外关键字,Visual Basic访问数据库通常有下面三种途径:通过数据库控制控件Data Control访问;通过VB提供的数据库对象变量编程访问;通过ODBC接口访问ODBC API函数。,返回本章目录,1.1.4 Visual Basic访问数据库的类型与途径,1Access的对象,Acc

5、ess 2000支持的对象包括表、查询、报表、窗体、宏、模块及网页。Access所提供的这些对象都存放在同一个数据库文件(.mdb文件)中,而不像其他数据库那样分别存放于不同的文件中。这样就方便了数据库文件的管理。,2Access的主要功能,定义数据创建表,利用表存储相应的信息;根据需要定义各表之间的关系;方式多样的数据处理能力;创建Web页,建立对Internet和Intranet的支持;开发应用程序。,1.2.1 Access的特点,1Access主窗口,1.2.2 熟悉Access开发环境,2数据库窗口,返回本章目录,1.2.2 熟悉Access开发环境,1.设计数据库的基本步骤,对数据

6、库进行总体的设计;规划该数据库中需要建立的表;确定表中所需的字段;明确有唯一值的字段;确定表之间的关系;优化设计;输入数据并新建其他数据库对象;使用Microsoft Access的分析工具设计输出报表。,1.3.1 数据库的设计,1打开数据库,在使用数据库之前,必须打开数据库。启动Access后,弹出如下图所示“Microsoft Access”对话框,从中选择“打开已有数据库”选项,选择所要打开的数据库,单击“确定”按钮,即可打开此数据库。如果在“打开已有数据库”下面的选项框里没有所需要的数据库,单击“更多的文件”选项,进行操作。,1.3.2 数据库的创建与打开,2创建Access数据库,

7、Microsoft Access 提供两种创建 Access 数据库的方法:使用“数据库向导”创建数据库,利用系统提供的模板来选择数据库类型来创建所需的表、窗体及报表。采用这种方法,一次操作即可为所选数据库类型创建必要的表、窗体及报表,这是创建数据库最简单最快速的方法。先创建一个空数据库,然后再添加表、窗体、报表及其他对象,这是最灵活的方法,但需要分别定义每一个数据库要素。无论哪一种方法,在数据库创建之后,都可以随时修改或扩展数据库。,1.3.2 数据库的创建与打开,1表的设计过程,表格设计的基本过程为:打开数据库;建立一个新表;输入每一个字段名、数据类型和说明;确定为每一个字段定义的属性;设

8、置个主关键字;为某些字段建立索引;保存设计。,1.3.3 创建表,2创建表的方法,创建表有很多方法,基本的主要有两种方法:使用表向导创建表 在“设计”视图中创建表,1.3.3 创建表,修改字段删除字段增加字段修改字段的属性修改表与表之间的关系,1.3.4 修改表,一个数据库系统被设计出来以后,当出现新的需求时,往往要对表的结构进行修改。,除此之外,还包含设置数据表格式、隐藏和冻结列、多级显 示记录和使用查阅向导等。,对表进行修改的操作包括:,数据库中的表一般来讲并不是相互独立、互不相关的,表与表之间存在着一定的联系,也正因为这些联系才体现出了数据库的优越性。单击”数据库“窗口工具栏上的”关系“

9、按钮,出现如下图所示的关系窗口。,关系窗口里列出了所有已经存在的表与表之间的联系,这种联系通过表之间的连线体现出来。,1.3.5 修改表间的关系,通过上面的操作,我们创建了一个数据库,但数据库中并没有数据,下面我们为数据库输入数据,使之成为一个完整的数据库。下图为一数据输入窗口。,返回本章目录,1.3.6 表中数据输入,本实例首先创建一个名为“学生信息”的数据库,然后在该数据库中创建三张数据表:“学生成绩”、“姓名”和“学生联系表”,并输入一部分数据记录,最后建立了表间关系。设计步骤如下:,启动Access 2000并创建空数据库,命名为“学生成绩.mdb”。为数据库创建表,为了输入部分数据,

10、我们使用设计器来创建一个新表。定义字段,如下页所示。,数据库设计实例,数据库设计实例,保存数据表,命名为“学生成绩”;根据需要定义主键;输入数据;双击数据库视图中的“学生成绩”表,在如下图所示的表视图中添加几条新的记录,依次输入学号、姓名等字段。,数据库设计实例,依照步骤,再建立“姓名”表和“学生联系”表,如下图所示,两张表均定义“学号”为主键。,数据库设计实例,建立表间关系,返回本章目录,数据库设计实例,Microsoft SQL Server2000是一个分布式的关系数据库管理系统,具有客户机/服务器体系结构,使用Transact-SQL语言在客户机和服务器之间传递客户机的请求和服务器的处

11、理结果。,Microsoft SQL Server2000系统具有动态的数据存储机制。Microsoft SQL Server2000系统具有强大的安全措施。Microsoft SQL Server2000系统具有很强的数据互操作性。Microsoft SQL Server2000系统具有功能强大的网上功能,可以在Internet上发布数据库中的数据。Microsoft SQL Server2000虽然采用了分布式的计算模式,但是它也支持单用户的计算模式。Microsoft SQL Server2000系统具有内置的数据复制功能。,2.1.1 Microsoft SQL Server 2000

12、的特点,SQL Server 企业管理器是一个集成化的数据库操作环境,是基于一种新的被称为微软管理控制台的公共服务器管理环境,是SQL Server中最重要的一个管理工具。下图是一个典型的SQL Server 企业管理器窗口。,2.1.2 SQL Server 企业管理器(Enterprise Manager),SQL Query Analyzer既是一个图形化的执行Transact-SQL查询语句的强大工具,又是一个方便易用的工具。见下图是一个典型的SQL Query Analyzer窗口。,返回本章目录,2.1.3 SQL 查询分析器(Query Analyzer),SQL语言是结构化查询

13、语言(Structure Query Language)的简称,是当前最流行的数据库语言,是访问关系数据库的标准语言。Microsoft 的SQL Server使用的SQL语言叫Transact-SQL(事务SQL,简称T-SQL)。,一体化的特点,集数据查询、数据定义、数据操纵、数据控制功能为一体;高度非过程化语言,只需要提出“干什么”,而不需指出“如何干”,语句的操作过程由系统自动完成;语言简洁,类似于人的思维习惯,容易理解和掌握;可以直接以命令方式交互使用,也可以嵌入到程序设 计语言中使用。,Transact-SQL语言有以下几个主要特点:,2.2.1 SQL 概述,Transact-S

14、QL语言按其功能,可分为四大部分:数据定义功能、数据控制功能、数据查询功能和数据操纵功能。,数据定义(DDL):实现定义、删除和修改数据库对象的功能(CREATE、DROP、ALTER)。数据查询(QL):实现查询数据的功能(SELECT)。数据操纵(DML)实现对数据库数据的增加、删除和修改的功能(INSERT、UPDATE、DELETE)。数据控制(DCL):实现控制用户对数据库的操作权限的功能(GRANT、REVOKE、DENY)。,2.2.1 SQL 概述,Bigint Int Smallint Tinyint Bit Numeric(p,s)Decimal(p,s)Float Rea

15、l,1数值型,2字符数据类型,字符型数据是由汉字、字母、数字和各种符号组成的,在SQL Server 2000中,默认情况下,字符数据是用单引号括起来的。,普通编码:Char(n)Varchar(n)Text Unicode编码:Nchar(n)Nvarchar(n)Ntext 二进制编码:Binary(n)Varbinary(n)Image,2.2.2 Transact-SQL 数据类型,数值型有以下几类:,SQL Server 2000提供了两种用存储日期和时间的数据类型:datetime和smalldatetime。当存储此种类型数据时,默认的格式是MMDDYYYYhh:mm:ss AM

16、/PM,当插入数据或在其它地方使用该类型时,需用单引号把它括起来。,3日期时间类型,输入日期数据时,可采用如下几种输入格式:,Apr 22 2003/*英文数字格式*/2003-04-22/*数字加分隔符格式*/20030422/*纯数字格式*/,输入时间时,可采用12小时格式或24小时格式:,2003-04-22 2:25:35 PM/*12小时格式*/2003-04-22 14:25:35/*24小时格式*/,2.2.2 Transact-SQL 数据类型,货币数据表示正的或负的货币值,在SQL Server 2000中使用Money和Smallmoney数据类型存储货币数据。,4货币类型

17、,货币类型的数据实际上都是带有4位小数的decimal类型的数据。,在Money或Smallmoney类型的字段中输入货币数据时必须在数值前加上一个货币符号,如$符号;输入负值时,应当在货币数据的后面加一个负号。,2.2.2 Transact-SQL 数据类型,一个语句批是一组Transact-SQL语句的集合,语句批的结束标记为:GO,1语句批,脚本是存储在文件中的一组Transact-SQL语句的集合。,2脚本,3注释,注释是程序代码中不执行的文本字符串,Transact-SQL支持两种类型的注释:一种是单行注释“-”;另一种是块注释即“/*/”。,SQL Server中的编程语言是Tra

18、nsact-SQL,Transact-SQL是一种非过程化的高级语言,其基本成分是语句,由一个或多个语句构成一个批处理,由一个或多个批处理构成一个脚本,并保存到磁盘文件中。,2.2.3 基本概念,标准标识符可以包含1128个字符,包括字母、符号(_、#、$)及数字。标准标识符里不允许有空格,应遵循:第一个字符必须是字母(az或AZ),第一个字符后面可以是数字、字符或符号。但当第一个字符是符号时,则有如下特殊含义:,1标准标识符,以开头的标识符代表一个局部变量或参数 以#号开头的标识符代表一个临时表或存储过程 以#号开头的标识符代表一个全局临时对象,2.2.4 SQL Server命名规则,2限

19、定标识符,如果不遵守一个或多个标准标识符格式规则时,必须使用限定标识符。一般地,在下列两种情况下使用限定标识符:当对象名中包含空格时 当保留关键字被用作对象名或对象部分的名字时,当限定标识符出现在Transact-SQL语句中时,必须用方括号()或双引号(“”)将限定标识符括起来。,返回本章目录,2.2.4 SQL Server命名规则,数据库是数据和数据库对象的容器。数据库对象就是存储和管理数据的结构形式,这些数据库对象主要包括数据库图表、表、函数、视图、存储过程、触发器等。设计数据库的过程就是设计这些数据库对象的过程。,1数据库对象,事务就是一个单元的工作,该单元的工作或者全部完成,或者全

20、部不完成。SQL Server 2000系统具有事务功能,可以保证数据库操作的一致性和完整性。,2事务和事务日志,3数据库文件和文件组,数据库的物理表现是操作系统文件。SQL Server 2000使用一组 操作系统文件来创建一个数据库。数据库中的所有数据和对象,都存储在这些操作系统文件中。如前所述,这些操作系 统的文件有两种形式:一种是数据文件,另一种 是日志文件。文件组就是数据文件的集合。,2.3.1 SQL Server 2000数据库特点,1创建数据库,在企业管理器中,打开左边的树状结构,在数据库文件夹或其下属任一数据库图标上右击,从弹出的快捷菜单中选择新建数据选项,或直接单击工具栏上

21、的“新数据库”图标,然而按步骤依次进行操作。,CREATE DATABASE语句的语法形式如下:,CREATE DATABASE database_name ON PRIMARY,n,n LOG ON,n,示例,2.3.22.3.3 创建和管理数据库,可以在SQL Server企业管理器中创建数据库,也可使用Transact-SQL语句中的CREATE DATABASE命令来创建数据库。,创建一个示例数据库。该数据库的主数据文件的逻辑名称是示例数据库_data,物理文件是示例数据库.mdf,大小是10MB,最大是30MB,以20%的速度增加;该数据库的日志文件的逻辑名称是示例数据库_log,操

22、作系统文件是示例数据库.ldf,大小是3MB,最大是10MB,以1MB的速度增加。,CREATE DATABSE 示例数据库ON PRIMARY(NAME=示例数据库_data,FILENAME=C:Microsoft SQL Serverdata示例数据库.mdf,SIZE=10MB,MAXSIZE=30MB,FILEGROWTH=20%)LOG ON(NAME=示例数据库_log,FILENAME=C:Microsoft SQL Serverdata示例数据库.ldf,SIZE=3MB,MAXSIZE=10MB,FILEGROWTH=1MB),创建和管理数据库示例,数据库创建以后,可以在企

23、业管理器中利用数据库的属性设置,来更改创建时的某些设置和创建时无法设置的属性。,2修改数据库,也可使用ALTER DATABSE语句来修改数据库。语法如下:,ALTER DATABASE databasename|ADD LOG FILE,n|REMOVE FILE logical_file_name WITH DELETE|ADD FILEGROUP filegroup_name|REMOVE FILEGROUP filegroup_name|MODIFY FILE|MODIFY NAME=new_dbname,示例,2.3.22.3.3 创建和管理数据库,为了扩大示例数据库的数据文件,可以

24、增加一个次要数据文件示例数据库_data2,其大小为10MB,最大是20MB,以20%的速度增长。,ALTER DATABASE 示例数据库ADD FILE(NAME=示例数据库_data2,FILENAME=C:Microsoft SQL Serverdata示例数据库2.mdf,SIZE=10MB,MAXSIZE=20MB,FILEGROWTH=20%),创建和管理数据库示例,对于那些不再需要的数据库,可以删除它以释放在磁盘上占用的空间。在企业管理器中,右击所要删除的数据库,从弹出的快捷菜单中选择“删除”选项或直接按下键盘上的Delete按钮即可删除数据库,也可以选择数据库文件夹或图标后单

25、出工具栏中的“删除”图标来删除数据库。,3删除数据库,也可以利用DROP DATABASE语句来删除数据库。语法如下:,DROP DATABASE database_name,n,例:删除已建立的示例数据库,DROP DATABASE 示例数据库,返回本章目录,2.3.22.3.3 创建和管理数据库,表是包含数据库中所有数据的数据库对象。既可以使用CREATE TABLE 语句创建表,也可以通过企业管理器创建表。,使用CREATE TABLE 语句的语法如下:,CREATE TABLE database_name.owner.|owner.table_name(|column_name AS

26、computed_column_expression|,n),示例,在企业管理器中,展开指定的服务器和数据库,打开想要创建新表的数据库,右击表对象,并从弹出的快捷菜单中选择“新建表”选项,然后按步骤操作即可。,2.4.1 创建表,在示例数据库中创建学生表,该表包含了学生的有关信息:学号、姓名、性别、班级、年龄。,USE 示例数据库CREATE TABLE 学生表(学号 int NOT NULL,姓名 varchar(50)NULL,性别 char(1)NULL,班级 char(10)NULL,年龄 int NULL)ON PRIMARY,创建表示例,ALTER TABLE table_name

27、 ALTER COLUMN column_name new_data_type(precision,scale)|ADD,n|DROP COLUMN column,n,1用ALTER TABLE增加、删除、修改字段,例:在学生表中,增加一个字段“出生年月”,该字段的数据类型为datetime,允许为空,没有默认值。,ALTER TABLE 学生表 ADD 出生年月 datetime null,2在企业管理器中增加、删除、修改字段,在企业管理器中,打开指定的服务器中要修改的表的数据库,用右键单击进行修改的表,从弹出的快捷菜单中选择“设计 表”选项,然后按步骤操作即可。,2.4.2 修改、删除表结

28、构,删除表就是将指定的表中的数据和表的结构从数据库中永久性地去除。表删除之后,就不能再恢复该表的定义。,3删除表的结构,删除表也可以使用DROP TABLE语句,该语句的语法形式如下:DROP TABLE table_name,可以使用企业管理器删除表,在该工具中,打开指定表所在的数据,右击该表,从弹出的菜单中选择“删除”项即可。当然,系统表不能被删除。,如:DROP TABLE 学生表,2.4.2 修改、删除表结构,表创建之后,只是一个空表。因此,向表中插入数据是在表结构创建之后,首先需要执行的操作。在表中插入数据,使用INSERT语句。该语句的语法形式如下:,1插入数据,例:要求往学生表中

29、插入一行数据:学号为999999,姓名为张小三,性别为男,其它情况未知。可用以下三种方式完成:,INSERT INTO table_name(column_list)VALUES(DEFAULT|NULL|expression,n)|DEFAULT VALUES,INSERT INTO 学生表(学号,姓名,性别)VALUES(999999,张小三,M),INSERT INTO 学生表 VALUES(999999,张小三,M,NULL,NULL),INSERT INTO 学生表 VALUES(999999,张小三,M,DEFAULT,DEFAULT),注意:INSERT语句每一次只能插入一行数据

30、,在向表 中插入数据时要注意,字符数据和日期数据要 使用单引号引起来。,2.4.3 操纵数据,可以使用UPDATE语句修改表中已经存在的数据。UPDATE语句既可以一次修改一行数据,也可以一次修改多行数据。其语法形式如下:,2修改数据,例:将学生表中学生的年龄都提高1岁,UPDATE table_name SET column_name=expression|DEFAULT|NULL|variable=expression|variable=column=expression,n FROM,n WHERE,UPDATE 学生表 SET 年龄=年龄+1,2.4.3 操纵数据,删除数据可以使用DE

31、LETE语句。DELETE语句可以一次从表中删除一行或多行数据。其语法形式如下:,3删除数据,例:删除学生表中班级为GZ02房产的全部学生信息。,DELETE FROM table_name FROM,n WHERE,DELETE FROM 学生表 WHERE 班级=GZ02房产,注意:DELETE 语句只是删除表中的数据,表本身依然存在于数据库中。如果需要删除表本身,则应使用前面已经讲 过的DROP TABLE语句。,返回本章目录,2.4.3 操纵数据,数据检索就是把数据库中存储的数据根据用户的需求提取出来的过程,并且使用SELECT语句进行数据检索。,SELECT语句完整的语法形式非常复杂

32、,这里给出如下的SELECT简洁语法形式:,SELECT ALL|DISTINCT select_list INTO new_table_name FROM table_name|view_name,table_name|view_name,WHERE clause GROUP BY clause HAVING clause ORDER BY clause COMPUTE clause FOR BROWSE,2.5.1 SQL查询的基本结构,在上述结构中:,SELECT子句用于指定输出的字段;FROM 子句用于指定数据的来源;WHERE 子句用于指定数据的选择条件;GROUP BY 子句用于对

33、检索到的记录进行分组;HAVING 子句用于指定组的选择条件;ORDER BY 子句用于对查询的结果进行排序,在这些子句中,SELECT子句和FROM子句是必须的,其它子句都是可选的。,以下所有的举例都是以示例数据库为基础的,示例数据库中建立了三张表:学生表、选课表、课程表,具体结构见教材图2.14、图2.15、图2.16所示。,2.5.1 SQL查询的基本结构,SELECT ALL|DISTINCT select_listFROM table_name|view_name 其中:select_list指定了要返回的列;FROM子句指定了返回的行和列所属的表或视图。,SELECT子句的部分语法

34、形式:,1选择列,最简单的查询:检索学生表中的全部信息。,SELECT*FROM 学生表,*表示检索全部列。在这个结果中,显示的信息与数据在表中存储的顺序完全一样。,可在SELECT 后面指出要检索的列名:检索每一个学生的姓名和班级。,SELECT 姓名,班级 FROM 学生表,SELECT 班级,姓名 FROM 学生表,列顺序的改变,只是影响数据结果的显示,对于表中的数据的存储顺序无任何影响。,2.5.2 SELECT 子句,在默认情况下,数据检索结果集中所显示出来的列标题就是在创建表时所使用的列名。但是,显示的列标题也是可以改变的。改变列标题有两种方法:使用“=”;使用AS关键字。,检索学

35、生表中的学号、姓名和班级信息,要求班级以“所在班级”列标题输出。,SELECT 学号,姓名,所在班级=班级 FROM 学生表,SELECT 学号,姓名,班级 AS 所在班级 FROM 学生表,2改变列标题,上面两个语句查询显示结果完全相同,2.5.2 SELECT 子句,SELECT子句中可以包含算术表达式,允许+、-、*、/,当然也可以是常量。,要求输出成绩提高20%后的成绩:,SELECT 学号,课程号,成绩,成绩*1.2 AS 提高后的成绩 FROM 选课表,SELECT DISTINCT 学号 FROM 选课表,3带表达式的SELECT子句,4ALL与DISTINCT,SQL允许关系和

36、查询结果中出现重复行,要强制消除重复,可在SELECT后使用关键字DISTINCT,而指定ALL则不消除重复。在MSSQL中,默认为ALL。,在选课表中,一个学生可以同时选多门课,如果要求检索出已经 选过课的学生学号:,2.5.2 SELECT 子句,在SELECT语句中,WHERE子句指定要检索的数据行,将WHERE关键字后面的搜索条件为真的记录全部检索出来。,要求检索出选课表中所有选修了1号课程的同学的学号和成绩:,SELECT 学号,成绩 FROM 选课表 WHERE 课程号=1,SELECT 学号,成绩 FROM 选课表 WHERE 课程号=1 AND 成绩=80,1比较运算符,2逻辑

37、运算符,要求检索出选修了1号课程并且成绩在80分以上的同学的学号和成绩,2.5.3 用WHERE 子句过滤记录,要求检索出学生表中年龄在20至23之间的所有男同学:,SELECT*FROM 学生表 WHERE 年龄 BETWEEN 20 AND 23 AND 性别=M,SELECT*FROM 学生表 WHERE 班级 IN(GZ02计5,GZ02计5,GZ02计5),3BETWEENAND,4IN(NOT IN),IN或者NOT IN关键字允许指定要选择的取值表,意思是包含在由IN指定的列表之中或不包含在由NOT IN指定的列表中。,BETWEENAND可以指定搜索范围,表示在之间。,要求检索

38、出学生表中GZ02计5、GZ02计6、GZ02计7三个班级的同学信息:,2.5.3 用WHERE 子句过滤记录,SELECT*FROM 学生表 WHERE 姓名 LIKE 陈%,SELECT*FROM 学生表 WHERE 姓名 LIKE 陈_ _,5字符串模糊匹配,LIKE关键字用于检索与特定字符串相匹配的记录行。在LIKE关键字中,可以使用4种匹配符:%、_、。带有匹配符的字符串必须使用引号引起来。,要求检索出学生表中所有姓“陈”的同学 信息:,要求检索出学生表中所有不姓“陈”的同学 信息:,在使用LIKE进行数据检索时,应注意,一个英文字母和一个汉字都是一个字符。,2.5.3 用WHERE

39、 子句过滤记录,SELECT 学号,成绩 FROM 选课表 WHERE 课程号=1 ORDER BY 成绩 DESC,SELECT 学号,成绩 FROM 选课表 WHERE 课程号=1 ORDER BY 成绩,学号 DESC,排序就是指用ORDER BY子句排列查询结果的顺序;Order By子句使用升序(ASC)或降序(DESC)指定一组列;对于在结果表中无列名称的列,可以使用一个相对列号来代替列名,系统默认的排列顺序是升序。,要求检索出了选课表中所有选修课程号为1的同学的学号和成绩,并按成绩从高到低的顺序排列:,接上例,如果在成绩相同的情况下,要求再按学号降序排列:,2.5.4 用ORDE

40、R BY子句对查询结果排序,1聚合函数,聚合函数可以返回整个或者几个列或者一个列的汇总数据,它常用来计算SELECT语句查询的统计值。聚合函数经常与SELECT 语句的GROUP BY子句一同使用。常用的函数及其功能 如下:,AVG 返回数据表达式的平均值 COUNT 返回在某个表达式中数据值的数量 COUNT(*)返回所选择行的数量 MAX 返回表达式中的最大值 MIN 返回表达式中的最小值 SUM 返回表达式中所有值的和,2.5.5 用GROUP BY 子句对查询结果进行分组,COUNT(*)、COUNT(列名)、COUNT(DISTINC(列名)三种用法的区别,要求查询出选课表中1号课程

41、的最高分、最低分及平均分:,SELECT MAX(成绩)AS 最高分,MIN(成绩)AS 最低分,AVG(成绩)AS 平均分,FROM 选课表 WHERE 课程号=1,COUNT(*)返回的是所选择行的数量,包括空值在内的所有行 COUNT(列名)统计出所指定列的数量,不包括NULL在内的行 COUNT(DISTINCT 列名)则统计出消除重复后的所指定列的数量,2.5.5 用GROUP BY 子句对查询结果进行分组,2使用GROUP BY子句,聚合函数本身只能产生一个单个的汇总数据,使用GROUP BY子句之后,就可以生成分组的汇总数据。,要求在学生表中,按班级进行汇总人数和平均年龄:,SE

42、LECT 班级,COUNT(*)AS 班级人数,AVG(年龄)AS 平均年龄 FROM 学生表 GROUP BY 班级 ORDER BY 班级,2.5.5 用GROUP BY 子句对查询结果进行分组,联合使用GROUP BY子句与HAVING子句,将在数据分组的基础上,进一步对数据进行汇总。可以用子句HAVING为结果集中的组设置条件。,要求检索出在选课表里同时选修了4门课程的同学的学号:,SELECT 学号,COUNT(课程号)AS 课程门数 FROM 选课表 GROUP BY 学号 HAVING COUNT(课程号)=4 ORDER BY 学号,返回本章目录,2.5.6 用HAVING 子

43、句筛选结果集,1ANSI连接,在实际查询中,常需要同时从两个或者以上的表中检索数据。连接就是允许同时从两个表或者两个以上的表中检索数据,指定这些表中的某个或者某些列作为连接条件。在SQL Server中,可使用两种连接形式,一种是ANSI连接,这时连接条件出现在FROM子句中;另一种是SQL Server连接,这时连接条件出现在WHERE条件中。,ANSI连接的语法形式如下:,SELECT table_name.column_name,table_name.column_name,FROM table_name join_type JOIN table_name ON search_condi

44、tions WHERE search_conditions,其中 join_type 有如下三种形式:INNER(内连接);CROSS(交叉连接);OUTER(外连接),2.6.1 连接查询,上例给出了自连接的示例。自连接可以理解为在某张表的多个“副本”之间进行的连接,注意此时一定要用AS子句来区分到底是哪个“副本”,即用AS指定表的别名。,要求检索出已经选修了4号课程的同学信息:,要求检索出学号为 2011109的学生的同班同学的信息:,SELECT 学生表.*FROM 学生表 JOIN 选课表 ON 学生表学号=选课表学号 WHERE 选课表课程号=4,SELECT 学生表*FROM 学生

45、表 JOIN 学生表 ASB ON 学生表班级=B班级 WHERE B学号=2011109,2.6.1 连接查询,2SQL Server连接,SQLServer连接的语法形式如下:,SELECT table_name.column_name,table_name.column_name,FROM table_name,table_name,WHERE table_name.column_name join_operator table_name.column_name,FROM子句列出了连接时所使用到的全部表名,WHERE子句指定哪些行应该出现在结果集中,即用WHERE子句设定过滤条件。在WH

46、ERE子句中,在两个连接的列中使用连接运算符。,2.6.1 连接查询,上例给出了用SQL Server连接语法形式实现的自连接操作,要求检索出至少已经有一门课程及格的同学的信息:,要求检索出学号为 2011109的学生的同班同学的信息:,SELECT DISTINCT 学生表.*FROM 学生表,选课表 WHERE 学生表学号=选课表学号 AND 成绩=60,SELECT 学生表*FROM 学生表 AS A,学生表 ASB WHERE A 班级=B 班级 AND B学号=2011109,2.6.1 连接查询,1把子查询用作派生的表,子查询是一系列SELECT语句。当一个查询依赖于另一个查询的结

47、果时,子查询会很有用。,使用子查询时,应注意:,子查询要用括号括起来;只要需要一个值或一系列的值,就可以用子查询代替一个表达式 子查询中不能查询包含数据类型是text或image的字段 子查询中也可以再包含子查询,嵌套可以多至32层,可以用子查询产生一个派生的表,用于代替FROM子句中的表。,SELECT A*FROM(SELECT 学号,姓名,年龄 FROM 学生表 WHERE 班级=GZ02计6)AS A,2.6.2 子查询,2把子查询用作表达式,在T-SQL中,所有使用表达式的地方,都可以用子查询来代替。此时子查询必须返回一个单个的值或某一个字段的值。子查询可以返回一系列的值来代替出现在

48、WHERE子句中的IN关键字的表达式。,要求查询出GZ02计7班同学的平均年龄以及每个同学年龄与平均年龄的差:,注意:当子查询跟随在比较运算符=、=之 后,或子查询用作表达式时,子查询必须只能返回单 值;当返回值多于一个的时候,则子查询只能 跟在关键字IN后形成集合。,2.6.2 子查询,SELECT 学号,姓名,年龄,(SELECT AVG(年龄)FROM 学生表)AS 平均年龄 年龄-(SELECT AVG(年龄)FROM 学生表)AS 年龄差 FROM 学生表 WHERE 班级=GZ02计7,3相关子查询,相关子查询可被用作动态表达式,这个表达式的值相对于外层查询的每一行而变化。查询处理

49、器为外层查询的每一个记录计算子查询的值,一次一行,而这个子查询每次都会被作为一个表达式而被计算并返回给外层查询。相关子查询是动态执行的子查询和外层查询间的一个非常有效的联合。,SELECT 学号,姓名 FROM 学生表 WHERE 90=(SELECT 成绩 FROM 选课表 WHERE 学生表.学号=选课表.学号 AND 课程号=1),要求查询已选修课程号为1且成绩在90分以上的同学的学号及姓名:,2.6.2 子查询,相关子查询综合举例,要求检索出每门课程的及格人数与不及格人数,要求按照:课程名、及格人数、不及格人数排列:,SELECT 课程名,(SELECT COUNT(*)FROM 选课

50、表 WHERE 课程号=课程表课程号 AND 成绩=60)AS 及格人数(SELECT COUNT(*)FROM 选课表 WHERE 课程号=课程表课程号 AND 成绩60)AS 不及格人数 FROM 课程表,2.6.2 子查询,4使用EXISTS与NOT EXISTS操作符,在相关子查询中可以使用EXISTS和NOT EXISTS操作符判断某个值是否在一系列的值中。SQL Server处理带有EXISTS和NOT EXISTS操作符的子查询时:,SELECT 学号,姓名,班级 FROM 学生表WHERE EXISTS(SELECT*FROM 选课表 WHERE 学号=学生表.学号 AND 课

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号