之前的文章讲到用ADO+SQL,可以用来来进行高效的数据查询,不需要复杂的VBA知识即可做到啊数据查询。本篇文章给大家简单讲讲常用的那些SQL语句,学会这些之后,再一起看看更多的ADO+SQL进行数据分析的案例。
SQL语句主要用来对数据库进行查询,修改等操作。SQL语大体分为查询,删除,修改几类。其中,查询语句使用最为频繁,也是我们可以在Excel高效使用的语句。
SQL查询语句关键字为SELECT。SELECT语句有5个主要的子句,FROM是唯一必须的子句。每个子句有很多选择项和参数等等。SELECT语句格式如下:
SELECT 字段列表
FROM 表名
[WHERE 查询条件]
[GROUP BY 分组]
[HAVING 分组查询条件]
[ORDER BY 排序]
一个通用的查询语句格式:
SELECT * FROM [sheet1$] WHERE 字段1='xx' OR 字段2>xx ORDER BY 字段1
字段列表
字段列表指定多个字段名字,即表头名字,各个字段之间用英文状态下的逗号隔开,*表示该表所有字段。当包含多个字段时,可以用 "表名.字段名" 来表示。
比如“SELECT id,姓名,职位,班次”,表示选择表中的id,姓名,职位,班次这4个列的字段。
也可以给字段设置别名,格式:字段名 AS 别名。比如前面的SQL语句,我们可以给字段去别名,"SELECT id AS 序号,姓名 AS 大名,职位 AS 岗位",等等。
FROM子句
FROM为必须的子句,指定要查询的表名,各个数据表之间用英文状态下的逗号隔开。但是,如果查询的是工作簿的数据表,那么必须用方括号[]将工作表括起来,并且在表名后加上美元符号$。
比如,“SELECT * FROM [员工表$]”,表示查询员工表里的所有字段。
如果为工作表的数据区域定义了一个名称,也可以直接把名称作为表名来查询,同样的也需要加上$符号,并且放在方括号里面。
如果要查询的是正规的关系型数据库,比如SQL SERVER, ACCESS等,则可以直接在FROM加上表名,不需要方括号和$。
WHERE查询子句
WHERE子句指定查询套件,可选。如果不指定,则默认返回表格所有行的数据。查询值如果是字符串,则需要放在单引号里面;日期需要用## 或者放在''里面。比如:
- WHERE 姓名='张三',查询的值需要放在一对单引号里面。-
- WHERE 年龄>20,查询值为数字,不需要放在单引号里面。
- WHERE 日期=#2023-12-21#
GROUP BY分组子句
GROUP BY用于分组,可选。分组通常用于数据聚合,比如求最大值,最小值,平均值等等。
HAVING 分组查询子句
HAVING子句,用于分组查询,通常和GROUP BY一起配合使用。
ORDER BY 排序子句
ORDER BY用于排序,升序(ASC)或者降序(DESC)。如果省略,则表示升序。比如:
- ORDER BY 城市 ASC,就表示按照城市名字升序排序。
- ORDER BY 城市, 人口 DESC,表示按照城市升序排列,同时按照人口降序排列。
多表查询
业务比较复杂的情况下,可能涉及到查询工作簿的多个表。多表查询有很多种方式。例如,使用WHERE子句设置多表之间的连接条件,利用JOIN...ON...连接 多个表,利用UNION或者UNION ALL连接多个SELECT语句等。