VBA 的 SQL 语法介绍
1. 基本语法
1.1 UNION 操作符
SELECT a, b FROM [tb1] UNION SELECT a, b FROM [tb2];
UNION 拼接两个表的数据,会去重;UNION ALL 拼接两个表的数据,不去重。
1.2 填充字符串并指定表头
SELECT a, 'b' AS bTitle FROM [tab1];
这种情况下会填充一整列的字符串 b,并且表头是内部的名称,需要 'b' AS bTitle,才能有自己的标题。
2. 查询操作
2.1 使用 IN 和 NOT IN 查询
SELECT * FROM [tb1] WHERE 投资方向 IN ('债券','股票') ORDER BY 金额 DESC;
查询投资分析字段中包含 债券 或 股票的行,然后按金额降序排列。
2.2 查询不为空的数据
SELECT * FROM [tb1] WHERE 投资方向 IS NOT NULL;
2.3 使用连接符 &
SELECT * FROM [tb1] WHERE 性别 & 班级 = '女一班';
3. 模糊匹配
3.1 通配符 LIKE
SELECT * FROM [table] WHERE column LIKE 'A%';
查询以 A 开头的字符。
4. 分组计算
4.1 聚合函数和分组
SELECT 部门, AVG(年龄) AS 平均年龄 FROM [员工] GROUP BY 部门 HAVING AVG(年龄) > 35;
5. 记录的判断
5.1 判断是否有记录
If rs.EOF And rs.BOF Then
'指针既指向BOF开头,又指向EOF末尾,说明没有记录
End If
或者
If rs.RecordCount <= 0 Then
'表示没有记录
End If
6. 多表查询(Where 等值连接)
6.1 查询所有学生的姓名、性别、选修的课程名称及成绩
'从三个表里查询数据,通过学号与课程代码来匹配到对应的数据
sql = "SELECT 姓名, 性别, 课程名称, 成绩 FROM 学生, 课程, 成绩 WHERE 学生.学号 = 成绩.学号 AND 课程.课程代码 = 成绩.课程代码"
6.2 查询所有课程的平均成绩,结果包含课程名称、平均成绩 2 个字段
sql = "SELECT 课程名称, AVG(成绩) AS 平均成绩 FROM 课程, 成绩 WHERE 课程.课程代码 = 成绩.课程代码 GROUP BY 课程名称"
7. 连接查询
7.1 INNER JOIN 内连接
SELECT DISTINCT t1.编号, t1.姓名, t1.身份证号, t1.部门
FROM 员工 t1
INNER JOIN 员工 t2 ON t1.姓名 = t2.姓名
WHERE tl.编号 <> t2.编号
ORDER BY t1.姓名
7.2 左连接 LEFT JOIN
SELECT 姓名, 性别, 职称, 系号, 系名
FROM 导师
LEFT JOIN 院系 ON 导师.院系编号 = 院系.系号
7.3 右连接 RIGHT JOIN
SELECT 姓名, 性别, 职称, 系号, 系名
FROM 导师
RIGHT JOIN 院系 ON 导师.院系编号 = 院系.系号
8. SQL 语句的执行顺序
FROM --> WHERE --> GROUP --> HAVING --> SELECT
SQL 语句的执行顺序是先从表中筛选数据,再进行条件筛选,再进行分组,再进行分组条件筛选,最后选择需要的字段。
不知道VBA中如何执行sql的,可以看我往期关于SQL的文章。
发表评论