请选择 进入手机版 | 继续访问电脑版

Excel完美论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

快捷登录

 
版块
版块
班级
班级
班级
班级
其它
其它
查看: 18444|回复: 74

[原创] 从零开始学习SQL(图文教程)

  [复制链接]

570

积分

2

技术分

76

鲜花

超级版主

Rank: 8Rank: 8

财富币
19368
学费币
60
推广币
4608
学员红花
0
注册时间
2014-12-17

管理员SQL讲师 VBA封装讲师 VBA编程讲师

    购买在线课件和视频
    报班咨询联系电话
    Tel:186-6424-3619
    联系人:佛山小老鼠
    在线网络开设YY班级
    函数初级班
    函数中级班
    函数高级班
    VBA编程初级班
    VBA编程中级班
    VBA编程高级班
    透视表班
    290集视频
    525集excel视频大全
    189集免费excel视频
发表于 2015-3-15 10:00:21 | 显示全部楼层 |阅读模式
一键分享 一键分享
本帖最后由 雪山飞狐 于 2015-4-10 12:32 编辑

目录

NO.001:进入SQL的方法
            1.VBA方法
            2.Microsoft Query的方法
            3.OLEDB方法
NO.002:SQL查询语法简介
NO.003:运用SQL语句获取多列数据,及别名的运用
NO.004:DISTINCT(保存独一值)
NO.005:WHERE查询中的应用
NO.006:ORDER BY(排序语句的运用)
NO.007:TOP和TOP 与 PERCENT 组合在SQL语句中的运用
NO.008:SQL语句中的一些简单计算函数(Count \SUM\ max\ min\ avg)
NO.009:多条件求和
NO.010:日期数据在SQL表达式中的应用
NO.011:UNION ALL
NO.012:SQL替代Vlookup 精确查找(左衔接 "Left Outer JOIN" 用法)
NO.013:SQL替代Vlookup 精确查找(右衔接 "Right Outer JOIN" 用法)
NO.014:三表衔接Inner Join的应用
NO.015:如何查询二个日期间的数据Where .... AND...
NO.016:如何用SQL语句完成多表列不相等的数据兼并
NO.017:Like 操作符
NO.018:简单的子查询
NO.019:IN运算符
NO.020:对不标准的表格去反复值和有空白单元格的数据
NO.021:运用SQL查询二个日期范围之内的数据
NO.022:WHERE、GROUP BY 和 HAVING 子句的正确次第
NO.023:SQL 统计呈现反复的称号
NO.024:TRANSFORM
NO.025:SQL根据身份证号计算年龄
NO.026:应用MQ完成VBA单元格值改动时刷新数据功用(MQ双表衔接动态查询)
NO.027:二个工作簿的数据按条件兼并
NO.028:用ADO+SQL在Excel文件中,插入新的数据(INSERT INTO )
NO.029:用ADO+SQL更新Excel工作中内容(UPDATE用法)
NO.030:用ADO_SQL在Excel中批量插入数据
NO.031:用ADO翻开带密码的Excel
NO.032:有兼并单元格的Excel在SQL应用
NO.033:运用ADOX不翻开工作簿获取工作表名
NO.034:ADO在Excel插入数据的AddNew方法
NO.035:SQL多文件夹下多工作簿多工作表汇总
NO.036:SQL跨工作簿多表查询


学习SQL一步一步开端,跟着本文的脚印带你走向SQL方向。
本分先分别引见Microsoft Query 方法书写SQL语句,和VBA方法书写SQL语句。(注:VBA语句中只需修正其中的SQL语句即可,其他只需求复制粘贴即可)。
下面先上图:
进入VBA界面
SQL001.jpg
2.插入模块
SQL002.jpg
3.双击模块
SQL003.jpg
4.在代码区输入代码
SQL004.jpg
写入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.     End With
  26.     Rst.Close    '关闭数据库衔接
  27.     Conn.Close
  28.     Set Conn = Nothing
  29.     Set Rst = Nothing
  30. End Sub
复制代码
引见Microsoft Query的方法
1.从数据---自其他来源--来自Microsoft Query
SQL005.jpg
2.选择Excel类型
SQL006.jpg
3.选择工作簿(文件)
SQL007.jpg
4.选择工作表
SQL008.jpg
5.选择需求数据的列
SQL009.jpg
6.挑选条件,本例只接选下一步
SQL010.jpg
7.排序方法,本教程也直接下一步
SQL011.jpg
8.返回工作表或Microsoft Query编辑器。(本例选 Microsoft Query,以便以编写SQL语句)
SQL012.jpg
9.编写SQL语句窗口
SQL013.jpg

 

                                                  

评分

参与人数 4财富币 +10 鲜花 +8 收起 理由
小鸟飞在天上 + 2
黍离 + 10 + 2 支持原创
夢想家李慧芳 + 2 支持原创
晨风 + 2 支持原创

查看全部评分


手机扫码浏览
回复

使用道具 举报

2169

积分

0

技术分

6

鲜花

金牌会员

Rank: 6Rank: 6

财富币
19980
学费币
21
推广币
84
学员红花
0
注册时间
2014-12-18
    购买在线课件和视频
    报班咨询联系电话
    Tel:186-6424-3619
    联系人:佛山小老鼠
    在线网络开设YY班级
    函数初级班
    函数中级班
    函数高级班
    VBA编程初级班
    VBA编程中级班
    VBA编程高级班
    透视表班
    290集视频
    525集excel视频大全
    189集免费excel视频
发表于 2015-3-15 10:34:15 | 显示全部楼层
感谢雪山飞狐教师传技!学习了!
回复 支持 1 反对 0

使用道具 举报

570

积分

2

技术分

76

鲜花

超级版主

Rank: 8Rank: 8

财富币
19368
学费币
60
推广币
4608
学员红花
0
注册时间
2014-12-17

管理员SQL讲师 VBA封装讲师 VBA编程讲师

    购买在线课件和视频
    报班咨询联系电话
    Tel:186-6424-3619
    联系人:佛山小老鼠
    在线网络开设YY班级
    函数初级班
    函数中级班
    函数高级班
    VBA编程初级班
    VBA编程中级班
    VBA编程高级班
    透视表班
    290集视频
    525集excel视频大全
    189集免费excel视频
 楼主| 发表于 2015-3-15 10:34:09 | 显示全部楼层
按条件挑选 运用SQL关键词 WHERE查询中的条件指定要满足什么标准信息,去掉不满足条件的数据(删除用户不要的数据)。
WHERE语句中可以有多个条件,条件之间可以用操作符AND 或者OR停止衔接。
WHERE语句的语法构造如下:
  1. SELECT 列字段称号 FROM [表称号$] WHERE 列字段名 运算符 值
复制代码
运算符包含大于、小于、等于、不等于、大于或等于、小于或等于、IN、 BETWEEN、AND等 。应用实例停止说明:
提取消费金额等于100的数据。(是不是比函数公式和VBA简单,语句也容易懂。)
本例运用的SQL语句如下:
  1. SELECT * FROM [Sheet1$] where 消费金额=100
复制代码
SQL033.png



回复 支持 1 反对 0

使用道具 举报

2169

积分

0

技术分

6

鲜花

金牌会员

Rank: 6Rank: 6

财富币
19980
学费币
21
推广币
84
学员红花
0
注册时间
2014-12-18
    购买在线课件和视频
    报班咨询联系电话
    Tel:186-6424-3619
    联系人:佛山小老鼠
    在线网络开设YY班级
    函数初级班
    函数中级班
    函数高级班
    VBA编程初级班
    VBA编程中级班
    VBA编程高级班
    透视表班
    290集视频
    525集excel视频大全
    189集免费excel视频
发表于 2015-3-15 10:31:39 | 显示全部楼层
感谢雪山飞狐教师传技!学习了!
回复 支持 1 反对 0

使用道具 举报

570

积分

2

技术分

76

鲜花

超级版主

Rank: 8Rank: 8

财富币
19368
学费币
60
推广币
4608
学员红花
0
注册时间
2014-12-17

管理员SQL讲师 VBA封装讲师 VBA编程讲师

    购买在线课件和视频
    报班咨询联系电话
    Tel:186-6424-3619
    联系人:佛山小老鼠
    在线网络开设YY班级
    函数初级班
    函数中级班
    函数高级班
    VBA编程初级班
    VBA编程中级班
    VBA编程高级班
    透视表班
    290集视频
    525集excel视频大全
    189集免费excel视频
 楼主| 发表于 2015-3-15 10:00:22 | 显示全部楼层
2003版 OLEDB方法
SQL014.png
SQL015.png
2010版及2013 OLEDB方法
SQL 现有衔接2010-2013操作方法1.jpg
SQL 现有衔接2010-2013操作方法2.jpg
SQL 现有衔接2010-2013操作方法3.jpg
修正SQL语句的方法
SQL 现有衔接2010-2013操作方法4.jpg
SQL 现有衔接2010-2013操作方法5.jpg
回复 支持 反对

使用道具 举报

570

积分

2

技术分

76

鲜花

超级版主

Rank: 8Rank: 8

财富币
19368
学费币
60
推广币
4608
学员红花
0
注册时间
2014-12-17

管理员SQL讲师 VBA封装讲师 VBA编程讲师

    购买在线课件和视频
    报班咨询联系电话
    Tel:186-6424-3619
    联系人:佛山小老鼠
    在线网络开设YY班级
    函数初级班
    函数中级班
    函数高级班
    VBA编程初级班
    VBA编程中级班
    VBA编程高级班
    透视表班
    290集视频
    525集excel视频大全
    189集免费excel视频
 楼主| 发表于 2015-3-15 10:14:59 | 显示全部楼层
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:
  1. select * from [sheet1$]
复制代码
语句2:
  1. select 编号,姓名,性别,出生年月,职称,部门,根本工资,婚否,奖金 from [sheet1$]
复制代码
这二个语句具有同样的功用,出来的结果都是一样的。
语句1中的*号是代表全部列,语句 2中,是写上全部列字段的称号。
假设工作表没有列标题,用F1,F2,F3,F4.....这样替代
先看原表
SQL016.jpg
运用SQL语句出来的结果:
SQL017.jpg
Microsoft Query方法:
SQL018.jpg
将结果返回工作表:
SQL019.jpg
返回工作表后款式:
SQL020.jpg
Microsoft Query方法返回工作表后修正SQL语句方法:
“数据”选项卡---属性---衔接属性--定义---命令文本
SQL021.jpg
补充说明vba启用宏方法:
1.调出开“发工具栏”
SQL022.jpg
2.在自定义功用区,勾选“开发工具栏”
SQL023.jpg
3.设置宏平安性
SQL024.jpg
SQL025.jpg
4.启用宏
SQL026.jpg
5.进入VBA界面2
SQL027.jpg
6.运转子过程,把光标放于代码中间恣意行,按F5执行,或绿色小三角执行。
按F8是逐渐执行,是学VBA中重要的调试技术。

SQL028.jpg


SQL工作簿.rar

10.18 KB, 下载次数: 300

回复 支持 反对

使用道具 举报

356

积分

0

技术分

29

鲜花

正式学员(完美教育)

财富币
4665
学费币
9
推广币
151
学员红花
68
注册时间
2014-12-17

正式学员

    购买在线课件和视频
    报班咨询联系电话
    Tel:186-6424-3619
    联系人:佛山小老鼠
    在线网络开设YY班级
    函数初级班
    函数中级班
    函数高级班
    VBA编程初级班
    VBA编程中级班
    VBA编程高级班
    透视表班
    290集视频
    525集excel视频大全
    189集免费excel视频
发表于 2015-3-15 10:21:51 | 显示全部楼层
回复 支持 反对

使用道具 举报

570

积分

2

技术分

76

鲜花

超级版主

Rank: 8Rank: 8

财富币
19368
学费币
60
推广币
4608
学员红花
0
注册时间
2014-12-17

管理员SQL讲师 VBA封装讲师 VBA编程讲师

    购买在线课件和视频
    报班咨询联系电话
    Tel:186-6424-3619
    联系人:佛山小老鼠
    在线网络开设YY班级
    函数初级班
    函数中级班
    函数高级班
    VBA编程初级班
    VBA编程中级班
    VBA编程高级班
    透视表班
    290集视频
    525集excel视频大全
    189集免费excel视频
 楼主| 发表于 2015-3-15 10:24:04 | 显示全部楼层
运用SQL语句获取多列数据,及别名的运用
在Excel中所运用的SQL语句详细语法构造如下:
  1. SELECT 列字段名1,列字段名2,列字段名3 FROM [工作表称号$]
复制代码
在本例 中SELECT子句后列出查询的字段即可查询出结果,如输入以下的SQL语句:
  1. SELECT 姓名,  性别,  职称,部门 FROM [Sheet1$]
复制代码
SQL029.png
运用SQL语句后结果如下图:
SQL030.png
运用别名
1.字段别名
  1. SELECT 字段名1 AS 重命名字段1,字段名2 AS 重命名字段2 FROM [Sheet1$]
复制代码
本例中SQL语句如下:
  1. SELECT 姓名 AS Name FROM [Sheet1$]
复制代码
2.工作表别名
  1. SELECT 工作表别名.* FROM [工作表名$] 工作表别名
复制代码
本例中SQL语句如下:
  1. SELECT A.*  FROM [Sheet1$] A
复制代码
一切字段列表
可能到这里就有人会问,你这不是多此一举吗?
前面不是引见了
  1. SELECT * FROM [Sheet1$]
复制代码
就行了吗?还整这么复杂干什么?
其实(原来)SQL的代码是应该这样写的,上面的是简写。或者说只需一个表的情况,以后引见多表的情况会用到表的别名。所以就在此一次把别名引见了。
  1. SELECT [工作表名].字段名 FROM [工作表名]
复制代码
理论中SQL语句应该如下:
  1. SELCT [Sheet1$].*  FROM [Sheet1$]
复制代码
这样的运用环境中,运用表名,就太大缩短SQL语句的字符和书写便当。

留意事项:
1.在SQL语句中SQL语句英文不区分大小写,但标点符号必需是英文半角状态下输入,字段名也必需跟原来的一样。
2.运用SQL语句的时分,必需防止列字段中运用下面的特殊字符:
空格、双引号(")、撇(')、数字标志(#)、百分号(%)、大于号(>)、小于号(<)、叹号(!)、句号(.)、方括号([或])、星号(*)、美圆符号($)、分号(;)、脱字号(^)、圆括号((或))、加号(+)、反斜杠(\或/)。
假设在源数据表的列字段运用了这些特殊字符,那么在运用SQL语句列出各字段的数据时,就会发作错误。为了标准运用SQL语句,在对数据源字段命名时,尽量防止运用这些特殊字符。

回复 支持 反对

使用道具 举报

2169

积分

0

技术分

6

鲜花

金牌会员

Rank: 6Rank: 6

财富币
19980
学费币
21
推广币
84
学员红花
0
注册时间
2014-12-18
    购买在线课件和视频
    报班咨询联系电话
    Tel:186-6424-3619
    联系人:佛山小老鼠
    在线网络开设YY班级
    函数初级班
    函数中级班
    函数高级班
    VBA编程初级班
    VBA编程中级班
    VBA编程高级班
    透视表班
    290集视频
    525集excel视频大全
    189集免费excel视频
发表于 2015-3-15 10:31:30 | 显示全部楼层
回复 支持 反对

使用道具 举报

570

积分

2

技术分

76

鲜花

超级版主

Rank: 8Rank: 8

财富币
19368
学费币
60
推广币
4608
学员红花
0
注册时间
2014-12-17

管理员SQL讲师 VBA封装讲师 VBA编程讲师

    购买在线课件和视频
    报班咨询联系电话
    Tel:186-6424-3619
    联系人:佛山小老鼠
    在线网络开设YY班级
    函数初级班
    函数中级班
    函数高级班
    VBA编程初级班
    VBA编程中级班
    VBA编程高级班
    透视表班
    290集视频
    525集excel视频大全
    189集免费excel视频
 楼主| 发表于 2015-3-15 10:31:31 | 显示全部楼层
SQL语句中的关键词DISTINCT的运用,功用是去反复值只保存一条记载。语法构造为:
  1. SELECT DISTINCT 要去反复值的字段1,要去反复值的字段2 FROM [工作表名$]
复制代码
实例中运用语法
  1. Select Distinct 用户姓名,用户卡号 From [sheet1$]
复制代码
数据原图:

SQL031.png
执行SQL语句后的效果图:
SQL032.png



SQL去除重复值.rar

14.49 KB, 下载次数: 270

点评

飞狐老师i没配视频呀  发表于 2015-3-15 14:35
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 快速回帖:

最近新开的班级:2018-7-28开vba初级班,周二、周四、周六晚上8点到10点上课      立即注册  登录 

手机微信——扫一扫 关注完美论坛公众号天天收到Excel分享

QQ|微信绑定|Archiver|手机版|Excel完美论坛 ( 粤ICP备14102225号  

GMT+8, 2018-9-24 16:18 , Processed in 0.281686 second(s), 74 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表