
3.2 查询表中的列
3.2.1 查询一列或多列数据
查询一个表中的一列或者多列数据时,要使用SELECT子句来指定这些列。选择列时一定要有指向的表,指定表要用FROM子句,因此一个简单的查询需要SELECT子句和FROM子句搭配使用。在有些SQL语句的使用环境中,SELECT子句是可以单独使用的,一般用来直接进行数值运算或用函数返回一个值,本书不做赘述。
(1)查询一列数据
现有如图3.1所示“生鲜销售表.xlsx”,记录了某超市在一个月内生鲜产品的买进价格、买进数量、卖出价格和卖出数量,并使用公式计算出了当月的销售额和毛利润。如要查询产品的销售额,即只查询表中的“销售额”一列,应如何用SQL语句来实现?步骤如下。

图3.1 生鲜销售表
步骤1:在“生鲜销售表.xlsx”工作簿中新建一个表,命名为“查询一列”,如图3.2所示。选中表中的A1单元格,将要查询到的数据插入到表中的这个位置。

图3.2 新建“查询一列”工作表
步骤2:点击“数据”菜单,在“获取和转换数据”组中选择“现有连接”按钮,在打开的“现有连接”窗口中点击“浏览更多…”按钮。此时会弹出“选取数据源”窗口,在“选取数据源”窗口中找到“生鲜销售表.xlsx”所在的目录,并选择此文件,然后点击“打开”按钮。因为在“生鲜销售表.xlsx”工作簿中存在两个工作表,因此在弹出的“选择表格”窗口中会出现“生鲜销售表$”和“查询一列$”两个选项,如图3.3所示。此处选择“生鲜销售表$”,然后点击“确定”按钮。

图3.3 “选择表格”窗口
步骤3:在弹出的“导入数据”窗口中点击“属性”按钮,其他选项保持默认选项。如图3.4所示。

图3.4 “导入数据”窗口
步骤4:点选“属性”按钮之后会弹出“连接属性”窗口,在此窗口中选择“定义”选项卡,如图3.5所示。清空“命令文本”框,键入如下SQL语句后点击“确定”按钮。

图3.5 “连接属性”窗口
SELECT 销售额
FROM [生鲜销售表$]
步骤5:点击“确定”后将会回到图3.4所示的窗口,再次点击“确定”按钮,此时查询后的数据将会导入到“查询一列”表中,如图3.6所示。

图3.6 查询结果
通过以上步骤可以查询出表中的一列数据。在“连接属性”窗口,查询一列数据的语法格式为:
SELECT 列名
FROM [表名$]
(2)查询多列数据
对于如图3.1所示的“生鲜销售表.xlsx”,除了可以查询其中的任意一列,还可以查询表中的多列数据,例如要查询“产品编号”“产品名称”和“销售额”三列,可使用以下步骤实现。
步骤1:在“生鲜销售表.xlsx”工作簿中增加一个新的工作表“查询多列”,如图3.7所示,并选中A1单元格。

图3.7 新建“查询多列”工作表
步骤2:重复上例的步骤,点击“数据”菜单,在“获取和转换数据”组中选择“现有连接”按钮,在打开的“现有连接”窗口中点击“浏览更多…”按钮,在弹出的“选取数据源”窗口中选择“生鲜销售表.xlsx”所在的目录,并选择此文件,然后点击“打开”按钮。在弹出的“选择表格”窗口中选择“生鲜销售表$”后点击“确定”按钮,如图3.8所示。

图3.8 “选择表格”窗口
步骤3:在弹出的“导入数据”窗口中点击“属性”按钮,在此窗口中选择“定义”选项卡,如图3.9所示。

图3.9 “连接属性”窗口
步骤4:清空“命令文本”框,键入如下SQL语句后点击“确定”按钮。
SELECT 产品编号,产品名称,销售额
FROM [生鲜销售表$]
步骤5:点击“确定”后将会回到“导入数据”窗口,点击“确定”按钮后,查询后的数据将会导入到“查询多列”表中。如图3.10所示。

图3.10 查询结果
通过以上步骤,可以实现对表中多列数据的查询。在“连接属性”窗口,查询多列数据的语法格式为:
SELECT 列名1,列名2,列名3,……
FROM [表名$]
需要注意的是,在查询多列时,各列之间要用逗号隔开,逗号必须要使用半角逗号,即要在英文状态下输入。
(3)查询列名中含有特殊字符的列
按照SQL的语法规则,列名中应尽量不要使用特殊字符,但是如果列名中已经存在特殊字符,对于这样的列名,需要做特殊处理。仍以图3.1的“生鲜销售表.xlsx”为例,表中有一列为“毛利润/月”,含有特殊字符斜杠(/)。那么,查询这样的列时应如何书写SQL语句呢?
步骤1:在“生鲜销售表.xlsx”工作簿中增加一个新的工作表“特殊列名”,如图3.11所示,并选中A1单元格。
步骤2:点击“数据”菜单,在“获取和转换数据”组中选择“现有连接”按钮,在打开的“现有连接”窗口中点击“浏览更多…”按钮,在弹出的“选取数据源”窗口中选取“生鲜销售表.xlsx”所在的目录,并选择此文件,然后点击“打开”按钮。在弹出的“选择表格”窗口中选择“生鲜销售表$”后点击“确定”按钮,在弹出的“导入数据”窗口中点击“属性”按钮,在弹出的“连接属性”窗口中选择“定义”选项卡,清空“命令文本”框并输入如下SQL语句:
SELECT 产品编号,产品名称,销售额,[毛利润/月]
FROM [生鲜销售表$]
步骤3:在“连接属性”窗口中点击“确定”后返回到“导入数据”窗口,点击“确定”按钮后,查询后的数据将会导入到“特殊列名”表中。如图3.11所示。

图3.11 查询结果
小结
当查询含有特殊字符的列时,列名要用“[]”或者“`”(重音符号)括起来,其语法格式为:
SELECT [列名1],[列名2],[列名3],……
FROM [表名$]
或者
SELECT `列名1`,`列名2`,`列名3`,……
FROM [表名$]
因此上例中的SQL语句也可以改写成:
SELECT 产品编号,产品名称,销售额,`毛利润/月`
FROM [生鲜销售表$]