学习SQL一步一步开始,跟着本文的脚印带你走向SQL方向。
本分先分别介绍Microsoft Query 方法书写SQL语句,和VBA方法书写SQL语句。(注:VBA语句中只需修改其中的SQL语句即可,其他只需要复制粘贴即可)。
下面先上图:
进入VBA界面
2.插入模块
3.双击模块
4.在代码区码
写入VBA代码
代码如下:
1. Sub Test4()
2. Dim Conn As Object, Rst As Object
3. Dim strConn As String, strSQL As String
4. Dim i As Integer, PathStr As String
5. Set Conn = CreateObject("ADODB.Connection")
6. Set Rst = CreateObject("ADODB.Recordset")
7. PathStr = ThisWorkbook.FullName '设置工作簿的完整路径和名称
8. Select Case Application.Version * 1 '设置连接字符串,根据版本创建连接
9. Case Is <= 11
10. strConn = "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties=excel 8.0;Data source=" & PathStr
11. Case Is >= 12
12. strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & PathStr & ";Extended Properties=""Excel 12.0;HDR=YES"";"""
13. End Select
14. '设置SQL查询语句
15. strSQL = "请写入SQL语句"
16. Conn.Open strConn '打开数据库链接
17. Set Rst = Conn.Execute(strSQL) '执行查询,并将结果输出到记录集对象
18. With Sheet3
19. .Cells.Clear
20. For i = 0 To Rst.Fields.Count - 1 '填写标题
21. .Cells(1, i + 1) = Rst.Fields(i).Name
22. Next i
23. .Range("A2").CopyFromRecordset Rst
24. .Cells.EntireColumn.AutoFit '自动调整列宽
25. .Cells.EntireColumn.AutoFit '自动调整列宽
26. End With
27. Rst.Close '关闭数据库连接
28. Conn.Close
29. Set Conn = Nothing
30. Set Rst = Nothing
31. End Sub
32.
复制代码
介绍Microsoft Query的方法
1.从数据---自其他来源--来自Microsoft Query
2.选择Excel类型
3.选择工作簿(文件)
4.选择工作表
5.选择需求数据的列
6.筛选条件,本例只接选下一步
7.排序方法,本教程也直接下一步
8.返回工作表或Microsoft Query编辑器。(本例选 Microsoft Query,以便以编写SQL语句)
9.编写SQL语句窗口。
通过Microsoft Query学习SQL 9.jpg (146.92 KB, 下载次数: 26)
通过以上二种方法,能知道SQL书写到什么地方。
接下来,可以开始学习SQL语句语法。
1.基于一张工作表的查询语法
格式: select[DISTINCT] [TOP<数值> [PERCENT] <列标题>[[as]]<别名列标题>]
from <表或查询1>[AS]<别名1>],<表或查询2>[AS]<别名2>],
[where<筛选条件>][order by<排序项>[asc ▏desc]]
说明: 1、<>表示必选项,"[]"表示可选项,"▏"表示多选一。
2、 DISTINCT:消除取重复的行
3、 TOP 数值:显示前几条记录
4、 TOP 数值 percent:显示前面分之多少条记录
5、 <列标题>[[as]]<别名列标题>:给标题列重新命一个新名称
6、 where<筛选条件>:条件语句
7、排序,如果要按两个或两个以上字段,那么字段与字段之间用豆号隔开,asc升序,为默认值,desc降序。
显示所有字段的记录(全部列的内容)
语句:
语句1:
- select * from [sheet1$]
复制代码
语句2:
- select 编号,姓名,性别,出生年月,职称,部门,基本工资,婚否,奖金 from [sheet1$]
复制代码
这二个语句具有同样的功能,出来的结果都是一样的。
语句1中的*号是代表全部列,语句 2中,是写上全部列字段的名称。
如果工作表没有列标题,用F1,F2,F3,F4.....这样代替
先看原表
使用SQL语句出来的结果:
Microsoft Query方法:
将结果返回工作表:
返回工作表后样式:
Microsoft Query方法返回工作表后修改SQL语句方法:
“数据”选项卡---属性---连接属性--定义---命令文本
补充说明vba启用宏方法:
1.调出开“发工具栏”
2.在自定义功能区,勾选“开发工具栏”
3.设置宏安全性
4.启用宏
5.进入VBA界面2
6.运行子过程,把光标放于代码中间任意行,按F5执行,或绿色小三角执行。
按F8是逐步执行,是学VBA中重要的调试技术。
本帖最后由 335081548 于 2013-10-9 20:52 编辑 使用SQL语句获取多列数据,及别名的使用 在Excel中所使用的SQL语句具体语法结构如下:
复制代码 在本例 中SELECT子句后列出查询的字段即可查询出结果,如输入以下的SQL语句:
复制代码 使用SQL语句后结果如下图: 使用别名 1.字段别名
复制代码 本例中SQL语句如下:
复制代码 2.工作表别名
复制代码 本例中SQL语句如下:
复制代码 所有字段列表 可能到这里就有人会问,你这不是多此一举吗? 2楼不是介绍了
复制代码 就行了吗?还整这么复杂干什么? 其实(原来)SQL的代码是应该这样写的,上面的是简写。或者说只有一个表的情况,以后介绍多表的情况会用到表的别名。所以就在此一次把别名介绍了。
复制代码 实际中SQL语句应该如下:
复制代码 这样的使用环境中,使用表名,就太大缩短SQL语句的字符和书写方便。 注意事项: 1.在SQL语句中SQL语句英文不区分大小写,但标点符号必须是英文半角状态下输入,字段名也必须跟原来的一样。 2.使用SQL语句的时候,必须避免列字段中使用下面的特殊字符: 空格、双引号(")、撇(')、数字标记(#)、百分号(%)、大于号(>)、小于号(<)、叹号(!)、句号(.)、方括号([或])、星号(*)、美元符号($)、分号(;)、脱字号(^)、圆括号((或))、加号(+)、反斜杠(\或/)。 如果在源数据表的列字段使用了这些特殊字符,那么在使用SQL语句列出各字段的数据时,就会发生错误。为了规范使用SQL语句,在对数据源字段命名时,尽量避免使用这些特殊字符。 |
本帖最后由 335081548 于 2013-10-10 21:52 编辑 SQL语句中的关键词DISTINCT的使用,功能是去重复值只保留一条记录。语法结构为:
复制代码 实例中使用语法
复制代码 数据原图: 执行SQL语句后的效果图: 按条件筛选 使用SQL关键词 WHERE查询中的条件指定要满足什么标准信息,去掉不满足条件的数据(删除用户不要的数据)。 WHERE语句中可以有多个条件,条件之间可以用操作符AND 或者OR进行连接。 WHERE语句的语法结构如下:
复制代码 运算符包含大于、小于、等于、不等于、大于或等于、小于或等于、IN、 BETWEEN、AND等 。应用实例进行说明: 提取消费金额等于100的数据。(是不是比函数公式和VBA简单,语句也容易懂。) 本例使用的SQL语句如下:
复制代码 ORDER BY 的语句使用对于ORDER BY 语句而言,默认值是升序排列,通常是不指定它。但升序的关键词为 ASC ,降序为 DESC 。 语法结构如下:
复制代码 下面用具体的实例进行说明 按成绩进行升序排序本例中SQL语句如下:
复制代码 执行后效果如图 按成绩进行降序排序 本例中SQL语句如下:
复制代码 执行后效果如图: 二列数据按降序排序:SQL语句如下:
复制代码 效果如图: TOP 在SQL语句中的作用 TOP的应用按顺序提取记录
复制代码 提取前面3条记录.改变3为想要提取的数字,就可以实现想得到的记录 本例中使用的SQL语句如下:
复制代码 结果如图: 按字段名排序提取前几名的语法 升序
复制代码 降序
复制代码 以下用实例进行说明 按成绩降序排列提取前三名: SQL语句如下:
复制代码 结果如图所示: 升序:
复制代码 结果如图: 补充说明: SQL的VBA语句如下:
复制代码 其中 [Sheet1$A1:C17]这个表示工作表名Sheet1的工作表A1:C17的这个单元格区域,这个上面介绍的区别就是突出结果在同一个工作表上。所以加上了指定的单元格区域为数据。可以根据自己的实际情况,来改变. 不在同一张表上显示结果,而且数据源规范,就可以直接用[工作表名$]。或者书写的时候写上列名不用星号("*") 本例也可以用如下的语句达到同样的效果:
复制代码 TOP 与 PERCENT 组合在SQL语句中的使用 功能:是按 百分比 提取 用实例进行说明 按成绩降序排列提取前30% SQL语句如下:
复制代码 结果如图所示: 注: 数据源16条数据,16*0.3=4.8 四舍五入等于 5 数据提取是整数所以结果是提取5条数据。 SQL语句中的一些简单计算函数: COUNT函数,统计函数 语法如下:
复制代码 本示例SQL语句如下:
复制代码 按姓名统计人数,结果如图: SUM函数,求和函数。SQL语句语法如下:
复制代码 求总分,本例 SQL语句如下:
复制代码 结果如图: AVG函数,求平均。SQL语句语法如下:
复制代码 本例中求平均分,SQL语句如下:
复制代码 结果如图: 现对上面的语句来个小变通,求成绩大于60的人数、总分、平均分 SQL语句如下:
复制代码 结果如图所示: MAX函数,求最大值。SQL语句语法如下:
复制代码 本例中SQL语句如下:
复制代码 结果如图所示: MIN,求最小值函数,SQL语句语法如下:
复制代码 本例中使用的SQL语句如下:
复制代码 结果如图所示: |