版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、上一页上一页下一页下一页返回首页返回首页上一页上一页下一页下一页返回首页返回首页第第1章章 access数据库基础数据库基础 第第2章章 sql server基础基础 第第3章章 visual basic 数据库访问概述数据库访问概述第第4章章 用户界面控件用户界面控件 第第5章章 数据访问对象(数据访问对象(dao) 第第6章章 开放式数据库连接与远程数据对象开放式数据库连接与远程数据对象 第第7章章 active x数据对象(数据对象(ado) visual basic数据库应用电子教案第第8章章 报表报表 上一页上一页下一页下一页返回首页返回首页第1章 access数据库基础1.1 关系
2、数据库的基本概念 1.2 access基础 1.3 建立access数据库和表 1.4 数据库设计实例 返回总目录返回总目录上一页上一页下一页下一页返回首页返回首页第2章 sql server基础2.1 microsoft sql server 2000基础 2.2 transact-sql语言基础 2.3 sql数据库 2.4 创建和使用表 2.6 高级查询技术 2.5 简单查询 返回总目录返回总目录上一页上一页下一页下一页返回首页返回首页3.1 访问数据库 3.2 data控件 第3章 vb数据库访问概述返回总目录返回总目录上一页上一页下一页下一页返回首页返回首页4.1 固有控件 4.2
3、activex控件 4.3 通讯录应用程序实例 第4章 用户界面控件返回总目录返回总目录上一页上一页下一页下一页返回首页返回首页5.1 数据访问对象 5.2 使用dao操作数据 5.3 使用dao控制数据库结构 5.4 dao实例 第5章 数据访问对象返回总目录返回总目录上一页上一页下一页下一页返回首页返回首页6.1 odbc的配置和使用 6.2 使用远程数据控件访问数据 6.3 使用远程数据对象 6.4 实例 返回总目录返回总目录第6章 开放式数据库连接与远程数据对象上一页上一页下一页下一页返回首页返回首页7.1 使用ado activex控件 7.2 ado常用对象的使用 返回总目录返回总
4、目录第7章 activex数据对象上一页上一页下一页下一页返回首页返回首页8.1 用vb的datareport设计器设计报表 8.2 使用access建立报表 8.3 用vb输出报表 8.4 使用vb的printer对象创建报表 返回总目录返回总目录第8章 报表上一页上一页下一页下一页返回首页返回首页1关系数据库系统 关系数据库系统是指支持关系模型的数据库系统。 关系模型由关系数据结构、关系操作集合和完整性约束三部分组成。 2数据库的定义 在关系数据库模型中,数据库为一些相互之间存在一定关联的表格的集合。一个表格是由若干的行(记录)来构成。字段是记录的一部分。 数据表有以下特点: 数据表的任意
5、行和列可以以任何顺序排列; 数据表的名称必须唯一; 数据表中不能有重复的记录,每条记录都是可以辨认的。 1.1.1 关系数据库的定义上一页上一页下一页下一页返回首页返回首页1主关键字 在关系的各种属性中,能够用来唯一标识记录的属性称为关键字。主关键字不允许为空或重复,并且要保证其唯性,以保证数据的的完整性。 2外关键字 在实现关系数据库时,必须能表示表与表之间的联系。因此,需要一个表中的一列与另一个表的主关键字相匹配,这样的列可以做为外关键字。这种完整性规则,称为引用完整性。1.1.2 主关键字和外关键字上一页上一页下一页下一页返回首页返回首页 关系数据库的模型简明,便于用户理解;用户对数据库
6、的操作使用了非过程化的表示,操作方便;用户接口不涉及任何存储路径和存储方式,数据独立性高。 此外,关系数据库有着网状数据库和层状数据库所没有的强大数学基础;关系数据库管理程序能够在同一时刻对多个表格进行操作,这种能力可以将数据分成更合乎逻辑的和易于管理的类别,关系数据库常常由许多通过“关系”联系起来的表格组成。 1.1.3 关系数据库的特点上一页上一页下一页下一页返回首页返回首页1visual basic访问数据库的类型 在visual basic中通过数据访问控件或数据访问对象(dao)等可以访问的数据库有以下几种: jet数据库,即microsoft access数据库; isam数据库,
7、例如:dbase,foxpro数据库等; odbc数据库,凡是遵循odbc标准的客户/服务器数据库。2外关键字 visual basic访问数据库通常有下面三种途径: 通过数据库控制控件data control访问; 通过vb提供的数据库对象变量编程访问; 通过odbc接口访问odbc api函数。返回本返回本章目录章目录1.1.4 visual basic访问数据库的类型与途径上一页上一页下一页下一页返回首页返回首页1access的对象 access 2000支持的对象包括表、查询、报表、窗体、宏、模块及网页。 access所提供的这些对象都存放在同一个数据库文件(.mdb文件)中,而不像其
8、他数据库那样分别存放于不同的文件中。这样就方便了数据库文件的管理。 2access的主要功能 定义数据创建表,利用表存储相应的信息; 根据需要定义各表之间的关系; 方式多样的数据处理能力; 创建web页,建立对internet和intranet的支持; 开发应用程序。 1.2.1 access的特点上一页上一页下一页下一页返回首页返回首页1access主窗口 1.2.2 熟悉access开发环境上一页上一页下一页下一页返回首页返回首页2数据库窗口 返回本返回本章目录章目录1.2.2 熟悉access开发环境上一页上一页下一页下一页返回首页返回首页1. 设计数据库的基本步骤 对数据库进行总体的设
9、计; 规划该数据库中需要建立的表; 确定表中所需的字段; 明确有唯一值的字段; 确定表之间的关系; 优化设计; 输入数据并新建其他数据库对象; 使用microsoft access的分析工具设计输出报表。 1.3.1 数据库的设计上一页上一页下一页下一页返回首页返回首页1打开数据库 在使用数据库之前,必须打开数据库。启动access后,弹出如下图所示“microsoft access”对话框,从中选择“打开已有数据库”选项,选择所要打开的数据库,单击“确定”按钮,即可打开此数据库。如果在“打开已有数据库”下面的选项框里没有所需要的数据库,单击“更多的文件”选项,进行操作。 1.3.2 数据库的
10、创建与打开上一页上一页下一页下一页返回首页返回首页2创建access数据库 microsoft access 提供两种创建 access 数据库的方法: 使用“数据库向导”创建数据库,利用系统提供的模板来选择数据库类型来创建所需的表、窗体及报表。采用这种方法,一次操作即可为所选数据库类型创建必要的表、窗体及报表,这是创建数据库最简单最快速的方法。 先创建一个空数据库,然后再添加表、窗体、报表及其他对象,这是最灵活的方法,但需要分别定义每一个数据库要素。 无论哪一种方法,在数据库创建之后,都可以随时修改或扩展数据库。 1.3.2 数据库的创建与打开上一页上一页下一页下一页返回首页返回首页1表的设
11、计过程表格设计的基本过程为: 打开数据库; 建立一个新表; 输入每一个字段名、数据类型和说明; 确定为每一个字段定义的属性; 设置个主关键字; 为某些字段建立索引; 保存设计。 1.3.3 创建表上一页上一页下一页下一页返回首页返回首页2创建表的方法创建表有很多方法,基本的主要有两种方法: 使用表向导创建表 在“设计”视图中创建表 1.3.3 创建表上一页上一页下一页下一页返回首页返回首页修改字段删除字段增加字段修改字段的属性修改表与表之间的关系 1.3.4 修改表 一个数据库系统被设计出来以后,当出现新的需求时,往往要对表的结构进行修改。 除此之外,还包含设置数据表格式、隐藏和冻结列、多级显
12、 示记录和使用查阅向导等。 对表进行修改的操作包括:上一页上一页下一页下一页返回首页返回首页数据库中的表一般来讲并不是相互独立、互不相关的,表与表之间存在着一定的联系,也正因为这些联系才体现出了数据库的优越性。单击”数据库“窗口工具栏上的”关系“按钮,出现如下图所示的关系窗口。 关系窗口里列出了所有已经存在的表与表之间的联系,这种联系通过表之间的连线体现出来。1.3.5 修改表间的关系上一页上一页下一页下一页返回首页返回首页通过上面的操作,我们创建了一个数据库,但数据库中并没有数据,下面我们为数据库输入数据,使之成为一个完整的数据库。下图为一数据输入窗口。 返回本章目录返回本章目录1.3.6
13、表中数据输入上一页上一页下一页下一页返回首页返回首页本实例首先创建一个名为“学生信息”的数据库,然后在该数据库中创建三张数据表:“学生成绩”、“姓名”和“学生联系表”,并输入一部分数据记录,最后建立了表间关系。设计步骤如下: 启动access 2000并创建空数据库,命名为“学生成绩.mdb” 。 为数据库创建表,为了输入部分数据,我们使用设计器来创建一个新表。 定义字段,如下页所示。数据库设计实例上一页上一页下一页下一页返回首页返回首页 数据库设计实例上一页上一页下一页下一页返回首页返回首页保存数据表,命名为“学生成绩”;根据需要定义主键;输入数据;双击数据库视图中的 “学生成绩” 表,在如
14、下图所示的表视图中添加几条新的记录,依次输入学号、姓名等字段。 数据库设计实例上一页上一页下一页下一页返回首页返回首页 依照步骤,再建立“姓名”表和“学生联系”表,如下图所示,两张表均定义“学号”为主键。 数据库设计实例上一页上一页下一页下一页返回首页返回首页建立表间关系 返回本章目录返回本章目录数据库设计实例上一页上一页下一页下一页返回首页返回首页 microsoft sql server2000是一个分布式的关系数据库管理系统,具有客户机/服务器体系结构,使用transact-sql语言在客户机和服务器之间传递客户机的请求和服务器的处理结果。 microsoft sql server200
15、0系统具有动态的数据存储机制。 microsoft sql server2000系统具有强大的安全措施。 microsoft sql server2000系统具有很强的数据互操作性。 microsoft sql server2000系统具有功能强大的网上功能,可以在internet上发布数据库中的数据。 microsoft sql server2000虽然采用了分布式的计算模式,但是它也支持单用户的计算模式。 microsoft sql server2000系统具有内置的数据复制功能。 2.1.1 microsoft sql server 2000的特点上一页上一页下一页下一页返回首页返回首页
16、 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 查询分析器(quer
17、y analyzer)上一页上一页下一页下一页返回首页返回首页 sql语言是结构化查询语言(structure query language)的简称,是当前最流行的数据库语言,是访问关系数据库的标准语言。microsoft 的sql server使用的sql语言叫transact-sql(事务sql,简称t-sql)。 一体化的特点,集数据查询、数据定义、数据操纵、数据控制功能为一体; 高度非过程化语言,只需要提出“干什么”,而不需指出“如何干”,语句的操作过程由系统自动完成; 语言简洁,类似于人的思维习惯,容易理解和掌握; 可以直接以命令方式交互使用,也可以嵌入到程序设 计语言中使用。 tr
18、ansact-sql语言有以下几个主要特点:2.2.1 sql 概述上一页上一页下一页下一页返回首页返回首页 transact-sql语言按其功能,可分为四大部分:数据定义功能、数据控制功能、数据查询功能和数据操纵功能。 数据定义(ddl):实现定义、删除和修改数据库对象的功能(create、drop、alter )。 数据查询(ql):实现查询数据的功能(select )。 数据操纵(dml)实现对数据库数据的增加、删除和修改的功能(insert、update、delete )。 数据控制(dcl):实现控制用户对数据库的操作权限的功能(grant、revoke、deny )。2.2.1 s
19、ql 概述上一页上一页下一页下一页返回首页返回首页bigint int smallint tinyint bit numeric(p,s) decimal(p,s) float real1数值型2字符数据类型 字符型数据是由汉字、字母、数字和各种符号组成的,在sql server 2000中,默认情况下,字符数据是用单引号括起来的。 普通编码:char(n) varchar(n) text unicode编码: nchar(n) nvarchar(n) ntext 二进制编码:binary(n) varbinary(n) image2.2.2 transact-sql 数据类型 数值型有以下几
20、类:上一页上一页下一页下一页返回首页返回首页 sql server 2000提供了两种用存储日期和时间的数据类型:datetime和smalldatetime。 当存储此种类型数据时,默认的格式是mmddyyyyhh:mm:ss am/pm,当插入数据或在其它地方使用该类型时,需用单引号把它括起来。 3日期时间类型 输入日期数据时,可采用如下几种输入格式: apr 22 2003 /*英文数字格式*/ 2003-04-22 /*数字加分隔符格式*/ 20030422 /*纯数字格式*/ 输入时间时,可采用12小时格式或24小时格式: 2003-04-22 2:25:35 pm /*12小时格式
21、*/ 2003-04-22 14:25:35 /*24小时格式*/ 2.2.2 transact-sql 数据类型上一页上一页下一页下一页返回首页返回首页 货币数据表示正的或负的货币值,在sql server 2000中使用money和smallmoney数据类型存储货币数据。4货币类型 货币类型的数据实际上都是带有4位小数的decimal类型的数据。 在money或smallmoney类型的字段中输入货币数据时必须在数值前加上一个货币符号,如$符号;输入负值时,应当在货币数据的后面加一个负号。 2.2.2 transact-sql 数据类型上一页上一页下一页下一页返回首页返回首页 一个语句批
22、是一组transact-sql语句的集合,语句批的结束标记为:go 1语句批 脚本是存储在文件中的一组transact-sql语句的集合。 2脚本3注释 注释是程序代码中不执行的文本字符串 ,transact-sql支持两种类型的注释:一种是单行注释“-”;另一种是块注释即“/* */”。 sql server中的编程语言是transact-sql,transact-sql是一种非过程化的高级语言,其基本成分是语句,由一个或多个语句构成一个批处理,由一个或多个批处理构成一个脚本,并保存到磁盘文件中。 2.2.3 基本概念上一页上一页下一页下一页返回首页返回首页 标准标识符可以包含1128个字符
23、,包括字母、符号(_、#、$)及数字。标准标识符里不允许有空格,应遵循:第一个字符必须是字母(az或az),第一个字符后面可以是数字、字符或符号。但当第一个字符是符号时,则有如下特殊含义: 1标准标识符 以开头的标识符代表一个局部变量或参数 以#号开头的标识符代表一个临时表或存储过程 以#号开头的标识符代表一个全局临时对象 2.2.4 sql server命名规则上一页上一页下一页下一页返回首页返回首页2限定标识符 如果不遵守一个或多个标准标识符格式规则时,必须使用限定标识符。一般地,在下列两种情况下使用限定标识符: 当对象名中包含空格时 当保留关键字被用作对象名或对象部分的名字时 当限定标识
24、符出现在transact-sql语句中时,必须用方括号( )或双引号(“”)将限定标识符括起来。 返回本章目录返回本章目录2.2.4 sql server命名规则上一页上一页下一页下一页返回首页返回首页 数据库是数据和数据库对象的容器。数据库对象就是存储和管理数据的结构形式,这些数据库对象主要包括数据库图表、表、函数、视图、存储过程、触发器等。设计数据库的过程就是设计这些数据库对象的过程。 1数据库对象 事务就是一个单元的工作,该单元的工作或者全部完成,或者全部不完成。sql server 2000系统具有事务功能,可以保证数据库操作的一致性和完整性。 2事务和事务日志3数据库文件和文件组 数
25、据库的物理表现是操作系统文件。sql server 2000使用一组 操作系统文件来创建一个数据库。数据库中的所有数据和对象, 都存储在这些操作系统文件中。如前所述,这些操作系 统的文件有两种形式:一种是数据文件,另一种 是日志文件。文件组就是数据文件的集合。 2.3.1 sql server 2000数据库特点上一页上一页下一页下一页返回首页返回首页1创建数据库 在企业管理器中,打开左边的树状结构,在数据库文件夹或其下属任一数据库图标上右击,从弹出的快捷菜单中选择新建数据选项,或直接单击工具栏上的“新数据库”图标,然而按步骤依次进行操作。 create database语句的语法形式如下:c
26、reate 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,操作系统文件是示例数据库.ldf,大小是3
27、mb,最大是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) 创建和管理数据库示例上一页上一页下一页下一页返回首页返回首页 数据
28、库创建以后,可以在企业管理器中利用数据库的属性设置,来更改创建时的某些设置和创建时无法设置的属性。 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 创建和管理数据库上一页上一
29、页下一页下一页返回首页返回首页 为了扩大示例数据库的数据文件,可以增加一个次要数据文件示例数据库_data2,其大小为10mb,最大是20mb,以20%的速度增长。 alter database 示例数据库add file (name=示例数据库_data2, filename= c:microsoft sql serverdata示例数据库2.mdf , size=10mb, maxsize=20mb,filegrowth=20%) 创建和管理数据库示例上一页上一页下一页下一页返回首页返回首页 对于那些不再需要的数据库,可以删除它以释放在磁盘上占用的空间。在企业管理器中,右击所要删除的数据库
30、,从弹出的快捷菜单中选择“删除”选项或直接按下键盘上的delete按钮即可删除数据库,也可以选择数据库文件夹或图标后单出工具栏中的“删除”图标来删除数据库。 3删除数据库 也可以利用drop database语句来删除数据库。语法如下:drop database database_name ,n 例:删除已建立的示例数据库drop database 示例数据库返回本章目录返回本章目录2.3.22.3.3 创建和管理数据库上一页上一页下一页下一页返回首页返回首页 表是包含数据库中所有数据的数据库对象 。既可以使用create table 语句创建表,也可以通过企业管理器创建表。 使用create
31、 table 语句的语法如下:create table database_name. owner.| owner. table_name ( | column_name as computed_column_expression | | ,n ) 示例示例 在企业管理器中,展开指定的服务器和数据库,打开想要创建新表的数据库,右击表对象,并从弹出的快捷菜单中选择“新建表”选项,然后按步骤操作即可。2.4.1 创建表上一页上一页下一页下一页返回首页返回首页 在示例数据库中创建学生表,该表包含了学生的有关信息:学号、姓名、性别、班级、年龄。 use 示例数据库create table 学生表 (学号
32、 int not null ,姓名 varchar (50) null ,性别 char (1) null ,班级 char (10) null ,年龄 int null ) on primary创建表示例上一页上一页下一页下一页返回首页返回首页 alter table table_name alter column column_name new_data_type (precision ,scale ) |add ,n |drop column column ,n 1用alter table增加、删除、修改字段 例:在学生表中,增加一个字段“出生年月”,该字段的数据类型为datetime,
33、允许为空,没有默认值。 alter table 学生表 add 出生年月 datetime null2在企业管理器中增加、删除、修改字段 在企业管理器中,打开指定的服务器中要修改的表的数据库, 用右键单击进行修改的表,从弹出的快捷菜单中选择“设计 表”选项,然后按步骤操作即可。 2.4.2 修改、删除表结构上一页上一页下一页下一页返回首页返回首页 删除表就是将指定的表中的数据和表的结构从数据库中永久性地去除。表删除之后,就不能再恢复该表的定义。3删除表的结构 删除表也可以使用drop table语句,该语句的语法形式如下: drop table table_name 可以使用企业管理器删除表,
34、在该工具中,打开指定表所在的数据,右击该表,从弹出的菜单中选择“删除”项即可。当然,系统表不能被删除。 如: drop table 学生表2.4.2 修改、删除表结构上一页上一页下一页下一页返回首页返回首页 表创建之后,只是一个空表。因此,向表中插入数据是在表结构创建之后,首先需要执行的操作。在表中插入数据,使用insert语句。该语句的语法形式如下:1插入数据 例:要求往学生表中插入一行数据:学号为999999,姓名为张小三,性别为男,其它情况未知。可用以下三种方式完成: insert into table_name (column_list) values (default | null
35、| expression ,n )| default values insert into 学生表( 学号,姓名,性别) values(999999, 张小三, m) insert into 学生表 values(999999, 张小三, m,null,null) insert into 学生表 values(999999, 张小三, m, default , default) 注意:insert语句每一次只能插入一行数据,在向表 中插入数据时要注意,字符数据和日期数据要 使用单引号引起来。 2.4.3 操纵数据上一页上一页下一页下一页返回首页返回首页可以使用update语句修改表中已经存在的
36、数据。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 操纵数据上一页上一页下一页下一页返回首页返回首页 删除数据可以使用delete语句。delete语句可以一次从表中删除一行或多行数据
37、。其语法形式如下: 3删除数据 例:删除学生表中班级为gz02房产的全部学生信息。 delete from table_name from ,n where delete from 学生表 where 班级=gz02房产 注意:delete 语句只是删除表中的数据,表本身依然存在于数据库中。如果需要删除表本身,则应使用前面已经讲 过的drop table语句。 返回本章目录返回本章目录2.4.3 操纵数据上一页上一页下一页下一页返回首页返回首页 数据检索就是把数据库中存储的数据根据用户的需求提取出来的过程,并且使用select语句进行数据检索。 select语句完整的语法形式非常复杂,这里给出
38、如下的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 子
39、句用于指定数据的选择条件; group by 子句用于对检索到的记录进行分组; having 子句用于指定组的选择条件; order by 子句用于对查询的结果进行排序 在这些子句中,select子句和from子句是必须的,其它子句都是可选的。 以下所有的举例都是以示例数据库为基础的,示例数据库中建立了三张表:学生表、选课表、课程表,具体结构见教材图2.14、图2.15、图2.16所示。2.5.1 sql查询的基本结构上一页上一页下一页下一页返回首页返回首页select all | distinct select_listfrom table_name | view_name 其中:selec
40、t_list指定了要返回的列; from子句指定了返回的行和列所属的表或视图。 select子句的部分语法形式:1选择列 最简单的查询:检索学生表中的全部信息。 select * from 学生表* 表示检索全部列。在这个结果中,显示的信息与数据在表中存储的顺序完全一样。 可在select 后面指出要检索的列名:检索每一个学生的姓名和班级。 select 姓名,班级 from 学生表 select 班级,姓名 from 学生表列顺序的改变,只是影响数据结果的显示,对于表中的数据的存储顺序无任何影响。 2.5.2 select 子句上一页上一页下一页下一页返回首页返回首页 在默认情况下,数据检索
41、结果集中所显示出来的列标题就是在创建表时所使用的列名。但是,显示的列标题也是可以改变的。改变列标题有两种方法: 使用“=”; 使用as关键字。 检索学生表中的学号、姓名和班级信息,要求班级以“所在班级”列标题输出。 select 学号,姓名,所在班级=班级 from 学生表 select 学号,姓名,班级 as 所在班级 from 学生表2改变列标题 上面两个语句查询显示结果完全相同2.5.2 select 子句上一页上一页下一页下一页返回首页返回首页 select子句中可以包含算术表达式,允许+、-、*、/,当然也可以是常量。 要求输出成绩提高20%后的成绩: select 学号,课程号,成
42、绩,成绩*1.2 as 提高后的成绩 from 选课表 select distinct 学号 from 选课表3带表达式的select子句4all与distinct sql允许关系和查询结果中出现重复行,要强制消除重复,可在select后使用关键字distinct,而指定all则不消除重复。在mssql中,默认为all。 在选课表中,一个学生可以同时选多门课,如果要求检索出已经 选过课的学生学号 :2.5.2 select 子句上一页上一页下一页下一页返回首页返回首页 在select语句中,where子句指定要检索的数据行,将where关键字后面的搜索条件为真的记录全部检索出来。 要求检索出选
43、课表中所有选修了1号课程的同学的学号和成绩 : select 学号,成绩 from 选课表 where 课程号=1select 学号,成绩 from 选课表 where 课程号=1 and 成绩=801比较运算符2逻辑运算符 要求检索出选修了1号课程并且成绩在80分以上的同学的学号和成绩 2.5.3 用where 子句过滤记录上一页上一页下一页下一页返回首页返回首页 要求检索出学生表中年龄在20至23之间的所有男同学 : select * from 学生表 where 年龄 between 20 and 23 and 性别=m select * from 学生表 where 班级 in (gz
44、02计5,gz02计5,gz02计5)3betweenand4in(not in) in或者not in关键字允许指定要选择的取值表,意思是包含在由in指定的列表之中或不包含在由not in指定的列表中。 betweenand可以指定搜索范围,表示在之间。 要求检索出学生表中gz02计5、gz02计6、gz02计7三个班级的同学信息 :2.5.3 用where 子句过滤记录上一页上一页下一页下一页返回首页返回首页 select * from 学生表 where 姓名 like 陈% select * from 学生表 where 姓名 like 陈_ _ 5字符串模糊匹配 like关键字用于检
45、索与特定字符串相匹配的记录行。在like关键字中,可以使用4种匹配符:%、_、 、。带有匹配符的字符串必须使用引号引起来。 要求检索出学生表中所有姓“陈”的同学 信息: 要求检索出学生表中所有不姓“陈”的同学 信息:在使用like进行数据检索时,应注意,一个英文字母和一个汉字都是一个字符。 2.5.3 用where 子句过滤记录上一页上一页下一页下一页返回首页返回首页 select 学号,成绩 from 选课表 where 课程号=1 order by 成绩 desc select 学号,成绩 from 选课表 where 课程号=1 order by 成绩,学号 desc 排序就是指用ord
46、er by子句排列查询结果的顺序;order by子句使用升序(asc)或降序(desc)指定一组列;对于在结果表中无列名称的列,可以使用一个相对列号来代替列名,系统默认的排列顺序是升序。 要求检索出了选课表中所有选修课程号为1的同学的学号和成绩,并按成绩从高到低的顺序排列 : 接上例,如果在成绩相同的情况下,要求再按学号降序排列 :2.5.4 用order by子句对查询结果排序上一页上一页下一页下一页返回首页返回首页1聚合函数 聚合函数可以返回整个或者几个列或者一个列的汇总数据,它常用来计算select语句查询的统计值。聚合函数经常与select 语句的group by子句一同使用。常用的
47、函数及其功能 如下: avg 返回数据表达式的平均值 count 返回在某个表达式中数据值的数量 count(*) 返回所选择行的数量 max 返回表达式中的最大值 min 返回表达式中的最小值 sum 返回表达式中所有值的和2.5.5 用group by 子句对查询结果进行分组上一页上一页下一页下一页返回首页返回首页count(*)、count(列名)、count(distinc(列名) 三种用法的区别 要求查询出选课表中1号课程的最高分、最低分及平均分: select max(成绩) as 最高分, min(成绩) as 最低分, avg(成绩) as 平均分, from 选课表 wher
48、e 课程号=1 count(*)返回的是所选择行的数量,包括空值在内的所有行 count(列名)统计出所指定列的数量,不包括null在内的行 count(distinct 列名)则统计出消除重复后的所指定列的数量 2.5.5 用group by 子句对查询结果进行分组上一页上一页下一页下一页返回首页返回首页2使用group by子句 聚合函数本身只能产生一个单个的汇总数据,使用group by子句之后,就可以生成分组的汇总数据。 要求在学生表中,按班级进行汇总人数和平均年龄: select 班级, count(*) as 班级人数, avg(年龄) as 平均年龄 from 学生表 group
49、 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 子句筛选结果集上一页上一页下一页下一页返回首页返回
50、首页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_conditions
51、where search_conditions 其中其中 join_type 有有如下三种形式:如下三种形式: inner(内连接);(内连接); cross(交叉连接);(交叉连接); outer(外连接)(外连接)2.6.1 连接查询上一页上一页下一页下一页返回首页返回首页 上例给出了自连接的示例 。自连接可以理解为在某张表的多个“副本”之间进行的连接,注意此时一定要用as子句来区分到底是哪个“副本” ,即用as指定表的别名。 要求检索出已经选修了4号课程的同学信息 :要求检索出学号为 2011109的学生的同班同学的信息 : select 学生表.* from 学生表 join 选课表
52、on 学生表学号=选课表学号 where 选课表课程号=4 select 学生表* from 学生表 join 学生表 asb on 学生表班级=b班级 where b学号=20111092.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_n
53、ame from子句列出了连接时所使用到的全部表名,where子句指定哪些行应该出现在结果集中,即用where子句设定过滤条件。在where子句中,在两个连接的列中使用连接运算符。 2.6.1 连接查询上一页上一页下一页下一页返回首页返回首页 上例给出了用sql server连接语法形式实现的自连接操作 要求检索出至少已经有一门课程及格的同学的信息 :要求检索出学号为 2011109的学生的同班同学的信息 : select distinct 学生表.* from 学生表, 选课表 where 学生表学号=选课表学号 and 成绩=60 select 学生表* from 学生表 as a,学生表
54、 asb where a 班级=b 班级 and b学号=20111092.6.1 连接查询上一页上一页下一页下一页返回首页返回首页1把子查询用作派生的表 子查询是一系列select语句。当一个查询依赖于另一个查询的结果时,子查询会很有用。 使用子查询时,应注意: 子查询要用括号括起来;只要需要一个值或一系列的值,就可以用子查询代替一个表达式 子查询中不能查询包含数据类型是text或image的字段 子查询中也可以再包含子查询,嵌套可以多至32层 可以用子查询产生一个派生的表,用于代替from子句中的表。 select a* from (select 学号,姓名,年龄 from 学生表 whe
55、re 班级=gz02计6) as a 2.6.2 子查询上一页上一页下一页下一页返回首页返回首页2把子查询用作表达式 在t-sql中,所有使用表达式的地方,都可以用子查询来代替。此时子查询必须返回一个单个的值或某一个字段的值。子查询可以返回一系列的值来代替出现在where子句中的in关键字的表达式。 要求查询出gz02计7班同学的平均年龄以及每个同学年龄与平均年龄的差: 注意:当子查询跟随在比较运算符 =、= 之 后,或子查询用作表达式时,子查询必须只能返回单 值;当返回值多于一个的时候,则子查询只能 跟在关键字in后形成集合。 2.6.2 子查询 select 学号,姓名,年龄, (sele
56、ct avg(年龄) from 学生表 ) as 平均年龄 年龄-(select avg(年龄) from 学生表 ) as 年龄差 from 学生表 where 班级=gz02计7 上一页上一页下一页下一页返回首页返回首页3相关子查询 相关子查询可被用作动态表达式,这个表达式的值相对于外层查询的每一行而变化。查询处理器为外层查询的每一个记录计算子查询的值,一次一行,而这个子查询每次都会被作为一个表达式而被计算并返回给外层查询。相关子查询是动态执行的子查询和外层查询间的一个非常有效的联合。 select 学号,姓名 from 学生表 where 90=60) as 及格人数 (select c
57、ount(*) 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 课程号=1) and exists(select
58、 * from 选课表 where 学号=学生表.学号 and 课程号=1) 外层查询测试子查询返回的记录是否存在; 基于查询所指定的条件,子查询返回true或false; 子查询不产生任何数据。 要求检索出同时选修了1号课程和2号课程的同学的信息 :2.6.2 子查询上一页上一页下一页下一页返回首页返回首页 在使用select语句进行查询时,如果只希望列出前几个结果,而不是全部结果,这时就可使用top关键字来选取输出的结果。 select top 5 学号,sum(成绩) as 总分 from 选课表group by 学号order by 总分 desc select top n perce
59、nt with ties 查询列表 要求检索出总分在前5位的同学的学号及其总分 : 使用top的格式为:2.6.3 使用top限制结果集上一页上一页下一页下一页返回首页返回首页 可以将两个或多个查询的结果组合为一个结果集,这就是合并多个结果集的含义。使用union可以实现这个目的。 select * from 学生表 where 班级=gz02计6 unionselect * from 学生表 where 班级=gz02计7 select 语句1 unionselect 语句2 union all 要求将对gz02计6班和gz02计7班学生的查询结果合并为一个结果集 : 使用union的格式为
60、: :2.6.4 合并多个结果集返回本章目录返回本章目录上一页上一页下一页下一页返回首页返回首页1数据库访问方法 data control:data control dao对象:data access object rdo对象:remote data object ado对象:activex data object3.1.1数据访问简述上一页上一页下一页下一页返回首页返回首页1数据源类型 数据源分成相应的三种:jet数据源、isam数据源、odbc数据源。 2三种数据源比较 jet数据源包括通过dao api和microsoft access创建的数据源,一般被称为本地数据源,是vb默认的数据
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《电子欺骗》课件
- 2024年公务员个人总结
- (高频非选择题25题)第2单元 社会主义制度的建立与社会主义建设的探索(解析版)
- 2013年高考语文试卷(重庆)(空白卷)
- 寒假安全家长会
- 未成年人监护制度创新-洞察分析
- 行业趋势预测与洞察-洞察分析
- 无线医疗设备-洞察分析
- 新型贮藏保鲜方法研究-洞察分析
- 网络切片安全态势感知-洞察分析
- 四川省食品生产企业食品安全员理论考试题库(含答案)
- 人教版八年级音乐上册 第一单元 《拉起手》 教案
- 《马克思主义基本原理》学习通超星期末考试答案章节答案2024年
- 期末测试卷(试题)-2024-2025学年人教PEP版(2024)英语三年级上册
- 《旅游大数据》-课程教学大纲
- 工艺以及质量保证措施,工程实施的重点、难点分析和解决方案
- 七年级上册道德与法治第1-4单元共4个单元复习教学设计
- SY-T 5412-2023 下套管作业规程
- 四色安全风险空间分布图设计原则和要求
- 八年级化学下册期末试卷及答案【完整版】
- 合伙人散伙分家协议书范文
评论
0/150
提交评论