您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 图形图像 > Excel2010 常用SQL语句解释
1Excel常用SQL语句解释SELECT查询图C-1展示了某公司的员工信息数据列表。图C-1公司员工信息数据列表含义:从指定的表中返回符合条件的指定字段的记录。语法:SELECT{谓词}字段AS别名FROM表{WHEREE分组前条件}{GROUPBY分组依据}{HAVING分组后条件}2{ORDERBY指定排序}SELECT查询各部分的说明如表格C-1所示。部分说明SELECT查询FROM从„„返回谓词可选,包含ALL、DISTINCT、TOP等谓词。如缺省,则默认为ALL,即返回所有记录字段包含要查询的记录的列标题,若要查询多个字段,则需要在字段之间使用逗号分隔,若要查询全部字段,可以使用“*”AS别名标志,使用AS可以对字段名称进行重命名表工作表或查询WHERE限制查询返回分组前的记录,使查询只返回符合分组前条件的记录GROUPBY分组依据,指明记录如何进行分组和合并HAVING限制查询返回分组后的记录,使查询只返回符合分组后的条件的记录ORDERBY对结果进行排序,其中ASC为升序,DESC为降序表格C-1SELECT查询语句各部分的说明SELECT查询的基本语句如果希望在如图C-1所示的“员工信息”数据列表中,查询所有字段的数据记录,可以使用以下SQL语句。SELECT*FROM[员工信息$]如果希望在如图C-1所示的“员工信息”数据列表中,查询每个员工所在的部门及其婚姻状况的数据记录,可以使用以下SQL语句。SELECT部门,姓名,婚姻状况FROM[员工信息$]WHERE子句如果希望在如图C-1所示的“员工信息”数据列表中,查询员工性别为男的数据记录,可以使用以下SQL语句。SELECT*FROM[员工信息$]WHERE性别='男'3BETWEEN…AND运算符用于确定指定字段的记录是否在指定值范围之内。如果希望在如图C-1所示的“员工信息”数据列表中,查询基本工资在1500到2000之间(含1500和2000)的数据记录,可以使用以下SQL语句。SELECT*FROM[员工信息$]WHERE基本工资BETWEEN1500AND2000NOT运算符表示取相反的条件。如果希望在如图C-1所示的“员工信息”数据列表中,查询基本工资不在1500到2000之间(即基本工资小于1500或大于2000)的所有记录,可以使用以下SQL语句。SELECT*FROM[员工信息$]WHERENOT基本工资BETWEEN1500AND2000AND、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语句。4SELECT*FROM[员工信息$]WHERE姓名IN('陈丰笑','孙娇雪','刘风权')使用NOTIN,可以返回字段记录在指定集合之外的记录。如果希望在如图C-1所示的“员工信息”数据列表中,查询除“陈丰笑”、“孙娇雪”和“刘风权”等3位员工外的数据记录,可以使用以下SQL语句。SELECT*FROM[员工信息$]WHERE姓名NOTIN('陈丰笑','孙娇雪','刘风权')LIKE运算符返回与指定模式匹配的记录,若需要返回与指定模式匹配相反的记录,请使用NOTLIKE,LIKE运算符支持使用通配符。LIKE使用的通配符如表格C-2所示。通配符说明%零个或多个字符_任意单个字符#任意单个数字(0-9)[字符列表]匹配字符列表中的任意单个字符[!字符列表]不在字符列表中的任意单个字符表格C-2通配符说明提示:常用的字符列表包括数字字符列表[0-9]、大写字母字符列表[A-Z]和小写字母字符列表[a-z]。如果希望在如图C-1所示的“员工信息”数据列表中,查询姓名以“陈”开头的数据记录,可以使用以下语句。SELECT*FROM[员工信息$]WHERE姓名LIKE'陈%'如果希望在如图C-1所示的“员工信息”数据列表中,查询姓名不以“陈”开头的数据记录,可以使用以下语句。SELECT*FROM[员工信息$]WHERE姓名LIKE'[!陈]%'也使用以下语句。SELECT*FROM[员工信息$]WHERE姓名NOTLIKE'陈%'如果希望在如图C-1所示的“员工信息”数据列表中,查询姓名以“翠”结尾且姓名长度为2的数据记录,可以使用以下语句。SELECT*FROM[员工信息$]WHERE姓名LIKE'_翠'5如果希望在如图C-1所示的“员工信息”数据列表中,查询姓名包含字母的数据记录,可以使用以下语句。SELECT*FROM[员工信息$]WHERE姓名LIKE'%[a-zA-Z]%'注意:在Excel2010保存的工作薄中,使用SQL语句返回的记录不区分大小写,但以兼容形式另存为Excel2010版本以下的工作簿时(如Excel97-2003版本),记录区分大小写。常量NULL表示未知值或结果未知。判断记录是否为空,可以用ISNULL或ISNOTNULL。如果希望在如图C-1所示的“员工信息”数据列表中,查询没有领取住房津贴的数据记录,可以使用以下语句。SELECT*FROM[员工信息$]WHERE住房津贴ISNULL如果希望在如图C-1所示的“员工信息”数据列表中,查询有领取住房津贴的数据记录,可以使用以下语句。SELECT*FROM[员工信息$]WHERE住房津贴ISNOTNULL已知员工的实际收入等于基本工资加上住房津贴,如果希望在如图C-1所示的“员工信息”数据列表中,统计每个部门的员工的实际收入,可以使用以下SQL语句。SELECT部门,姓名,基本工资+IIF(住房津贴ISNULL,0,住房津贴)AS实际收入FROM[员工信息$]提示:NULL表示未知值或结果未知,如何与NULL进行的运算,其结果也是未知的,返回NULL。所以,这里需要使用IIF函数,将住房津贴为NULL的值返回0,否则返回住房津贴,然后再与基本工资相加,从而得到实际收入。GROUPBY子句如果希望在如图C-1所示的“员工信息”数据列表中,统计每个部门的员工人数,可以使用以下SQL语句。SELECT部门,COUNT(姓名)AS员工人数FROM[员工信息$]GROUPBY部门HAVING子句如果希望在如图C-1所示的“员工信息”数据列表中,查询员工人数超过7人(含7人)的部门记录,可以使用以下SQL语句。6SELECT部门FROM[员工信息$]GROUPBY部门HAVINGCOUNT(姓名)=7提示:HAVING子句通常需要结合GROUPBY子句使用。聚合函数聚合函数的说明如表格C-3所示。部分说明SUM()求和COUNT()计数AVG()平均值MAX()最大值MIN()最小值FIRST()首次出现的记录LAST()最后一条记录表格C-3聚合函数提示:使用如表格C-3所示的聚合函数中,除FIRST和LAST函数外,其余函数均忽略空值(NULL)。如果希望在如图C-1所示的“员工信息”数据列表中,查询每个部门最高可领取的住房津贴的数据记录,可以使用以下SQL语句。SELECT部门,MAX(住房津贴)AS最高住房津贴FROM[员工信息$]GROUPBY部门DISTINCT谓词使用DISTINCT谓词,将忽略指定字段返回的重复记录,即重复的记录只保留其中一条。如果希望在如图C-1所示的“员工信息”数据列表中,查询部门的不重复记录,可以使用以下SQL语句。SELECTDISTINCT部门FROM[员工信息$]ORDERBY子句使用ORDERBY子句,可以使结果根据一个或多个字段的指定排序方式进行排序。如果指定的字段没有指定排序模式,则默认为按此字段升序排序。7提示:在数据透视表中,字段的排序结果最终取决于数据透视表的字段排序方式。TOP谓词使用TOP谓词,可以返回位于ORDERBY子句所指定范围内靠前或靠后的某些记录。如果不指定排序方式,则返回此TOP谓词所对应表或查询的靠前的指定记录。如果希望在如图C-1所示的“员工信息”数据列表中,查询前10条记录,可以使用以下SQL语句。SELECTTOP10*FROM[员工信息$]如果希望在如图C-1所示的“员工信息”数据列表中,查询基本工资在前10位的数据记录,可以使用以下SQL语句。SELECTTOP10*FROM[员工信息$]ORDERBY基本工资DESC结合使用PERCENT保留字可以返回位于ORDERBY子句所指定范围内靠前或靠后的一定百分比的记录。如果希望在如图C-1所示的“员工信息”数据列表中,查询基本工资前30%的数据记录,可以使用以下语句。SELECTTOP30PERCENT*FROM[员工信息$]ORDERBY基本工资DESC提示:如果使用ORDERBY子句,那么假如在指定范围内最后一条记录有多个相同的值,那么这些值对应的记录也会被返回。如果没有OREDRBY子句,那么在指定范围内最后一条记录即使有多个相同的值,也只会返回在指定范围内靠前的记录。联合查询图C-2展示了某连锁集团“三角头”、“江南”和“东山”三间分店的销售数据列表。8图C-2分店销售数据列表含义:合并多个查询的结果集,这些查询具有相同的字段数目且包含相同或可以兼容的数据类型。语法:SELECT字段FROM表1UNION{ALL}„„SELECT字段FROM表x联合查询的特点:使用联合查询,需要确保查询的字段数目相同,且包含相同或兼容的数据类型。在联合查询中,最终返回的记录的字段名称以第一个查询的字段名称为准,其余进行联合查询的查询,使用的字段别名将被忽略。UNION和UNIONALL的区别在于,UNION会将所有进行联合查询的表的记录进行汇总,并返回不重复记录(即重复记录只返回其中一条记录),同时对记录进行升序排序,而UNIONALL则只将所有进行联合查询的表的记录进行汇总,不管记录是否重复,也不对记录进行排序。提示:“数字”和“文本”在联合查询中,是可以兼容的数据类型如果希望查询如图C-2所示的“三角头”、“江南”和“东山”三间分店销售数据列表中,各分店所有产品不重复个数,可以使用以下SQL语句。SELECT'三角头'AS分店,产品FROM[三角头$]UNIONSELECT'江南',产品FROM[江南$]UNIONSELECT'东山',产品FROM[东山$]如果希望将如图C-2所示的“三角头”、“江南”和“东山”三间分店销售数据列表进行汇总,可以使用以下SQL语句。9SELECT'三角头'AS分店,*FROM[三角头$]UNIONALLSELECT'江南',*FROM[江南$]UNIONALLSELECT'东山',*FROM[东山$]多表查询图C-3展示了某班级“学生信息”、“科目”和“成绩表”三张数据列表。图C-3班级成绩数据列表含义:根据约束条件,返回查询指定字段记录所有可能的组合。语法:SELECT{表名称}.字段FROM表1,表2,„„表x{WHERE约束条件}多表查询的特点:在同一语句中,若需要查询的字段名称存在于多张表中,那么,此字段名称需要声明来源表,否则该字段可省略声明来源表。当查询涉及多张表关联时,需要注意使用约束条件,没有约束条件或约束条件设置不当,将可能
本文标题:Excel2010 常用SQL语句解释
链接地址:https://www.777doc.com/doc-6328842 .html