Excel常用SQL语句解释
SELECT查询
图C- 1展示了某公司的员工信息数据列表。
图C- 1 公司员工信息数据列表
含义:从指定的表中返回符合条件的指定字段的记录。
语法:
SELECT {谓词} 字段AS 别名 FROM 表
{WHEREE 分组前条件}
{GROUP BY 分组依据}
{HAVING 分组后条件}
{ORDER BY 指定排序}
SELECT查询各部分的说明如表格C- 1所示。
SELECT查询的基本语句
如果希望在如图C- 1所示的“员工信息”数据列表中,查询所有字段的数据记录,可以使用以下SQL语句。
SELECT * FROM [员工信息$]
如果希望在如图C- 1所示的“员工信息”数据列表中,查询每个员工所在的部门及其婚姻状况的数据记录,可以使用以下SQL语句。
SELECT 部门,姓名,婚姻状况 FROM [员工信息$]
WHERE子句
sql约束条件大于0如果希望在如图C- 1所示的“员工信息”数据列表中,查询员工性别为男的数据记录,可以使用以下SQL语句。
SELECT * FROM [员工信息$] WHERE 性别='男'
BETWEEN…AND运算符
用于确定指定字段的记录是否在指定值范围之内。
如果希望在如图C- 1所示的“员工信息”数据列表中,查询基本工资在1500到2000之间(含1500和2000)的数据记录,可以使用以下SQL语句。
SELECT * FROM [员工信息$] WHERE 基本工资BETWEEN 1500 AND 2000
NOT运算符
表示取相反的条件。
如果希望在如图C- 1所示的“员工信息”数据列表中,查询基本工资不在1500到2000之间(即基本工资小于1500或大于2000)的所有记录,可以使用以下SQL语句。
SELECT * FROM [员工信息$] WHERE NOT 基本工资BETWEEN 1500 AND 2000
AND、OR运算符
当查询条件在两个或两个以上,需要使用AND或OR等运算符将不同的条件连接,其中,使用AND运算符表示连接的条件,只有同时成立才返回记录,使用OR运算符表示连接的条件中,只要有一个条件成立,即可返回记录。需要注意的是,AND运算符执行次序比OR运算符优先,如果用户需要更改运算符的运算次序,请用小括号将需要优先执行的条件括起来。
如果希望在如图C- 1所示的“员工信息”数据列表中,查询“财务室”部门员工的基本工资高于2000的数据记录,可以使用以下语句。
SELECT * FROM [员工信息$] WHERE 部门='财务室' AND 基本工资>2000
如果希望在如图C- 1所示的“员工信息”数据列表中,查询“财务室”或“业务部”两个部门的数据记录,可以使用以下语句。
SELECT * FROM [员工信息$] WHERE 部门='财务室' OR 部门='业务部'
IN运算符
确定字段的记录是否在指定的集合之中。
如果希望在如图C- 1所示的“员工信息”数据列表中,查询“陈丰笑”、“孙娇雪”和“刘风权”等3位员工的数据记录,可以使用以下SQL语句。
SELECT * FROM [员工信息$] WHERE 姓名IN ('陈丰笑','孙娇雪','刘风权')
使用NOT IN,可以返回字段记录在指定集合之外的记录。
如果希望在如图C- 1所示的“员工信息”数据列表中,查询除“陈丰笑”、“孙娇雪”和“刘风权”等3位员工外的数据记录,可以使用以下SQL语句。
SELECT * FROM [员工信息$] WHERE 姓名NOT IN ('陈丰笑','孙娇雪','刘风权') LIKE运算符
返回与指定模式匹配的记录,若需要返回与指定模式匹配相反的记录,请使用NOT LIKE,LIKE 运算符支持使用通配符。
LIKE使用的通配符如表格C- 2所示。
表格C- 2 通配符说明
提示:常用的字符列表包括数字字符列表[0-9]、大写字母字符列表[A-Z]和小写字母字符列表[a-z]。
如果希望在如图C- 1所示的“员工信息”数据列表中,查询姓名以“陈”开头的数据记录,可以使用以下语句。
SELECT * FROM [员工信息$] WHERE 姓名LIKE '陈%'
如果希望在如图C- 1所示的“员工信息”数据列表中,查询姓名不以“陈”开头的数据记录,可以使用以下语句。
SELECT * FROM [员工信息$] WHERE 姓名LIKE '[!陈]%'
也使用以下语句。
SELECT * FROM [员工信息$] WHERE 姓名NOT LIKE '陈%'
如果希望在如图C- 1所示的“员工信息”数据列表中,查询姓名以“翠”结尾且姓名长度为2的数据记录,可以使用以下语句。
SELECT * FROM [员工信息$] WHERE 姓名LIKE '_翠'
如果希望在如图C- 1所示的“员工信息”数据列表中,查询姓名包含字母的数据记录,可以使用以下语句。
SELECT * FROM [员工信息$] WHERE 姓名LIKE '%[a-zA-Z]%'
注意:在Excel 2010保存的工作薄中,使用SQL语句返回的记录不区分大小写,但以兼容形式另存为Excel 2010版本以下的工作簿时(如Excel 97-2003版本),记录区分大小写。
常量NULL
表示未知值或结果未知。判断记录是否为空,可以用ISNULL或IS NOT NULL。
如果希望在如图C- 1所示的“员工信息”数据列表中,查询没有领取住房津贴的数据记录,可以使用以下语句。
SELECT * FROM [员工信息$] WHERE 住房津贴IS NULL
如果希望在如图C- 1所示的“员工信息”数据列表中,查询有领取住房津贴的数据记录,可以使用以下语句。
SELECT * FROM [员工信息$] WHERE 住房津贴IS NOT NULL
已知员工的实际收入等于基本工资加上住房津贴,如果希望在如图C- 1所示的“员工信息”数据列表中,统计每个部门的员工的实际收入,可以使用以下SQL语句。
SELECT 部门,姓名,基本工资+IIF(住房津贴IS NULL,0,住房津贴) AS 实际收入 FROM [员工信息$] 提示:NULL表示未知值或结果未知,如何与NULL进行的运算,其结果也是未知的,返回NULL。所以,这里需要使用IIF函数,将住房津贴为NULL的值返回0,否则返回住房津贴,然后再与基本工资相加,从而得到实际收入。
GROUP BY子句
如果希望在如图C- 1所示的“员工信息”数据列表中,统计每个部门的员工人数,可以使用以下SQL语句。
SELECT 部门,COUNT(姓名) AS 员工人数FROM [员工信息$] GROUP BY 部门
HAVING子句
如果希望在如图C- 1所示的“员工信息”数据列表中,查询员工人数超过7人(含7人)的部门记录,可以使用以下SQL语句。