第一句子大全,网罗天下好句子,好文章尽在本站!

结构化查询语言SQL在VBA中几种常见的查询表达方式

时间:2017-01-24

在每一讲的讲解中,我已经简单介绍了SQL的情况

友情提示:本文共有 3621 个字,阅读大概需要 8 分钟。

在之前的讲解中我们从ADO的创建、连接到记录集的操作,已经讲了很多VBA对数据库的实际操作了,到这里,读者应该对用VBA操作数据库有了一个清晰的印象,从各个步骤上看我们不难得出一个重要结论:要让ADO有效工作,关键是我们给它发出什么样的SQL指令。

在每一讲的讲解中,我已经简单介绍了SQL的情况。现在我们有必要总结一下VBA中SQL语句的几种常见查询的表达方式。

方式一:Select 查询表达式 From 数据区域

其中,”查询表达式”可以是下列之一或其组合,对多种方式的组合,用逗号搁开:

(1)星号(*)表示“数据源”的所有字段。

(2)字段名

(3)常量表达式

(4)任何有效的计算表达方式

这类查询的SQL语句我们已经用了非常多了:如 strSQL = "SELECT * FROM 员工信息"

注意点:

1 有时使用AS重新命名字段名称 当查询表达式使用(2)字段名时,字段名就是其本身,使用(3)常量表达式和(4)任何有效的计算表达方式时,系统将为该字段重新命名一个字段名,这个字段名通常没有意义,这时可以在表达式中使用AS为字段重新命名,当然对字段名也可以通过使用AS为其重新命名。AS并不对查询结果造成实质影响。下面是使用AS的一个例子:strSQL = "Select 班级,姓名 AS 名字,语文+数学+英语 AS 总成绩 from员工信息"

2 使用DISTINCT删除重复记录

例如:在“员工信息”表中有重复记录,如果希望若干重复的记录只显示一条,可以使用DISTINCT进行限定。

strSQL = "Select distinct * from 员工信息"

例如:数据库中员工信息表内容如下:

上述数据中很多是有重复的。我们可以用下面的代码进行排重处理:

Sub mynzdate_2() "有重复数据,排重

Dim cnADO, rsADO As Object

Dim strPath, strSQL As String

Dim i As Integer

Set cnADO = CreateObject("ADODB.Connection")

Set rsADO = CreateObject("ADODB.RecordSet")

strPath = ThisWorkbook.Path & "mydata2.accdb"

cnADO.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath

"strSQL = "SELECT * FROM 信息参考"

strSQL = "Select distinct * from 信息参考"

rsADO.Open strSQL, cnADO, 1, 3

Cells.ClearContents

For i = 0 To rsADO.Fields.Count - 1

Sheets("Sheet1").Cells(1, i + 1) = rsADO.Fields(i).Name

Next i

For i = 1 To rsADO.RecordCount

For j = 0 To rsADO.Fields.Count - 1

Sheets("Sheet1").Cells(i + 1, j + 1) = rsADO.Fields(j)

Next j

rsADO.MoveNext

Next i

rsADO.Close

cnADO.Close

Set rsADO = Nothing

Set cnADO = Nothing

End Sub

代码截图:

运行后显示数据:

方式二 Select 查询表达式 From 数据区域 Where 条件表达式,通过使用Where可以设置查询条件。

查询的条件表达式可以是:

(1)任何逻辑表达式

如:strSQL = "SELECT * FROM 员工信息 WHERE 部门="一厂""

这种查询在之前的讲解中讲过,这里不再举例。

(2)IN/NOT IN ( 表达式1,表达式2,…. ) 注意上面的括号不可少,各表达式用逗号搁开。

"查询姓名在括号中列出名单范围内的人,如总数据如下:

我们要显示的是姓名为刘1和朱5的信息,SQL语句如下:

strSQL = "SELECT * FROM 员工信息 where 姓名 in ("刘1","朱5")" 代码如下:

Sub mynzdata_4() "总数据内的数据指定显示

Dim cnADO, rsADO As Object

Dim strPath, strSQL As String

Dim i As Integer

Set cnADO = CreateObject("ADODB.Connection")

Set rsADO = CreateObject("ADODB.RecordSet")

strPath = ThisWorkbook.Path & "mydata2.accdb"

cnADO.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath

strSQL = "SELECT * FROM 员工信息 where 姓名 in ("刘1","朱5")"

rsADO.Open strSQL, cnADO, 1, 3

Cells.ClearContents

For i = 0 To rsADO.Fields.Count - 1

Sheets("Sheet1").Cells(1, i + 1) = rsADO.Fields(i).Name

Next i

For i = 1 To rsADO.RecordCount

For j = 0 To rsADO.Fields.Count - 1

Sheets("Sheet1").Cells(i + 1, j + 1) = rsADO.Fields(j)

Next j

rsADO.MoveNext

Next i

rsADO.Close

cnADO.Close

Set rsADO = Nothing

Set cnADO = Nothing

End Sub

三 Select 查询表达式 From 数据区域 [Where 条件表达式] Order by 排序字段。同时可以使用Top限制返回行数,可以使用Top限制返回的行数。

1 下面语句返回前2条记录。

Sql = "Select top 2 * from 员工信息"

2 通过使用Order by可以对查询结果按一列或多列进行排序。

"首先按语文成绩降序排列,语文成绩相同的按数学成绩升序排列

Sql = "Select * from学生信息Order by 语文 desc,数学 asc"

备注:ASC是升序排列,在不指定排序方式的情况下是默认的,因此可以省略

如员工信息中我们要显示的是,按生日排序的前5人 SQL语句如下:

strSQL = "SELECT Top 5 * FROM 员工信息 Order by 出生日期 asc"

代码:

Sub mynzdata_5() "排序前5名显示

Dim cnADO, rsADO As Object

Dim strPath, strSQL As String

Dim i As Integer

Set cnADO = CreateObject("ADODB.Connection")

Set rsADO = CreateObject("ADODB.RecordSet")

strPath = ThisWorkbook.Path & "mydata2.accdb"

cnADO.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath

strSQL = "SELECT Top 5 * FROM 员工信息 Order by 出生日期 asc"

rsADO.Open strSQL, cnADO, 1, 3

Cells.ClearContents

For i = 0 To rsADO.Fields.Count - 1

Sheets("Sheet1").Cells(1, i + 1) = rsADO.Fields(i).Name

Next i

For i = 1 To rsADO.RecordCount

For j = 0 To rsADO.Fields.Count - 1

Sheets("Sheet1").Cells(i + 1, j + 1) = rsADO.Fields(j)

Next j

rsADO.MoveNext

Next i

rsADO.Close

cnADO.Close

Set rsADO = Nothing

Set cnADO = Nothing

End Sub

显示的结果:

今日内容回向:

1 本讲讲了几种常用的SQL查询,读者是否明白?

2 上述实例希望读者能自己亲自操作一下。

本文如果对你有帮助,请点赞收藏《结构化查询语言SQL在VBA中几种常见的查询表达方式》,同时在此感谢原作者。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
mysql基础之sql语句分类及实际中的用途

mysql基础之sql语句分类及实际中的用途

...ect * from student”这是sql语句,sql语句是什么呢?sql语句:结构化查询语言(Structured Query Language)简称SQL,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。说白了sql语句就是...

2023-10-07 #经典句子

SQL语言一

SQL语言一

...acle数据库的HR用户进行测试。一、SQL语言基础基本概念:结构化查询语言(Structured Query Language)简称 SQL,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展...

2023-12-14 #经典句子

简单聊聊数据库——浅聊一下sql语句中的语言分类

简单聊聊数据库——浅聊一下sql语句中的语言分类

...种语言的分类。SQL:全称为Structured Query Language,翻译为结构化查询语言,主要用作关系型数据库的查询语言,同样根据查询语句的不同,我们可以大体将sql语句分作4类。DCL:全称为Data Control Language,翻译为数据控制语言,主要...

2022-12-15 #经典句子

数据库常用sql语句

数据库常用sql语句

...率高、varchar动态长度的字符、long存储2G的文件大小。1、结构化查询语言是一种特殊目的的编程语言,是一种数据库查询和程序设计语言。SQL能够处理的数据类型包括以上十几种,这些数据都可以以表格的形式存储于数据库中,...

2022-11-27 #经典句子

SQL数据库及SQL语言是什么?

SQL数据库及SQL语言是什么?

...,而在数据库中,SQL语句处于一种关键性地位。SQL语句是结构化查询语言(Structure Query Language)的缩写,是关系模型的程序设计以及数据库查询语言,专门用于数据的存储、更新、查询以及对数据库系统的管理。简单说来,就像...

2023-05-08 #经典句子

使用SQL Server查询结果生成XML文件的方法

使用SQL Server查询结果生成XML文件的方法

...来实现。这个功能可以帮助用户将数据库中的数据以一种结构化的格式导出,用于数据交换和存储。通过SQL Server根据查询结果生成XML文件,用户可以更灵活地处理数据,并与其他系统进行集成和交互。SQL Server根据查询结果,生成...

2024-01-28 #大杂绘

图数据库能做些什么?查询语言说了算

图数据库能做些什么?查询语言说了算

...言间的开放标准正在加速建立。在关系数据库领域,SQL(结构化查询语言)多年以来一直是行业的主导标准。它定义了一种在表内搜索符合特定条件的数据行的核心方法。如果数据跨越多个表,SQL还提供一种表对齐方法,以便将所...

2018-02-03 #经典句子

AI语音二三事:你需要了解这些AI 语音对话技术

AI语音二三事:你需要了解这些AI 语音对话技术

...{稻香}Ai:稻香.mp33.如何处理意图—云端交互调用意图的结构化请求,向服务器请求处理后做出反馈响应。 通俗来讲该流程主要处理用户的请求,解决用户问题的答案。4.上下文意图的处理-对话管理在用户进行自然对话时,可能...

2023-11-11 #经典句子