access查询命令
Access中的查询
Access中的查询数据库的真正优点是具有很强的数据查看和数据统计的能力。
通常并不需要同时查看所有表里的数据;有时,又需要查询位于不同表中的数据。
在这种情况下,就应该使用“查询”。
“查询”是一种提问,可以针对单个数据表提出较简单的问题,也可以针对一些相互关联的数据表提出较为复杂的问题。
“查询”命令的作用就是建立这样的查询,以便用户对数据库中的数据进行检索,当运行一个建立好的查询对象时,Access会自动建立起一个动态集合,这上动态集合把在一个或多个表对象中选择的多个字段中的数据集成起来。
通过“查询”可以通过不同的方法来查看、更改以及分析数据;也可以将“查询”作为窗体和报表的记录源。
从而方便地对数据进行查看、更改和分析。
而查询的结果本身又可以看作一个数据表,可以作为别的数据库操作的数据源。
在上一章简单地介绍了创建和使用简单的查询,这一章将详细介绍。
4.1 查询准则通常在使用查询时只是对数据库中的一部分数据记录进行查询和计算。
而如何在Access 2003数据库中将满足用户条件的数据记录挑选出来,这就要设置一定的准则。
准则为用户提供了一个选择条件,满足条件的记录才会被查询。
例如,在统计发货时间在2001年1月到2月间的公司订单总数时,就需要利用准则来检索所有的订单,从中挑选出符合条件的订单,再进行统计计算。
在查询的“设计”视图以及“高级筛选/排序”窗口中,都可以在“准则”单元格内通过使用准则表达式来体现查询条件,从而限定查询的范围。
4.1.1 文本值在Access表中的字段进行查询时最经常采用到的就是以文本值的准则而设定的查询条件。
使用文本值作为准则表达式可以方便地限定查询的范围,实现一些相对简单的查询,如表4-1所示。
表4-1 使用文本值作为准则的示例字段准则说明产品类别“饮料”显示产品类别为饮料的产品产品类别“饮料”Or“香料”使用Or运算符显示产品类别为饮料或香料的产品产品类别 In(“饮料”,“香料”) 使用In运算符显示产品类别为饮料或香料的产品2产品类别 Not“饮料”使用Not运算符以显示除了饮料以外的其他产品生产日期#1/1/99# 显示在99年1月1日生产的产品产品ID Right([产品ID],1)="1" 使用Right函数以显示产品ID值结尾数字为1的产品产品名称 Len([产品名称])<Val(10)使用Len和Val函数以显示产品名称小于10个字符的产品4.1.2 处理日期结果对于在Access表中的字段进行查询时,有时还要采用以计算或处理日期所得到的结果作为准则而设定的查询条件。
ACCESS查询教程(包含常用函数)
3.4.1 单参数查询
【例3-7】建立一个查询,显示任意月份出生的教师编号、 姓名及职称。 • 首先创建包含所需显示字段的简单查询 • 在设计视图中添加查询条件 • 设置查询参数的数据类型
29
3.4.2 多参数查询
【例3-3】通过多个表创建选择查询。在“教学管理”数据库中,利用“ 学生信息”表、“选课信息”表和“课程信息”表创建一个具有“学 号”、“姓名”、“课程名称”和“课程成绩”字段的查询,查询条 件是“土建学院”,按“学号”升序排序。
24
3.2.3 在查询中进行计算
查询对象还可以对数据进行分析和加工,生成新的数 据与信息。生成新的数据一般通过计算的方法,常用的有 求和、计数、求最大最小值、求平均数及表达式等。 1.了解查询计算功能 预定义计算:即所谓的“总计”计算,用于对查询中的记 录组或全部记录进行下列的数量计算:总和、平均值、计 数、最小值、最大值、标准偏差或方差。 自定义计算:使用一个或多个字段中的数据在每个记录上 执行数值、日期或文本计算。对于这类计算,需要直接在 查询设计区中创建新的计算字段,方法是将表达式输入到 查询设计区中的空“字段”单元格中。 25
20
3.2 创建选择查询
选择查询是最常用的查询类型,它从一个或多个 的表中检索数据,并以表格的形式显示这些数据。
3.2.1 使用“简单查询向导”创建查询
【例3-1】以“教学管理”数据库中的“学生信息”表、 “课程信息”表和“选课信息”表为数据源,利用向 导创建学生成绩明细查询如图所示。
21
【例3-2】利用“简单查询向导”向导创建院系成绩汇总 查询。在“教学管理”数据库中,利用“学生信息” 表、“选课信息”表和“课程信息”表中的有关字段 ,创建各院三门课程的成绩汇总如图所示。
access查询sql语句
access查询sql语句SQL(StructuredQueryLanguage)是用来访问和操纵数据库的语言,它是一种被广泛使用的标准数据库查询和编程语言。
Access查询SQL语句是一种通用的面向数据库的抽象语言,通过它可以实现对多种类型的数据库的查询。
本文将主要介绍Access查询SQL语句的基本结构,SQL语句的基本语法以及一些常用的SQL语句。
一、Access查询SQL语句的基本结构Access查询SQL语句的基本结构由四个部分组成,即SELECT、FROM、WHERE和ORDER BY,其中在实际应用中可以包含其他子句。
SELECT:SELECT子句用于指定该查询中包含哪些字段,可以指定单个字段或多个字段,也可以指定全部字段。
FROM:FROM子句指定查询中使用的表。
WHERE:WHERE子句用于筛选符合条件的记录,主要是通过比较运算符(如=、>、)实现的。
ORDER BY:ORDER BY子句用于指定查询结果的排序方式,可以按照字段值升序排列或者降序排列。
二、SQL语句的基本语法SQL语句一般由命令关键字、表达式、语法结构符号等组成,其中命令关键字是主体,其他部分与之结合构成语句。
SQL语句中的关键字:SELECT:从数据库中检索数据的关键字,后跟字段列表,表示要检索的字段;FROM:指定数据来源,后紧跟表名;WHERE:从表中筛选记录的关键字;ORDER BY:排序的关键字,用于指定排序字段及排序顺序;GROUP BY:统计汇总的关键字,用于指定统计汇总的字段;HAVING:筛选统计汇总结果的关键字。
运算符:=:等于;>:大于;小于;>=:大于等于;<=:小于等于;<>:不等于。
逻辑运算符:AND:表示“并且”;OR:表示“或”;NOT:表示“非”。
函数:在SQL语句中,可以使用一些种类繁多的函数,用于实现复杂查询。
三、常用的SQL语句(1)查询表中全部记录:SELECT * FROM名(2)查询指定字段记录:SELECT段1,字段2 FROM名(3)条件查询:SELECT段1,字段2 FROM名 WHERE件(4)按照指定字段排序:SELECT段1,字段2 FROM名 ORDER BY 段1(5)统计汇总:SELECT SUM(字段1) FROM名(6)关联查询:SELECT段1,字段2 FROM名1,表名2 WHERE 名1.字段1 =名2.字段1Access查询SQL语句是一种面向数据库的抽象语言,在实际应用中,可以使用它实现对各种类型数据库的查询和操作。
如何在 ACCESS 2003 中一次执行多条SQL查询语句
根据网上查找的资料,终于找到了ACCESS批量执行SQL查询的方式:通过VBA实现。
以下为本人根据上述思路测试成功的模拟操作,供各位初学者参考。
测试目标:根据检索条件,批量导出EXCEL表格(单独文件,当然也可合并为多标签的同一文件)
/*定义函数strSQL
Dim strSQL As String
/*函数strSQL实际等于我们需要的SQL查询命令(此处我模拟的是读取CMP20130825表,并将其中字段“地市”为“gz”的所有记录导出为excel格式表格文件)。“”内即为我们想要执行的SQL查询命令,需事先准备好。
strSQL = " SELECT * INTO [excel 8.0;database=d:\gz.xls].sheet1 FROM CMP20130825 WHERE CMP20130825.地市 = 'gz' "
CurrentProject.Connection.Execute strSQL
பைடு நூலகம்
3、菜单栏,运行——运行子过程(F5),正式执行。
然后查看d:\,就能发现符合我们需要的结果文件出现了。
呵呵,也不复杂嘛
打开access程序,“对象”——“模块”——“新建”——模块1(可更名)——“插入”——“过程”(须先命名)
1、在右边代码栏中找到
Public Sub test()
End Sub
2、在“Public Sub test()”与“End Sub”之间空白区域插入以下语句(注:示例中数据库表名为CMP20130825):
Access第三章_数据查询
右键快捷菜单:添加用于查 询的数据源
3.2.2
通过设计视图编辑或创建查询
查询设计视图中的工具栏
视图 运行 显示表 上限值 生成器 新对象
查询类型
合计
属性
数据库窗口
3.2.2
通过设计视图编辑或建查询
打开已有查询的设计视图:单击 “设计”按钮
3.2.2 通过设计视图编辑或创建查询
在设计视图中创建查询
3.2.1
用简单查询向导生成查询
【例3-2】 基于“导师”和“研究生”两个表生成 “导师-研究生”查询,显示每位导师的编号、姓 名、职称及其所带研究生的学号、姓名和入学分数。
前提:“导师”表和“研究生”表应建立一对多关系 本章中的例题以“导师”表、“研究生”表和 “系”表作为查询的数据源,为不失一般性,删除研究生
马力、李卫星和赵小刚的导师编号,使他们暂时无导师,
同时让“导师”表中的李小严不带研究生 。
3.2.1
用简单查询向导生成查询
(1)在简单查询向导第一个对话框,选择数据源及字段:
在“表/查 询”下拉列表框中, 依次选择“导师” 表 和“研究生”表, 并在 “可用字段” 列表框中,选中需 查询字段,将其送 入“选定的字段” 列表框中。
查询执行结果:
3.2.2
通过设计视图编辑或创建查询
【例3-4】在查询设计视图中新建一个查询,要求 能够显示各个系的系名、系中导师的姓名和导师 所带研究生的姓名。
打开的查询设 计视图,在视 图上半部分添 加查询数据源 (应为三个 表) ,在视 图下半部分, 设置好用于查 询的字段。
3.2.2
查询结果
'考古学' Or '会计学'
3.2.3 条件查询
《Access2016数据库教程》第5章SQL查询
SQL(Structure Query Language)结构化查询语言
是一种专门针对数据库操作的计算机语言,是关系数据库管 理系统中的标准语言。 SQL查询是使用SQL语句创建的查询。 查询对象本质上是一条SQL语言编写的命令。
SELECT语句
SELECT语句是对关系数据库的表作选择查询的一个命令, 可以返回指定的数据表中的全部或部分满足条件的记录。
Where Year(出生日期)=2001 Or Year(出生日期)=2003
Where Year(出生日期) In(2001,2003)
4.9 SQL查询
【例5-11】查询“学生表”中年龄为18岁的 学生的学号、姓名、政治面貌。
Select 学号, 姓名, 政治面貌 From 学生表
Where Year(Date())-Year(出生日期)=18
然后使用Group By子句按照课程名称进行分组 再计算每个组内包含成绩的平均值、最大值和最小值。
3.SELECT多表连接查询示例
【例5-19】 查询每个学生的学号、姓名和平均成绩 (保留2位小数),查询结果按“平均成绩”降序排序。
Select 学生表.学号, First(学生表.姓名) As 姓名, Round(Avg(成绩),2) As 平均成绩 From 学生表 Inner Join 选课成绩表 On 学生表.学号= 选课成绩表.学号 Group By 学生表.学号 Order By Round(Avg(成绩),2) Desc
先从Where子句的条件筛选出“男”同学,再按照 院系代码进行分组求出平均分,然后按照平均分降 序排序。
5.2.3 多表连接查询
连接就是将其他表中的列字段添加到本表中。连接运 算主要分成内连接和外连接。 内连接是应用最广泛的连接运算,结果只包含两个表 中连接字段相同的记录行,是等值连接。使用Inner Join就可以将两张表内连接在一起。
ACCESS 数据输入查询计算连接
第4章数据输入、查询、计算、连接:通过英特网的ACCESS联接在ACCESS中使用ADO:Private Sub ABC_Click()Dim cn As New ADODB.ConnectionDim rs As New ADODB.Recordsetcn.OPEN "DSN=alwin;UID=;PWD=;"rs.OPEN "Select * from tbTABLE", cn, adOpenDynamic, adLockReadOnly’rs.ABC App.Path & "\testdata.dat", adPersistADTGrs.Closecn.CloseMsgBox ("OPERATION OK")End SubPrivate Sub OPEN_Click()Dim strConnect As StringstrConnect = "Provider=MSPersist"Dim rs As New ADODB.Recordsetrs.OPEN "http://远程服务器的IP/test/testdata.dat", strConnectDo While Not rs.EOFDebug.Print rs("USERID").valuers.MoveNextLoopEnd Sub将用户输入的身份证号15位数据转化为18位。
Function IDCode15to18(sCode15 As String) As String'*功能:将15的身份证号升为18位(根据GB 11643-1999)'*参数:原来的号码'*返回:升位后的18位号码Dim i As IntegerDim num As IntegerDim code As Stringnum = 0IDCode15to18 = Left(sCode15, 6) + "19" + Right(sCode15, 9)'计算校验位For i = 18 To 2 Step -1num = num + (2 ^ (i - 1) Mod 11) * (Mid(IDCode15to18, 19 - i, 1))Next inum = num Mod 11Select Case numCase 0code = "1"Case 1code = "0"Case 2code = "X"Case Elsecode = Trim(Str(12 - num))End SelectIDCode15to18 = IDCode15to18 + codeEnd Function据身份证号自动输入出生日期Dim Length As IntegerLength = Len(Me.[身份证号])If Not IsNull(Length) ThenIf Length = 15 ThenMe.[性别] = IIf(Val(Mid(Me.身份证号, 15, 1)) / 2 = Int(Val(Mid(Me.身份证号, 15, 1)) / 2), "女", "男")Me.[出生日期] = "19" & Mid([身份证号], 7, 2) & "-" & Mid([身份证号], 9, 2) & "-" & Mid([身份证号], 11, 2)ElseIf Length = 18 ThenMe.[性别] = IIf(Val(Mid(Me.身份证号, 17, 1)) / 2 = Int(Val(Mid(Me.身份证号, 17, 1)) / 2), "女", "男")Me.[出生日期] = Mid([身份证号], 7, 4) & "-" & Mid([身份证号], 11, 2) & "-" & Mid([身份证号], 13, 2)ElseMsgBox "身份证号错误!"End IfEnd If两行代码打开另一数据库Private Sub 命令4_Click()On Error GoTo Err_命令4_ClickDim strDb As StringstrDb = "C:\db1.mdb"SendKeys "{F11}%FO" & strDb & "{enter}"Exit_命令4_Click:Exit SubErr_命令4_Click:MsgBox Err.DescriptionResume Exit_命令4_ClickEnd Sub实现打开外部数据库中的报表。
ACCESS查询操作题及答案详解
2.简单应用题在考生文件夹下有“xxx.mdb”数据库。
(1)以雇员表为数据源,创建查询“查询1”,查询职务为“销售主管”的雇员信息。
结果显示雇员的全部字段。
(2)以工资表为数据源,创建参数更新查询“工资调整”,通过输入基本工资、奖金和补贴的变动来改变雇员工资。
参数提示为“基本工资变动差额”、“奖金变动差额”、“补贴变动差额”和“请输入雇员ID”(1)【解题步骤】步骤一:打开数据库,在“数据库”窗口中选择“查询”对象,单击“新建”按钮,在“新建查询”对话框中选择“设计视图”选项,单击“确定”按钮。
步骤二:单击“显示表”按钮,添加雇员表。
在字段行选择“雇员.*”字段,再添加“职务”字段,在“职务”字段对应的准则行输入销售主管,取消职务字段的显示。
步骤三:单击“保存”按钮,在弹出的“另存为”对话框中输入查询名称“查询1”,单击“确定”按钮。
(2)【解题步骤】步骤一:打开数据库,在“数据库”窗口中选择“查询”对象,单击“新建”按钮,在“新建查询”对话框中选择“设计视图”选项,单击“确定”按钮。
步骤二:单击“显示表”按钮,添加工资表。
单击“查询”|“更新查询”命令,在字段行选择基本工资、奖金、补贴和雇员ID字段。
在基本工资字段的更新到行输入“[工资]![基本工资] Val([基本工资变动差额])”,在奖金字段的更新到行输入“[工资]![奖金] Val(奖金变动差额])”。
在补贴字段的更新到行输入“[工资]![补贴] Val(补贴变动差额])”,在雇员ID字段对应的准则行输入“[请输入雇员ID]”。
步骤三:单击“保存”按钮,在弹出的“另存为”对话框中输入查询名称“工资调整”,最后单击“确定”按钮即可。
3.综合应用题在考生文件夹下有“商品管理.mdb”数据库。
(1)创建一个基于产品的“产品查询”的窗体“产品信息”,结果在窗体中显示“产品查询”查询的全部字段。
布局:纵栏表;样式:标准。
(2)创建宏“关闭产品信息窗体”。
access-查询[内部培训资料]
表达式查询
4、计算员工的年龄层: 年龄层:Partition([年龄],20,119,10) 5、计算员工的加薪工资 金额:[目前薪资]一[底薪] ……
在查询设计字段中改变其属性,小 数位数
表达式查询
6、查询共有员工多少人 人数:COUNT(*) 7、所有员工中的最高工资: 最高工资:MAX([cur_salary])
关系式查询
1、查询每一位客户每一笔订单的产品金额。(客户编号,公司名称,订单号 码,订单日期,产品名称,单价,数量,小计) 2、查询每一位客户每一笔订单订购金额。 (……) 3、查询每一位客户的订单总金额。( …….) 4、查询每一位客户每一年之各月的订货总额。(……) 5、查询出销售地区的业绩。
万用字符查询
1、*
Like “he*”
代表任意数目的字符。
将会筛选出字段内容以he开头的数据记录。
Like “*字“ 将会筛选出字段内容以”字“结尾的数据记录
。
Like “汉*字 将会筛选出字段以”字“开头,以”字“结尾的数据记录 。 “ Like “*大连 *“ 将会筛选出字段内容内含”大连“的数据记录。
Like “[1-3][2-5][0-9][0-9]” 将会筛选字段为4个字符,第1个字符是1、2或3,第2个 是2至5中的任意一个 ,第3,4个分别是0至9中的任何一个 的数据。
Like “![0-3] *” 将会筛选出字段内容的开头不是数字0到3的数据记录。
万用字符查询
6、# 代表单个数字(0--9)。
万用字符查询
3、[] 代表符合任何在中括号之内的单一字符。
Like “M[ a e] y” 将会筛选字段为3个字符,第1个是M,第2个 是a或e ,第3个是y的数据记录。
access提供了5种类型的查询
access提供了5种类型的查询,包括选择查询、参数查询、交叉表查询、操作查询和SQL查询。
1.选择查询选择查询是最常见的查询类型,它从一个或多个表中检索数据,在一定的限制条件下,还可以通过选择查询来更改相关表中的记录。
使用选择查询也可以对记录进行分组,并且可对记录进行总计、计数以及求平均值等其他类型的计算。
2.交叉表查询交叉表查询可以在一种紧凑的、类似于电子表格的格式中,显示来源于表中某个字段的合计值、计算值、平均值等。
交叉表查询将这些数据分组,一组列在数据表的左侧,一组列在数据表的上部。
注意:可以使用数据透视表向导毒显示交叉表数据,无需在数据库中创建单独的查询。
3.参数查询参数查询会在执行时弹出对话框,提示用户输入必要的信息(参数),然后按照这些信息进行查询。
例如,可以设计一个参数查询,以对话框来提示用户输入两个日期,然后检索这两个日期之间的所有记录。
参数查询便于作为窗体和报表的基础。
例如,以参数查询为基础创建月盈利报表。
打印报表时,Access显示对话框询问所需报表的月份。
用户输入月份后,Access便打印相应的报表。
也可以创建自定义窗体或对话框,来代替使用参数查询对话框提示输人查询的参数。
4.操作查询操作查询是在一个操作中更改许多记录的查询,操作查询又可分为四种类型:删除查询、更新查询、追加查询和生成表查询。
(1)删除查询从一个或多个表中删除一组记录。
例如,可以使用删除查询来删除没有订单的产品。
使用删除查询,将删除整个记录而不只是记录中的一些字段。
(2)更新查询对一个或多个表中的一组记录进行批量更改。
例如,可以给某一类雇员增加5%的工资。
使用更新查询,可以更改表中已有的数据。
(3)追加查询将一个(或多个)表中的一组记录添加到另一个(或多个)表的尾部。
例如,获得了一些包含新客户信息表的数据库,利用追加查询将有关新客户的数据添加到原有“客户\"表中即可,不必手工键人这些内容。
(4)生成表查询根据一个或多个表中的全部或部分数据新建表。
Access应用技术教程第5章 Access查询及其应用
上一页 下一页 退出
《Access数据库应用基础及实训教程》
(2) 添加数据表。 在【显示表】对话框中,单击建立查询所需的数据表。若 要添加多个数据表,可以按住Ctrl键,同时选择多个数据表, 如图5.12所示。然后单击【添加】按钮,将数据表添加到查询 对话框中。也可以通过双击所需的数据表的方法添加数据表。
上一页 下一页 退出
《Access数据库应用基础及实训教程》
(1) 删除查询:删除查询可以从一个或多个表中删除一组记录 (2) 更新查询:更新查询可以对一个或多个表中的一组记录作 全局的更改,使用更新查询,可以更改已有表中的数据。 (3) 追加查询:追加查询将一个或多个表中的一组记录添加到 一个或多个表的末尾。 (4) 生成表查询:生成表查询可以根据一个或多个表中的全部 或部分数据新建表。生成表查询有助于创建表以导出到其 他Microsoft Access数据库。 5.SQL查询 SQL即结构化查询语言,SQL查询是使用SQL语句创建的 查询。可以使用SQL语句来查询、更新和管理Access数据库。 Access中所有查询都可以认为是一个SQL查询,在其他查询提 供的创建工具中,虽然不用输入SQL语句,但系统最终都将自 动生成SQL查询。
上一页 下一页 退出
《Access数据库应用基础及实训教程》
本章重点分析选择查询和SQL查询,其他查询使用机会较 少,请参考帮助系统学习其操作方法。 5.1.2 查询的功能 如果“隐藏”数据表中不需要显示或打印的列,然后显示 或打印数据表中的数据,这样也能完成类似查询的功能,但是 这样做只能从一个数据表选择所需的数据,而不能保存结果。 而使用查询可以按照不同的方式查看、更改和分析数据。也可 以用查询作为窗体、报表和数据访问页的记录源。查询的主要 功能如下: (1) 选择字段:从数据表选择所需的部分字段。 (2) 选择记录:从数据表中选择符合规定条件的部分记录。 (3) 排序记录:对数据表的数据进行重新排序,按新的顺序浏 览记录。 (4) 修改数据:采用查询可以一次修改、删除或增加一组相关 的记录。 (5) 建立新表:采用生成表查询,可以根据查询结果新建一个 查询结果表。
access2007_操作查询及SQL查询
中文版Access 2007实用教程
7. 1.3 追加查询
◆ 追加查询用于将一个或多个表中的一组记录添加到另一个表的结尾 ,但 是 , 当两个表之间的字段定义不相同时 ,追加查询只添加相互匹配的字段内容, 不匹配的字段将被忽略 。追加查询以查询设计视图中添加的表为数据源 , 以在 “追加 ”对话框中选定的表为目标表。
中文版Access 2007实用教程
7.3.3 数据定义查询
◆ SELECT语句是SQL语言的核心 。除此之外 ,SQL还能提供用来定义和 维护表结构的“数据定义 ”语句和用于维护数据的“数据操作 ”语句。 ◆ 创建数据表 ◆ 修改表结构
[WITH OWNERACCESS OPTION]
中文版Access 2007实用教程
7.2.3 INSERT语句
使用SQL语言中的INSERT语句可以向数据表中追加新的数据记录。
中文版Access 2007实用教程
7.2.4 UPDATE语句
UPDATE语句用来修改数据表中已经1存在的数据记录 。它的基本语法格 式如下:
中文版Access 2007实用教程
7. 1. 1 更新查询
更新查询就是对一个或者多个数据表中的一组记录做全局的更改 。这样用 户就可以通过添加某些特定的条件来批量更新数据库中的记录。
中文版Access 2007实用教程
7. 1.2 设置查询条件
在Access的许多场合中 ,查询可以与表一样使用 。与表一样,查询虽然 也有设计视图和数据表视图 ,但是查询毕竟不同于表 。例如不能导出到其他数 据库。
7.2.6 SELECT…INTO.语句
SELECT…INTO语句用于从一个查询结果中创建新表 ,基本语法格式如 下:
access常用指令集合
Access常用宏命令及其功能宏命令功能StopMacro终止当前正在运行的宏CancelEvent取消引起该宏引起的事件StopAllMacros终止当前所有宏的运行RunApp启动另一个Windows或MS-DOS应用程序RunCode调用Visual Basic Function 过程RunCommand执行Access菜单栏,工具栏或快捷菜单中的内置命令RunSQL执行指定的SQL语句已完成操作查询,也可以完成数据定义查询RunMacro执行一个宏OpenModule在制定过程的设计视图中打开指定的模块OpenQuery打开选择查询或交叉表查询OpenReport在设计视图或打印预览视图中打开报表或立即打印该报表OpenDataAccessPage在页视图或设计视图中打开数据访问页Openform在窗体视图、窗体设计视图、打印预览或数据表视图中打开窗体OpenTable在数据表视图、设计视图或打印预览中打开表Beep通过计算机的扬声器发出嘟嘟声Echo指正您否打开回响,例如玄执仃时显小其运仃结果,或玄执仃兀/I显示运行结果。
此处还可设置状态栏显示文本Hourglass时鼠标指针在玄执行时变成沙漏形式Msgbox显示包含警告信息或其他信息的消息框SetWarnings打开或关闭系统消息ApplyFilter对表、窗也报表应用筛选、查询或SQL的Where子句,以便限制或排序表的记录以及园体或报表的基础表,或基础查询中的记录GoToRecord在打开的表、囱体或查询结果集中制定当前记录FindNext查找符合最近FindRecord操作或查找对话框中指定条件的下一条记录FindRecord在活动的数据表、查询数据表、窗体数据表或窗体中查找符合条件的记录ShowAllrecord删除活动表、查询结果集或窗体中已应用过的筛选TransferDatabase在当前数据库(.mdb)与其他数据库之间导入或导出数据TransferSpreadsheet在当前数据库(.mdb)与电子表格文件之间导入或导出数据OutputTo将指定的数据库对象中的数据以某种格式输出TransferText在当前数据库(.mdb)与文本文件之间导入或导出义本SendObject效果队件菜单中的“发送”命令一样,该操作的参数对应于“发送” 对话框的设置,但发送命令仅应用于活动对象,而sendObject操作可以指定要发送的对象Maximize放大活动囱口,使其充洒Access主囱口。
Access常用代码
Access常用代码1、组合框的循环选择在双击事件中加入,也可用在键盘按上下箭头事件中:Screen.ActiveControl.ListIndex =(Screen.ActiveControl.ListIndex + 1) Mod Screen.ActiveControl.ListCount2、窗体单击及移动记录时选定记录(反黑显示)在成为当前事件中加入:DoCmd.RunCommand acCmdSelectRecord3、组合框获得焦点后自动张开在获得焦点事件中加入:Combo0.Dropdown4、文本框获得焦点后光标自动移动到文本的末尾在获得焦点事件(如有必要也在鼠标释放事件)中加入:Text0.SelStart = Len(Text0)5、随机抽取指定数量记录的查询在查询语句中Rnd([编号]) 的编号为表中的自动编号字段名:Select TOP 10 * FROM 表1 orDER BY Rnd([编号]);6、打印窗体中筛选显示的记录报表的记录源药与窗体的相同,在窗体的打印按钮单击事件中:DoCmd.OpenReport "报表名", acViewPreview, , Me.Filter7、去除窗体及子窗体的筛选及排序跟“记录”菜单中的“取消筛选/排序”作用相同:DoCmd.ShowAllRecords8、数据更改后提醒是否保存在窗体的更新后事件中(Form_BeforeUpdate):If Not (Cancel = (MsgBox("数据已更改,是否保存?", vbOKCancel + vbQuestion) = vbCancel)) Then DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer709、选定一个选项,自动把与选项相关信息辅助录入(即一拖几)在选项的更改事件中,用Dlookup函数查找相关信息并辅值给当前记录:供货商=DLookup("公司名称", "供货商资料", "[供货商编号]= '" & Me![供货商编号] & "'")10、设置字段的默认值为当前表的最后一条记录的值(或序号加1)在窗体的成为当前事件中,用Dlast函数查找最后记录相关值并辅值给字段的默认值:成绩.DefaultValue = "'" & DLast("成绩", Me.RecordSource) & "'"11、删除重复记录(字段)表中要有自动编号字段(ID),可建立删除查询或执行RunSql语句(其中[ ]填写对应的表名、重复字段名、关键字段名):Delete * FROM [表] Where DCount("[字段]","[表]","[字段]='" & [字段] & "'")>1 AND [ID]>DLookUp("[ID]","[表]","[字段]='" & [字段] & "'") or [字段] Is Null;12、班级成绩排名查询可根据年级、班级和不同科目替换查询中的相应字段名:Select *, [英语]+[数学]+[语文] AS 总分, DCount("*","成绩表","[年级]='" & [年级] & "' and ([英语]+[数学]+[语文])>" & [英语]+[数学]+[语文])+1 AS 年级名次 FROM 成绩表 orDER BY 成绩表.年级, [英语]+[数学]+[语文] DESC;13、点击“保存”时显示“新增”、“修改”,隐藏“删除”命令按钮Private Sub 保存_Click()If MsgBox("你确认要保存用户资料吗?", 1 + 64, "确认保存") = vb OK ThenMe.新增.Visible = TrueMe.修改.Visible = TrueMe.删除.Visible = FalseMe.新增.SetFocusMe.保存.Visible = FalseEnd IfEnd Sub。
ACCESS实验-数据查询
ACCESS实验查询一、实验目的1. 掌握各种查询的创建方法2. 掌握查询条件的表示方法3. 掌握应用SQL中SELECT语句进行数据查询的方法4. 理解SQL中数据定义和数据操纵语句二、实验内容与要求1.创建各种查询2.使用SQL中SELECT语句进行数据查询3.使用SQL语句进行数据定义和数据操纵三、实验步骤案例一:利用“简单查询向导”创建选择查询1.单表选择查询要求:以“教师”表为数据源,查询教师的姓名和职称信息,所建查询命名为“教师情况”。
操作步骤:(1)打开“教学管理.accdb”数据库,单击“创建”选项卡,“查询”组——单击“查询向导”弹出“新建查询”对话框。
如图2-1所示。
图2-1创建查询(2)在“新建查询”对话框中选择“简单查询向导”,单击“确定”按钮,在弹出的对话框的“表与查询”下拉列表框中选择数据源为“表:教师”,再分别双击“可用字段”列表中的“姓名”和“职称”字段,将它们添加到“选定的字段”列表框中,如图2-2所示。
然后单击“下一步”按钮,为查询指定标题为“教师情况”,最后单击“完成”按钮。
图2-2简单查询向导2.多表选择查询要求:查询学生所选课程的成绩,并显示“学生编号”、“姓名”、“课程名称”和“成绩”字段。
操作步骤:(1)打开“教学管理.accdb”数据库,在导航窗格中,单击“查询”对象,单击“创建”选项卡,“查询”组——单击“查询向导”弹出“新建查询”对话框。
(2)在“新建查询”对话框中选择“简单查询向导”,单击“确定”按钮,在弹出的对话框的“表与查询”。
先选择查询的数据源为“学生”表,并将“学生编号”、“姓名”字段添加到“选定的字段”列表框中,再分别选择数据源为“课程”表和“选课成绩”表,并将“课程”表中的“课程名称”字段和“选课成绩”表中的“成绩”字段添加到“选定的字段”列表框中。
选择结果如图2-3所示。
图2-3多表查询(3)单击“下一步”按钮,选“明细”选项。
ACCESS 查询操作
使用设计视图创建交叉表查询
(1)打开数据库; (2)单击“查询”对象,双击“在设计视图 中创建查询”; (3)添加查询数据源,在上半部分右击,选 择查询类型为交叉表查询;(或在查询菜单中 选择) (4)指定查询字段,设置行标题和列标题及 交叉表中显示其值的字段; (5)若要进行统计(如总计/求和、平均值 、计数等),还必须在设计视图中加入一个统 计列,该列的字段为统计字段,并选择统计类 型,而其交叉表行中应填入“行标题。 (6)给出查询名称,保存。
11
00:46:06
5.2.1 使用设计视图创建查询
文本型数据比较大小: 先比较第一个字符,不同的话有结果,相同的话再比 较第二个字符…… 汉字按拼音进行比较 25 5 55
12
00:46:06
5.2.1 使用设计视图创建查询
例:查询成绩表中成绩大于等于70小于等于80的
学生。
BETWEEN … and …运算符:确定某个数字值或者日期 值是否在某个给定的范围之内
31
00:46:06
5.2.1 使用设计视图创建查询
例:假设学生的EMAIL地址是学号 +@.dn,查询每个学生的EMAIL地址。 连接操作符&:用以合并字符串。 SELECT 学生表.姓名, [学号] & "@" AS EMAIL邮箱 FROM 学生表
思考:输出项[所在系] & [ 姓名]会得到什么结果?
Not Is Null Is Null
(查询出生日期、所在系末知即末录入的记录用同样方法)
24
00:46:06
5.2.1 使用设计视图创建查询
有关统计的题目,分为分组和不分组两种情况。先用以下方法之一 在查询设计视图的下半部分中增加总计项。
Access讲稿(嵌套查询)
《数据库及应用》讲稿
第二部分查询
嵌套查询
例1:查找出取得过95分及其以上考试成绩的学生的学号和姓名。
SELECT 学号,姓名FROM 学生WHERE 学号IN (SELECT 学号FROM 考试成绩WHERE 分数>=95)
解释:该命令中的IN相当于集合运算的包含运算符∈。
括号外的查询称为外层查询;括号内的查询称为内层查询(也称为“子查询”)。
内层查询的结果被当做是一个集合。
例2:查找出“计算机应用”课程考试取得95分及其以上考试成绩的学生的学号和姓名。
SELECT学号,姓名FROM 学生WHERE 学号IN
(SELECT 学号FROM 考试成绩WHERE 分数>=95 AND 课程编号IN
(SELECT 课程编号FROM 课程WHERE 课程名称=”计算机应用”))
例3:查找出所有学生的考试都及格的班级。
SELECT班级FROM 班级WHERE 班级编号NOT IN
(SELECT 班级编号FROM 学生WHERE学号IN
(SELECT 学号FROM 考试成绩WHERE 分数<60))
练习题01:查找出考试全及格的课程。
练习题02:查找出所有学生的考试都及格的班级,并排除那些没有学生的班级。
练习题03:使用多表查询实现例1。
练习题04:使用多表查询实现例2。
练习题05:查找出“数学专业”班全体同学的姓名和“数学”课程考试分数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如果还查性别也相同大则如下:
Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1
------------------------------------------------------------------------------------------------
4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
delete from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
where mx.xh=sy.xh
group by mx.xh,sy.skjbh,sy.StartDate,sy.EndDate;
SELECT sy.skjbh as "税控机编号",count(*) as "开票张数" ,sum(mx.hjje) as "合计金额"
FROM InvoiceDetail mx,InvoiceIndex sy
and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)
3、查找表中多余的重复记录(多个字段)
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。
2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下
假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集
select identity(int,1,1) as autoID, * into #Tmp from tableName
SELECT sy.skjbh as "税控机编号",count(*) as "开票张数" ,sum(mx.hjje) as "合计金额"
FROM InvoiceDetail mx,InvoiceIndex sy
where mx.xh=sy.xh and CDBL(mx.fph) between 1600167 and 8944376
2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
delete from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
group by sy.skjbh;
插入某段发票号的所有记录
insert into InvoiceDetail
select * from InvoiceDetail
where cdbl(fph) between 320001 and 320030;
SELECT fph,count(fph) as "数量"
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
比方说在A表中存在一个字段“name”,而且不同记录之间的“name”值有可能会相同,
现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;
数字转换成字符
cstr()
str()
日期转换成字符
format()
字符转换成日期
cdate()
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
select * from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
方法二
有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分。
1、对于第一种重复,比较容易解决,使用
select distinct * from tableName
就可以得到无重复记录的结果集。
消除重复的记录:
SELECT distinct *
FROM InvoiceDetail;
字符转换成数字
cint() --转换为整数
clng() --转换为长整数
cdbl() --转换为double
ccur() --转换为货币
where mx.xh=sy.xh
group by sy.skjbh,sy.StartDate,sy.EndDate;
查某天的开票记录
SELECT *
FROM InvoiceDetail as mx
where format(mx.kpsj,'yyyymmdd')='20110510'
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
select * from #Tmp where autoID in(select autoID from #tmp2)
最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)
select * from tablename where id in (
select id from tablename
group by id
having count(id) > 1)
FROM InvoiceDetail
group by fph;
查询重复记录的所有行:
select * from InvoiceDetail id,
(SELECT fph,count(fph) as sl
FROM InvoiceDetail
group by fph) ls
where ls.sl>=2 and id.fph=ls.fph;
如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除
select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp
SELECT distinct mx.xh as "序号",sy.skjbh as "税控机编号",count(*) as "开票张数" ,sum(mx.hjje) as "合计金额",sy.StartDate,sy.EndDate
FROM InvoiceDetail mx,InvoiceIndex sy
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)