欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    ACCESS查询的设计与应用.ppt

    • 资源ID:3688254       资源大小:1.39MB        全文页数:154页
    • 资源格式: PPT        下载积分:17金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要17金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    ACCESS查询的设计与应用.ppt

    第 五 章 查询的设计与应用,查询是进行数据检索并对数据进行分析、计算、更新及其它加工处理的数据库对象。 查询是通过一个或多个表中提取数据并进行加工处理而生成的。 查询结果可以作为窗体、报表或数据访问页等其它数据库对象的数据源。 利用查询可以选择一组满足指定条件的记录,还可以将不同表中的信息组合起来,提供一个相关数据项的统一视图。,第 一 节 查询的种类与应用,在设计数据库时,常常把数据分类,并分别存放在多个表中,但在使用时需要检索一个或多个表中符合条件的数据。查询实际上就是将这些分散的数据再集中起来。,学生表,成绩表,课程表,查询结果,查询在数据库中保存的时候,并非保存查询的结果,而是SQL命令。执行查询时,是按要求从数据源中提取相应的数据记录,因此查询是一个“动态”的数据集。,一、查询的种类 在Access中,可以创建5种类型的查询: 1、选择查询 从一个或多个表中检索数据,在一定条件下,还可以更改相关表(数据源)中的数据。 选择查询可以对记录进行求和、计数能为求平均值等效我种类型的计算,也可以分组进行这些运算。 2、参数查询 是一种特殊的选择查询,即是将选择查询的条件设置成一个带有参数的“通用条件”,在运算查询时由用户指定参数的值。 参数查询便于作为窗体和报表的基础。,3、交叉表查询 用于计算并重新组织数据的结构,以便更好地观察和分析数据。 交叉表查询可以在类似于Excle的数据透视表的格式中,显示数据源中指定字段的合计值、计算值、平均值等。,可以使用数据透视表向导来按交叉表形式显示数据,无须在数据库中创建单独的交叉表查询。 操作步骤: 在设计视图中打开表 菜单命令:【视图】/【数据透视表视图】 设计数据透视表视图的布局,4、操作查询 操作查询除了可以从数据源中抽取记录外,还可以更改记录,即:可以在操作查询中设置条件,对符合条件的记录进行删除记录、更新数据、追加记录及生成表等操作。 操作查询可以分为: 删除查询 从一个或多个表中删除一组符合条件的记录。 更新查询 对一个或多个表中的一组符合条件的记录进行批量修改某字段的值。,追加查询 将一个或多个表中的一组符合条件的记录添加到另一个表(或多个表)的末尾。 生成表查询 将查询的结果转存为新表。,5、SQL查询 SQL(Structured Query Language)是一种结构化查询语言,是数据库操作的工业化标准语言,使用SQL语言可以对任何数据库管理系统进行操作。 所谓的SQL查询就是通过SQL语言来创建的查询。 在查询设计视图中创建任何一个查询时,系统都将在后台构建等效的SQL语句。大多数查询功能也都可以直接使用SQL语句来实现。 有一些无法在查询设计视图中创建的SQL查询称为“SQL特定查询”。,SQL特定查询包括: 联合查询 将来自多个表或查询中的相应字段组合为查询结果中的一个字段(使用UNION运算符合并多个选择查询的结果)。 传递查询 使用服务器能够接受的命令直接将命令发送到ODBC数据库而不需要事先建立链接,如使用SQL服务器上的表。可以使用传递查询来检索记录或更改数据。,数据定义查询 包含数据定义语言语句的SQL特定查询。这些语句可以用来创建、删除、更改表及其它对象,或者创建数据库中的索引等。 子查询 包含在另一个选择查询或操作查询之内的SQL SELECT语句,即嵌套在查询中的查询。,创建传递查询、数据定义查询和联合查询必须直接在SQL视图中输入相应的SQL语句。 创建子查询可以在查询设计网格的“字段”或“条件”行输入SQL语句。,选择查询 参数查询 交叉表查询 操作查询 删除查询更新查询 追加查询生成表查询 SQL特定查询 联合查询传递查询 数据定义查询子表查询,查询类型,二、查询的应用 查询的应用主要有: 选择字段 在查询的结果中可以只含有表中的部分字段。,选择记录 在查询的结果中,只含有符合指定条件的记录。,编辑记录 即利用查询添加、修改和删除表中的记录。 实现计算 即在查询中进行各种统计计算,也可以建立一个计算字段来保存计算的结果。,利用查询的结果生成窗体或报表 即以查询的结果作为窗体或报表的数据源。 利用查询的结果创建表 利用查询的结果创建一个新表。,第 二 节 查询的建立方法,创建查询的方法主要有使用查询向导和查询设计视图两种。 一、使用查询向导 【例】利用查询向导查询学生成绩,要求输出学号、姓名、平均分、最高分和最低分。 操作步骤: 启动查询向导 选择数据源(表) 选择字段 选择明细查询或汇总查询 明细查询:显示每条记录的每个字段 汇总查询:对数值字段进行汇总统计(求总和、平均值、最大/最小值、计数等) 为查询命名,说明: 不能对记录进行筛选和排序 不能改变查询中字段的顺序 允许对数值字段进行汇总统计 允许按指定日期范围分组汇总,汇总查询必须包含且只能包含汇总统计的数值型字段和用于汇总依据的分组字段。其它字段的添加将无法得到期望的汇总效果,二、使用查询设计器 Access的查询有3种视图: 设计视图 SQL命令的可视化设计界面 数据表视图 用于显示查询的结果 SQL视图 用于直接输入SQL命令来设计查询,1、查询设计视图 使用查询设计视图不仅可以创建查询,还可以对已经存在的查询进行修改(包括利用向导创建的查询)。,查询设计视图的窗口包括两部分: 显示查询的数据源(包括它们之间的关系连线) 定义查询设计的表格 字段查询中所含表的字段 表字段所在的表 排序定义字段的排序方式 显示设置在数据表视图中是否显示该字段 条件设置查询的条件 或设置查询的条件,多条件查询时,在同一行上设置的各条件之间是“与”关系;“或”关系应在不同行上设置。,2、查询设计视图的工具栏 视图 在查询的3个视图之间切换 查询类型 在各种类型的查询之间切换 运行 执行查询并以数据表视图形式显示 显示表 列出当前数据库中所有的表和查询 总计 显示“总计”行,用于进行各种统计 上限值 指定查询结果的显示范围(记录数) 属性 显示光标指向对象的属性 (对字段属性的修改不会反映到表中) 生成器 用于生成查询条件表达式,3、在设计视图中创建查询 【例】 查询全校教师的工号、姓名、院系名称和基本工资。 操作步骤: 打开查询设计视图 选择数据源(如果选择多个表,多个表之间 如果没有建立关联但存在公共字段,且该 公共字段是一张表的主键,则系统将自动 按其公共字段建立临时关联) (注意教材P80的叙述) 在设计表格中设置字段、表、排序、条件等,说明: 可以双击表的关系连线来编辑表之间的关联,包括:联接的字段和联接的类型。 联接的类型包括: 只包括两个表中联接字段相等的行(默认选择) 包括左表中的所有记录和右表中联接字段相等的那些记录 包括右表中的所有记录和左表中联接字段相等的那些记录,多表中含同一字段时,可以选择字段的来源表,或用鼠标直接拖拉表中字段至表格。 查询条件的设置可以利用“生成器”工具按钮。 单击工具栏的“运行”按钮,可以查看查询的结果(利用工具栏“视图”按钮可返回设计视图)。,【例2】 查询全校教师的工号、姓名、院系名称和基本工资。查询结果按院系名称升序排序,同一个系的教师按基本工资的降序排序。 【例3】 查询全校教师中基本工资在1500元以上(含1500元)的教师的工号、姓名、院系名称和基本工资。按院系名称升序排序,同一个系的教师按基本工资的降序排序。,第 三 节 查 询 条 件,带条件的查询需要设置查询的条件来实现。查询条件是运算符、常量、函数以及字段名和属性等的任意组合(关系表达式),其运算结果是一个逻辑值,True或者Flase。 一、表达式 表达式中含运算符、常量、函数以及字段名等。 1、常数 日期型常数要用界限符(#)括起来 字符型常数要用界限符( 或 )括起来 数值型常数直接引用值 如: 123.4 ABcd 江苏南京 #2011/10/01# #1949-10-1 15:00:00#,2、常量 常量代表固定不变的数值或字符串值。如:True、False、Null等都是常量。 常量可以代表单个字符串、数值、任何包含数值或逻辑运算符的表达式,但不能含Is语句和乘幂运算符。在各种表达式中均可以使用常量。 常量的命名规则与变量相同。,Access中支持3种常量: 符号常量 是用Const 语句说明的常量 ,可以模块中使用。 如:Const Nc = 南京财经大学 Const Pi = 3.1415926 固有常量 是系统内部定义的作为操作参数和函数值的常量,提供了对VB、VBA、DAO库常量的访问。 系统常量 是由系统定义的常量。 如:True False Null,3、变量 变量是在程序的执行过程中值可以改变的数据。对变量的命名,实质上是对其存储空间的命名。,4、表达式 用运算符将常数、常量、变量、函数以及字段名、控件和属性等连接起来的式子称为表达式,表达式经计算后将得出一个单个值。 表达式可以: 作为许多属性和操作参数的设置值 在查询中设置搜索条件或定义计算字段 在窗体、报表和数据访问页中定义计算控件,以及在宏中设置条件 定义检查约束条件,(1)算术运算表达式 算术运算表达式中的运算符为算术运算符,最为常用的算术运算符有:+、-、*、/ 、等。 算术运算符仅用于数值运算并且必须有两个数值型操作数,即为双目运算符。 【例】 125 + 100 / 5 2 6 * 2 / ( 2 + 1 ) 单价 * 0.8,教材P82的例题描述存在错误。,(2)关系运算表达式 关系运算表达式中的运算符为关系运算符,包括:、 =、 等。 关系表达式运算的结果为一个逻辑值:True或False。 各关系运算符的运算级别相同。 【例】 3 8 5 + 2 < = 5 * 2 工作日期 < 出生日期,(3)连接运算表达式 连接运算符包括两个:,【例】查询会计学院(院系代码020201)所有成绩的平均分在75分以上,且各门课程的成绩不得低于60分的学生的学号、姓名、总分、平均分和最低分,并按照平均分从高到低排列。,在查询的设计视图打开后,鼠标单击工具栏中的【总计】按钮,将添加一个【总计】行,以便输出含聚合函数的字段。 当查询的输出字段含有聚合函数时,通常情况下应设置分组字段。所谓分组字段即为:进行数据统计时的分组依据。 当查询中含有汇总字段,而某一字段既不是汇总字段,也不是分组字段,其值是无意义的。,SELECT 学生表.xh , 学生表.xm , Sum( 成绩表.cj ) AS 总分, Avg( 成绩表.cj ) AS 平均分 , Min( 成绩表.cj ) AS 最低分 FROM (学生表 INNER JOIN 成绩表 ON 学生表.xh = 成绩表.xh ) INNER JOIN 院系代码 ON 学生表.yxzydm = 院系代码.yxzydm GROUP BY 学生表.xh , 学生表.xm, 院系代码.yxzydm HAVING ( ( ( 院系代码.yxzydm ) = 020201 ) AND ( ( Avg( 成绩表.cj ) ) = 75 ) AND ( ( Min( 成绩表.cj ) ) = 60 ) ) ORDER BY Avg( 成绩表.cj ) DESC ;,二、交叉表查询 交叉表查询是以行和列的字段作为标题和条件选取数据,并在行与列的交叉处对数据进行汇总和统计计算。 设计交叉表查询需要字义3种字段: 处于数据表最左端的行标题字段 即把某一字段或相关数据放入指定的一行中。 处于数据表最上边的列标题字段 即对每一列指定的字段进行统计,并将统计结果放在该列。 处于行和列交叉位置的字段 可以为该字段指定总计项(注意教材P88叙述),1、使用向导创建交叉表查询 操作步骤: 打开交叉表查询向导(创建新查询) 添加数据源 选择行字段和列字段 选择交叉点字段及总计函数(如果不作统计计算,则总计函数选择“第一项”并取消窗口中的【是,包括各行小计】复选框) 为查询命名并保存所设计的查询,交叉表查询向导的数据源只能来自于一个表或查询。若来自多个表,可先建立一个查询,而后以此查询作为数据源使用向导创建,或者直接在设计视图下创建。,2、在设计视图下创建交叉表查询 使用设计视图可以创建基于多表的交叉表查询。 操作步骤: 打开查询的设计视图 添加数据源 设置显示字段 设置查询类型为:交叉表查询 在【交叉表】行上设置:行字段、列字段 在【交叉表】行上设置:值字段(将【总计】行改为:第一条记录) 添加汇总字段并设置汇总函数(【交叉表】行设置为:行标题) 为查询命名并保存所设计的查询,三、参数查询 所谓参数查询是在运行查询的过程中,系统将根据所输入的参数的值来自动设定查询的规则。 参数查询是建立在选择查询或交叉查询的基础之上的,如果希望根据某个或某些字段的值来查询记录,即可使用参数查询。 操作步骤: 打开查询的设计视图 添加数据源 设置显示字段 在作为参数字段的【条件】行上输入提示文本(注:提示文本需要用方括号括起来),【例】设计一个能够查询指定课程代码的学生成绩查询,要求输出:学号、姓名、课程代码、课程名称、成绩。 (运行时课程代码分别取:60001、60011) 在参数查询中,可以建立单参数或者多参数的查询。 【例】设计一个能够查询指定课程代码、指定班级编号的学生成绩查询,要求输出:学号、姓名、班级编号、课程名称、成绩。 (运行时课程代码同上例,班级编号取:04020),【例】查询指定省份学生的信息。输出字段为:省份、jg、xm、xb和yxdm,查询结果先按jg升序排列,jg相同时按xm降序排列。 SELECT Left( jg , 2 ) AS 省份 , xs.jg , xs.xm , xs.xb , xs.yxzydm FROM xs WHERE ( ( ( Left( jg , 2 ) ) = 省份: ) ) ORDER BY xs.jg , xs.xm DESC,【例】查询指定城市(jg字段中的第3、4个字符)男女学生的人数,要求输出字段为:城市名、性别和人数。 SELECT Mid( jg , 3 , 2 ) AS 城市名 , xs.xb , Count( xs.xb ) AS 人数 FROM xs GROUP BY Mid( jg , 3 , 2 ) , xs.xb HAVING ( ( ( Mid( jg , 3 , 2 ) ) = 城市名: ) ),四、操作查询 操作查询用于创建新表或修改现有的表中的数据。 1、创建追加查询 追加查询是把查询的结果添加到另一个表的末尾。 操作步骤: 打开查询的设计视图 添加数据源 选择查询类型及设置目标表 选择追加字段及追加条件,数据源表和目标表的对应字段的字段名必须相同。 数据源表和目标表的对应字段的数据类型如果不相同,系统将先进行类型转换;如果不能进行类型转换,则将出错。,【例】 将学生表中“班级编号”为04020的记录追加到vfpxs表中。,2、创建更新查询 更新查询是把查询结果的记录来修改现有记录的相应字段的值。 操作步骤: 打开查询的设计视图 添加数据源 选择查询类型 设置更新的字段、字段的值及更新的条件,【例】 计算教师工资表中的住房补贴(应是基本工资和综合补贴之和的5%。 将教授和副教授的工资增加10%。,3、创建生成表查询 生成表查询是用查询的结果创建新表。 操作步骤: 打开查询的设计视图 添加数据源 选择查询类型及创建新表的表名 选择新表中的字段及条件,4、创建删除查询 删除查询是从表中删除与查询结果中相对应的记录。 操作步骤: 打开查询的设计视图 添加数据源 选择查询类型 选择删除记录的表 设置删除的条件,查询运行后将从原表中永久删除查询到的记录!因此为避免误删除,可以先预览查询的结果。,五、重复项、不匹配项查询 1、创建查找重复项查询 数据表中除设置为主键的字段不能有重复的值外,其它的各个字段均允许有重复的值。查找重复项查询即从表中查找具有相同字段值的记录。 操作步骤: 打开查找重复项查询向导(创建新查询) 选择数据源 选取设为重复值的字段 可以选择另外查询的字段,【例】查找学生表中班级编号和民族代码均相同的记录数。,查询运行后将显示所选取的重复值的字段及重复的记录数。,2、创建不匹配项查询 不匹配项查询就是在一个表中搜索另一个表中没有的相关记录。 操作步骤: 打开查找不匹配项查询向导(创建新查询) 选择参考表 选择不匹配表 选择两表的联接字段,【例】 在xs1表中搜索在xs2表中没有相关记录的行。,第 五 节 SQL查询,SQL是一种数据库语言,它包括4个部分即: 数据定义 数据查询 数据操纵 数据控制 SQL有两种使用方法: 与用户交互的方式联机使用 作为子语言嵌入到其它程序设计语言中使用,一、SQL的数据定义 SQL的数据定义功能是指定义数据库的结构,包括定义基本表、定义视图和定义索引3个部分(见教材P95)。,视图是基于基本表的虚表,索引是依附于基本表的,所以SQL不提供修改视图和索引的操作。如果需要修改视图或索引的定义,只能先将它们删除,然后再重建。,1、定义基本表 定义基本表的命令为CREATE TABLE。 格式: CREATE TABLE ( , , CONSTRAINT ) 功能:创建表的结构 说明: 部分数据类型有其固定的长度,不需要设置。,注意教材P95CREATE TABLE的语法格式。,CONSTRAINT子句用于设置记录级约束条件 完整性约束条件有两类: 字段级约束条件 记录级约束条件 如果约束条件涉及到多个字段时,则必须用CONSTRAINT定义为记录级约束条件,否则既可以定义为字段级约束条件,也可以定义为记录级约束条件。,约束条件有以下几种设置: Not Null字段不能为空值。 Primary Key 设置主键。设置单个字段为主键时,应该将该 字设置为字段级约束条件。 Unique 创建唯一索引。 格式: CONSTRAINT 索引名 Primary Key ( 主键字段1 , 主键字段2 , ) | 索引名 Unique ( 索引字段1 , 索引字段2 , ),【例】 CREATE TABLE xs ( xh Char( 10 ) Primary Key , xm Char( 10 ) Not Null , xb Logical , csrq Date , zp General , jl Memo ),【例】 CREATE TABLE cj ( xh Char( 10 ) , kcdm Char( 6 ) , cj SmallInt Not Null , CONSTRAINT xhkcdm Primary Key ( xh , kcdm ) ),【例】 CREATE TABLE ts ( ID Counter , isbn Char( 20 ) , sm String( 20 ) , rkrq Date , cbs Char( 20 ) , dj Single , gch Char( 15 ) , CONSTRAINT isbngch Unique (isbn , gch ) ),2、修改基本表 修改基本表的命令为ALTER TABLE。修改基本表包括:增加字段和有效性规则、修改原有的字段定义、删除原有的字段和约束条件等。 格式一:(增加字段) ALTER TABLE ADD 格式二: (删除字段或删除索引) ALTER TABLE DROP CONSTRAINT 格式三: (修改字段) ALTER TABLE ALTER 功能:增加字段、删除字段(或索引)、修改字段的数据类型、大小和约束条件。,教材P96所述语法格式有错! 教材P96所举的删除唯一索引语法有错! 教材P96对删除字段的叙述有错!,【例】 ALTER TABLE xs ADD jtdz Char( 20 ) ALTER TABLE ts ADD CONSTRAINT isbngch UNIQUE( isbn , gch ) ALTER TABLE xs DROP jtdz ALTER TABLE ts DROP CONSTRAINT isbngch ALTER TABLE xs ALTER xb Char( 1 ) ALTER TABLE ts ALTER isbn Char( 20 ) Not Null Primary Key,3、删除基本表 删除基本表的命令为DROP TABLE。 格式:DROP TABLE 功能:删除表 说明: 基本表一旦删除,表中的数据和在此表上建立的索引都将自动被删除,而建立在此表上的查询虽然仍然存在,但已无法引用。,【例】 DROP TABLE xs,二、SQL的数据操纵 SQL的数据操纵是指对表中的记录进行查询、插入、删除和更新等操作。 1、SQL查询 SQL查询是使用SELECT命令,这是数据库的核心操作。,格式: SELECT ALL | DISTINCT TOP n PERCENT AS , INTO FROM WHERE GROUP BY HAVING ORDER BY ASC | DESC ,说明: DISTINCT子句:查询结果中如果存在相同记录的话只显示其中的第一条记录,默认是ALL,即全部显示。 TOP子句:对查询结果中所显示记录数的限制,即只显示前n条记录;如果存在PERCENT选项,则是指显示的比例。 目标列:查询的输出数据,可以是表或查询中的字段名或表达式(包括常数);目标列可以通过AS子句设置其显示的标题(别名);如果输出所有的字段则使用SELECT * 。 INTO:将查询结果输出到一个表中。 FROM子句:查询的数据源,可以是表或查询。,【例】显示学生表中学生的学号、姓名、性别和籍贯。 SELECT xh AS 学号, xm AS 姓名, xb AS 性别 , jg AS 籍贯 FROM xs 【例】仅显示学生表中十分之一的学生的信息。 SELECT TOP 10 PERCENT * FROM xs 【例】列出图书馆中所有藏书的书名和出版社。 SELECT DISTINCT sm AS 书名 , cbs AS 出版社 FROM ts,联接类型:如果是多表查询,通常情况下应设置表之间的联接类型。联接的类型及对应的语句为: INNER JOIN 表名 ON 联接条件 只包括两个表中联接字段相等的行 LEFT JOIN 表名 ON 联接条件 包括左表中的所有记录和右表中联接字段相等的那些记录 RIGHT JOIN 表名 ON 联接条件 包括右表中的所有记录和左表中联接字段相等的那些记录,【例】查询所有学生的成绩,要求输出学号、姓名、课程代码和成绩。(涉及2张表) SELECT xs.xh AS 学号, xs.xm AS 姓名, cj.kcdm AS 课程代码 , cj.cj AS 成绩 FROM xs INNER JOIN cj ON xs.xh = cj.xh 【例】查询所有学生的成绩,要求输出学号、姓名、课程名称和成绩。 (涉及3张表) SELECT xs.xh AS 学号, xs.xm AS 姓名, kc.kcmc AS 课程名称 , cj.cj AS 成绩 FROM kc INNER JOIN ( xs INNER JOIN cj ON xs.xh = cj.xh ) ON kc.kcdm = cj.kcdm,如果涉及到3张表的联接,请注意语句中表和联接条件出现的顺序。,WHERE子句:指定查询的条件,即选择满足条件的记录。,【例】仅显示课程代码为“60001”的学生成绩,要求输出:学号、姓名、课程代码和成绩。 SELECT xs.xh AS 学号, xs.xm AS 姓名, cj.kcdm AS 课程代码 , cj.cj AS 成绩 FROM xs INNER JOIN cj ON xs.xh = cj.xh WHERE kcdm = 60001,如果两表之间的联接类型是INNER JOIN,那么也可以用WHERE子句来替代INNER JOIN。,【例】仅显示课程代码为“60001”的学生成绩,要求输出:学号、姓名、课程代码和成绩。 SELECT xs.xh AS 学号, xs.xm AS 姓名, cj.kcdm AS 课程代码 , cj.cj AS 成绩 FROM xs , cj WHERE xs.xh = cj.xh AND kcdm = 60001,【例】仅显示课程代码为“60001”的学生成绩,要求输出:学号、姓名、课程名称和成绩。 SELECT xs.xh AS 学号, xs.xm AS 姓名, kc.kcmc AS 课程名称 , cj.cj AS 成绩 FROM xs , cj , kc WHERE xs.xh = cj.xh AND kc.kcdm = cj.kcdm AND kc.kcdm = 60001 SELECT xs.xh AS 学号, xs.xm AS 姓名, kc.kcmc AS 课程名称 , cj.cj AS 成绩 FROM kc INNER JOIN ( xs INNER JOIN cj ON xs.xh = cj.xh ) ON kc.kcdm = cj.kcdm WHERE kc.kcdm = 60001,GROUP BY子句:用于设置查询记录的分组依据,以实现对每组记录进行统计性的计算。 当查询的输出数据项中存在聚合函数时,通常情况下应该由GROUP BY子句来设置分组的依据。GROUP BY的作用就是按字段的取值对记录分组,然后对每一组分别使用聚合函数。 如果没有进行分组字段的设定,那么将所有记录作为一组进行统计计算。,【例】查询各门课程的成绩,要求输出:课程代码、课程名称、选课人数、平均分、最高分和最低分。 SELECT kc.kcdm , kc.kcmc , Count ( cj ) AS 选课人数 , Avg ( cj ) AS 平均分 , Max ( cj ) AS 最高分 , Min ( cj ) AS 最低分 FROM kc INNER JOIN cj ON kc.kcdm = cj.kcdm GROUP BY kc.kcdm , kc.kcmc,HAVING子句:如果在分组统计计算的基础上,还需要对计算的结果进行筛选,那么就应该由HAVING子句来设置筛选的条件。HAVING子句必须位于GROUP BY子句之后。 【例】仅显示平均分为80分以上的课程的课程代码、课程名称、选课人数、平均分、最高分和最低分。 SELECT kc.kcdm , kc.kcmc , Count ( cj ) AS 选课人数 , Avg ( cj ) AS 平均分 , Max ( cj ) AS 最高分 , Min ( cj ) AS 最低分 FROM kc , cj WHERE kc.kcdm = cj.kcdm GROUP BY cj.kcdm HAVING Avg ( cj ) = 80,FROM kc INNER JOIN cj ON kc.kcdm = cj.kcdm,ORDER BY子句:对查询的结果进行排序的依据,ASC为升序,DESC为降序,默认是升序。 【例】仅显示平均分为80分以上的课程的课程代码、课程名称、选课人数、平均分、最高分和最低分,并按平均分降序排序。 SELECT kc.kcdm , kc.kcmc , Count ( cj ) AS 选课人数 , Avg ( cj ) AS 平均分 , Max ( cj ) AS 最高分 , Min ( cj ) AS 最低分 FROM kc , cj WHERE kc.kcdm = cj.kcdm GROUP BY cj.kcdm HAVING Avg ( cj ) = 80 ORDER BY Avg ( cj ) DESC,ORDER BY子句后面可以跟数字,数字表示输出字段的序号。,ORDER BY 4 DESC,(1)简单查询 【例】找出读者陈佳所在的单位。 注:表结构参见教材P101,注意理解各个表的作用及表中各字段的含义。 SELECT 姓名 , 单位 FROM 读者 WHERE 姓名= 陈佳,【例】查看所有读者的全部情况。 SELECT * FROM 读者,【例】查找清华大学出版社和科学出版社的所有图书及作者。 SELECT DISTINCT 书名 , 作者 , 出版单位 FROM 图书 WHERE 出版单位 IN ( 清华大学出版 , 科学出版社 ),【例】显示xs表中学号(xh)以“01”开头的学生情况。 SELECT * FROM xs WHERE xh Like 01* ,【例】显示cj表中所有课程代码(kcdm)为“60001”的记录的学号(xh)和成绩(cj),并按成绩降序排序。 SELECT xh , cj FROM cj WHERE kcdm = 60001 ORDER BY 2 DESC,【例】基于kc表查询所有课时数超过5或课时数少于3(不包括5和3)的课程。要求输出字段为:kcdm、kcmc、kss、bxk、xf(全部字段),查询结果按kss降序输出。 SELECT * FROM kc WHERE kss NOT Between 3 And 5 ORDER BY kc.kss DESC,(2)联接查询 简单查询只涉及到一个关系,如果查询涉及到两个或多个关系时,就需要使用联接查询。 在联接查询中,可以用FROM子句指出数据源,用WHERE子句指出多个关系中的联接条件。 【例】查找所有借阅了图书的所有读者的姓名及所在单位。 SELECT 姓名 , 单位 FROM 读者 , 借阅 WHERE 读者.借书证号 = 借阅.借书证号,如果在不同的关系中存在相同的字段名,为避免混淆,应在字段名前冠以关系名并用“ .”隔开。,也可以在语句中指出联接的类型,即: SELECT 姓名 , 单位 FROM 读者 INNER JOIN 借阅 ON 读者.借书证号 = 借阅.借书证号 SELECT 姓名 , 单位 FROM 读者 , 借阅 WHERE 读者.借书证号 = 借阅.借书证号 以上两句SQL语句等价。,【例】查找李晶借的所有图书的书名及借阅日期。 SELECT 书名 , 借阅日期 FROM 图书 , 借阅 , 读者 WHERE 读者.借书证号 = 借阅.借书证号 AND 图书.总编号 = 借阅.总编号 AND 姓名 = 李晶,这是一个涉及到3个关系的查询,3个关系间的自然联接用其外码指出联接条件来实现。,SELECT 书名 , 借阅日期 FROM ( 图书 INNER JOIN 借阅 ON 图书.总编号 = 借阅.总编号 ) INNER JOIN 读者 ON 读者.借书证号 = 借阅.借书证号 WHERE姓名 = 李晶,【例】显示学生的学号、姓名及所在的院系名称。 SELECT xs.xh , xs.xm , yxdm.yxzymc FROM xs , yxdm WHERE yxdm.yxzydm = xs.yxzydm 或者: SELECT xs.xh , xs.xm , yxdm.yxmc FROM xs INNER JOIN yxdm ON yxdm.yxzydm = xs.yxzydm,【例】显示班级编号为“04020”的所有学生的学号、姓名、各门课程的名称及成绩,并按学号降序排序。 SELECT xs.xh , xs.xm , kc.kcmc , cj.cj FROM xs , cj , kc WHERE kc.kcdm = cj.kcdm AND xs.xh = cj.xh AND xs.bjbh = 04020 ORDER BY 1 DESC,SELECT xs.xh , xs.xm , kc.kcmc , cj.cj FROM xs INNER JOIN ( kc INNER JOIN cj ON kc.kcdm = cj.kcdm ) ON xs.xh = cj.xh WHERE xs.bjbh = 04020 ORDER BY 1 DESC,【例】显示cj表中课程成绩有不及格的学生的学号和姓名,有多门课程不及格的学生只显示一次。 SELECT DISTINCT xs.xh , xs.xm FROM xs , cj WHERE xs.xh = cj.xh AND cj.cj < 60 或者: SELECT DISTINCT xs.xh , xs.xm FROM xs INNER JOIN cj ON xs.xh = cj.xh WHERE cj.cj < 60,【例】查询担任“专业核心课程”课的教师的姓名、课程名称,并按课程名称降序排序(要求使用联接类型)。 SELECT js.xm , kc.kcmc FROM js INNER JOIN ( kc INNER JOIN kcap ON kc.kcdm = kcap.kcdm ) ON js.gh = kcap.gh WHERE kc.lx = 专业核心课程 ORDER BY kc.kcmc DESC,SELECT js.xm , kc.kcmc FROM js , kc , kcap WHERE kc.kcdm = kcap.kcdm AND js.gh = kcap.gh AND kc.lx = 专业核心课程 ORDER BY kc.kcmc DESC,【例】查找每个学生各门课程的成绩,输出字段为:xh、xm、kcdm和cj。 SELECT xs.xh , xs.xm , cj.kcdm , cj.cj FROM xs INNER JOIN cj ON xs.xh = cj.xh,没有成绩的学生记录仍要输出(提示:联接类型采用左联接)。 SELECT xs.xh , xs.xm , cj.kcdm , cj.cj FROM xs LEFT JOIN cj ON xs.xh = cj.xh 只显示没有成绩的学生记录。 SELECT xs.xh , xs.xm , cj.kcdm , cj.cj FROM xs LEFT JOIN cj ON xs.xh = cj.xh WHERE cj.cj Is Null,(3)嵌套查询 嵌套查询是指在WHERE子句中再嵌套另一个查询块,该查询块称为子查询。系统允许多层嵌套,但在子查询中不能出现ORDER子句。 【例】查找借阅了“C语言程序设计”一书的读者的姓名及所在单位。 使用联接查询: SELECT 姓名 , 单位 FROM 读者 , 借阅 , 图书 WHERE 读者.借书证号 = 借阅.借书证号 AND 借阅.总编号 = 图书.总编号 AND 书名 = C语言程序设计,使用嵌套查询: SELECT 姓名 , 单位 FROM 读者 WHERE 借书证号 IN ( SELECT 借书证号 FROM 借阅 WHERE 总编号 IN ( SELECT 总编号 FROM 图书 WHERE 书名 = C语言程序设计 ) ),在执行嵌套查询时,先对内层的子查询求结果,外层使用内层的查询结果。从形式上看是自下向上进行处理的。 在

    注意事项

    本文(ACCESS查询的设计与应用.ppt)为本站会员(小**)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开