3.2.2 查询表中的所有列
现有一工资表,如图3.12所示。此表和前例中的表不同之处在于多了一个合并单元格的表标题。如要通过SQL语句导入此表的全部数据,但不包括合并单元格的表标题,应如何实现?
图3.12 工资表
首先,如要查询表中的全部列,只需在SELECT后面将全部列名列出即可,但是此种方法对于列名过多的表来说太过烦琐。在SQL中引入了通配符*,用来代替一个表中的所有列。因此,查询表中所有列的语句可以写成:
SELECT *
FROM [表名$]
其次,在导入此表数据时,数据实际只存在于区域[A2:F12]中。因此,在FROM子句后的引用表中需要加上数据区域,即[工资表$A2:F12]。具体步骤如下:
步骤1:在“工资表.xlsx”工作簿中增加一个新的工作表“导入所有列”,并选中A1单元格。
步骤2:点击“数据”菜单,在“获取和转换数据”组中选择“现有连接”按钮,在打开的“现有连接”窗口中点击“浏览更多…”按钮,在弹出的“选取数据源”窗口中选取“工资表.xlsx”所在的目录,并选择此文件,然后点击“打开”按钮。在弹出的“选择表格”窗口中选择“工资表$”后点击“确定”按钮。
步骤3:在弹出的“导入数据”窗口中点击“属性”按钮,在此窗口中选择“定义”选项卡。清空“命令文本”框,键入如下SQL语句后,点击“确定”按钮。
SELECT *
FROM [工资表$A2:F12]
这与以下的语句在功能上是等价的:
SELECT 工资号,姓名,基本工资,绩效工资,扣除,实发工资
FROM [工资表$A2:F12]
虽然两种SQL语句的写法在功能上是等价的,但第二种书写方式不仅烦琐,而且容易把列名写错,造成查询失败,而第一种方式则更加简洁且不易出错。
步骤4:点击“确定”后将会回到“导入数据”窗口,点击“确定”按钮后,查询后的数据将会导入到“导入所有列”表中,如图3.13所示。
图3.13 查询所有列结果
小结
通过SQL查询表中所有列时,既可以把列名全部列出,又可以使用通配符*来代替,语法如下:
SELECT *
FROM [表名$]
如果导入的数据是表的一部分,占用部分数据区域,则可把数据区域的位置信息放在“表名后”来指示,语法如下:
SELECT *
FROM [表名$数据区域]