iamlaosng文
Excel中使用SQL的主要目的是连接或Excel工作表导入数据或者对这些数据进行统计汇总;要达到这个目的;需要好好学习SQL语句的使用..本文主要说明在Excel中如何使用SQL;至于SQL语句本身就不多作介绍了..
一、简单的查询
1、建立查询
数据选项卡—现有连接—浏览更多或者按快捷键Alt+D+D+D
选择要查询的Excel文件和文件中的的工作表;就可以将相应工作表的数据取过来..表现形式可以是表;也可以是数据透视表等..
2、SQL查询语句
如果是挑选部分列数据;就需要用SQL语句取所有数据也可以用SQL语句..
网站的作用
建立查询时;选择工作表后不要点击“确定”按钮;而是先点击“属性”按钮;弹出窗口中选择“定义”选项卡;在命令文本框中输入SQL查询语句原来的工作表名称;表示所有数据;可以认为是取所有数据的SQL的一种特殊写法:
Select字段列表from工作表名$
--其中字段列表就是需要选择的字段;数据源用工作表名称加“$“再用中括号括起来;例如:
selectprov_name;city_name;xs_mc;xs_codefromSheet1$
selectfromSheet1$  --取所有数据
偶然发现;字段名不能用no;估计是保留字;如需要;用中括号括起来;例如:ubuntu linux教程
selectno;prov_name;city_name;xs_mc;xs_codefromSheet1$
字段名中含有特殊字符的也要用中括号括起来;如/ 空格等
Excel查询没有伪表概念;对于表达式的计算直接用select既可;例如
Select23+45  --返回68
Selectdate  --返回当前日期
3、修改查询语句
方法:点击右键—弹出菜单—表格—编辑查询
通过修改SQL语句可以变更所取的数据;也可以将建立查询时的简单SQL语句改成复杂的SQL语句..
字段名更换:如果想换个字段名;用“as新字段名”既可;例如:
selectprov_nameas省;city_nameas城市;xs_mcas县市;xs_codeas编码fromSheet1$
非正常表格:数据区域含字段名不在第一行
需要在工作表名称后面指定数据范围;例如:
selectprov_name;city_name;xs_mc;xs_codefromSheet1$B2:G2000
或者;将数据块定义为一个名称;假设定义为mydata;SQL语句如下:
selectprov_name;city_name;xs_mc;xs_codefrommydata
注意:使用名称时没有$符号;也没有方括号了..
数据更新:数据源发生变化;需要更新数据;方法:点击右键—弹出菜单—刷新
意外:如果打开Excel文件后弹出不是选择工作表的窗口而是一个“数据连接属性”窗口;可以关闭这个窗口;然后将Excel应用极小化再极大化方式消除;或者在弹出选择文件的窗口时;退回上一级文件夹;删除那个Queries文件夹;就行了..
4、外部数据属性
修改SQL语句后;如显示格式不是预想的那样;需要去掉“外部数据属性”中“保留列属性”前面的勾选..方法:点击右键—弹出菜单—表格—外部数据属性;弹出窗口如下:
二、复杂的查询
1、多表联合
相同结构的多个表合并到一起;用union连接SQL语句;例如:
Selectfrom 财务部$unionallSelectfrom市场部$
Union是去重复的;即相同的记录保留一个类似distinct;Unionall则是直接相加两个结果;不去重复..
增加一个部门字段可以将查询结果中的区分开来;以便知道数据来自哪个表..Union的三个一致;即:字段的数量、类型和顺序..例如:
Select“财务部”as部门;from 财务部$unionallSelect“市场部”as部门;from市场部$
数据结构快速排序法多表联合查询
Selectfrom 部门$ bm;  员工$ ygwherebm.部门编码=yg.部门编码
跨工作簿查询
如果数据不仅来自不同的工作表;还来自不同的文件;一样可以用union联合;例如:
Select“分公司1”as公司;“财务部”as部门;fromF:\SQL之Excel应用\分公司1.xlsx.财务部$unionallmysql语句的执行顺序
Select“分公司1”as公司;“市场部”as部门;fromF:\SQL之Excel应用\分公司1.xlsx.市场部$unionall
Select“分公司2”as公司;“财务部”as部门;fromF:\SQL之Excel应用\分公司2.xlsx.财务部$unionall
Select“分公司2”as公司;“市场部”as部门;fromF:\SQL之Excel应用\分公司2.xlsx.市场部$
因为SQL中已经指定了文件名和表名;所以建立连接时连接谁并不重要;这种情况下;建立连接的时候就连接自己;然后再改写SQL语句..
2、子查询和多表连接
re evaluation所谓子查询就是将一个查询结果作为数据源放在主查询语句中;多表连接则是将两个有关联的表通过关键字段连接在一起查询;这都是SQL知识;不再赘述;需要注意的是;不同的数据库
系统SQL都有些微小的差别;Excel中的SQL也有其自己的一些特点;关于多表查询的写法;见本文附录..
3、常用运算符
有条件的查询
条件是where引导的;用and、or等连接;例如:
selectprov_name;city_name;xs_mc;xs_codefromSheet1$whereprov_name=’安徽’orprov_name=’江苏’
--虽然字符串可以用双引号;但建议用单引号;因为oracle、SQLserver都是用单引号..
常用运算符:in、notin、between…and…、isnull、isnotnull、&连字符、like、notlike;注意:null和任何字段运算的结果都是null..
通配符:%所有字符或无字符、_单个字符、区间;如1-9、a-f、1;3;5;例如:
在线编程和离线编程的优缺点

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。