使用 JMP > 导入数据 > 导入数据库中的数据 > 结构化查询语言 (SQL):参考
发布日期: 09/15/2026

结构化查询语言 (SQL):参考

以下各部分是关于 SQL 的简介,可让您深入了解查询的强大功能,但并不是完整的 SQL 参考。

使用 SELECT 语句

JMP 中最重要的 SQL 语句是 SELECT 语句,该语句指示数据库从数据源中获取哪些行。当您完成编写 SQL 语句以查询数据库中针对 Solubility.jmp 样本数据表的过程之后,实际就是向数据源发送了以下 SQL 语句:

SELECT * FROM "Solubility"

* 运算符是“所有列”的简写形式。这样,该语句即向数据库发送了一个请求,请求从指定的数据表中返回所有列。

若不想返回所有行,您可以用数据表中的特定列名取代 *。在 Solubility 数据表示例中,您可以通过提交以下语句仅选择 ETHER、OCTANOL 和 CHLOROFORM 这三列:

SELECT ETHER, OCTANOL, CHLOROFORM FROM "Solubility"

注意:JMP 不要求使用分号结束 SQL 语句。

JMP 提供一种图形化的方式来构造简单的 SELECT 语句,这样就不必再键入实际的 SQL。要从数据源中选择特定列,请在列列表中突出显示这些列。

突出显示若干行

• 按 Shift 键再点击可选择一定范围的列名。

• 按 Ctrl 键再点击 (Windows) 或按 Command 键再点击 (Apple macOS) 可选择单个列名。

请注意,SQL 语句将随着您的选择相应更改。

有时,您希望从数据源中仅获取唯一记录。也就是说,您希望消除重复记录。要启用该功能,请使用 DISTINCT 关键字。

SELECT DISTINCT ETHER, OCTANOL, CHLOROFORM FROM "Solubility"

对结果排序

您可以按数据库中的一个或多个字段对结果排序。使用 ORDER BY 命令指定要排序的变量。

SELECT * FROM "Solubility" ORDER BY LABELS

上面的 SQL 语句可选择所有字段,并按 LABELS 变量对生成的数据表排序。若要指定更多变量作为排序依据,请将其添加到逗号分隔列表中。

SELECT * FROM "Solubility" ORDER BY LABELS, ETHER, OCTANOL

使用 WHERE 语句

使用 WHERE 语句,您可以基于条件获取数据表中的特定行。例如,您可能想要选择列 ETHER 的值大于 1 的所有行。

SELECT * FROM "Solubility" WHERE ETHER > 1

WHERE 语句放置在 FROM 语句之后,可使用以下任意逻辑运算符。

表 3.5 WHERE 运算符

运算符

含义

=

等于

!= 或 < >

不等于

>

大于

<

小于

>=

大于等于

<=

小于等于

NOT

逻辑 NOT

AND

逻辑 AND

OR

逻辑 OR

对条件求值时,先对整个语句处理 NOT 语句,然后再依次处理 AND 语句和 OR 语句。因此,以下语句:

SELECT * FROM "Solubility" WHERE ETHER > -2 OR OCTANOL < 1 AND CHLOROFORM > 0

等效于以下语句:

SELECT * FROM "Solubility" WHERE ETHER > -2 OR (OCTANOL < 1 AND CHLOROFORM > 0)

使用 IN 语句和 BETWEEN 语句

要指定获取一定范围内的值,请随同 WHERE 语句使用 IN 和 BETWEEN 语句。IN 语句指定值列表,BETWEEN 支持您指定一定范围内的值。例如,以下 IN 语句代码获取 LABELS 列的值为 Methanol、Ethanol 或 Propanol 的所有行:

SELECT * FROM "Solubility" WHERE LABELS IN (’Methanol’, ’Ethanol’, ’Propanol’) 

以下 BETWEEN 语句示例获取 ETHER 值介于 0 和 2 之间的所有行:

SELECT * FROM "Solubility" WHERE ETHER BETWEEN 0 AND 2

使用 LIKE 语句

使用 LIKE 语句,您可以选择与给定字符串相似的值。用百分比 (%) 符号来表示可包含任何值的字符串。例如,您可能想要从 Solubility 数据中选择所有乙醇类的化学品,即:以 –ol 结尾的化学品。下面的 SQL 语句可完成该任务:

SELECT * FROM "Solubility" WHERE LABELS LIKE ‘%OL’

您可以将 % 运算符放置于 LIKE 语句中的任何位置。下面的示例提取包含以 M 开头且以 OL 结尾的标签的所有行:

SELECT * FROM "Solubility" WHERE LABELS LIKE ‘M%OL’

使用聚合函数

聚合函数用于获取汇总数据而不是数据本身。可在 SELECT 语句中使用以下任意聚合函数。

表 3.6 SELECT 语句函数

函数

含义

SUM( )

列的总和

AVG( )

列的平均值

MAX( )

列的最大值

MIN( )

列的最小值

COUNT( )

列中的行数

以下是一些示例:

• 以下语句请求对 ETHER 列和 OCTANOL 列分别求和:

SELECT SUM(ETHER), SUM(OCTANOL) FROM "Solubility"

• 下面的语句返回 ETHER 值大于 1 的行数:

SELECT COUNT(*) FROM "Solubility" WHERE ETHER > 1

• 下面的语句计算乙醇类数据的 OCTANOL 平均值:

SELECT AVG(OCTANOL) FROM "Solubility" WHERE LABELS LIKE ‘%OL’

注意:使用聚合函数时,生成的 JMP 数据表中的列名为 Expr1000、Expr1001,依此类推。最好在完成获取后重命名这些列名。

GROUP BY 和 HAVING 命令

GROUP BY 和 HAVING 命令特别适用于聚合函数。这两个命令支持您基于数据集中某个字段的值多次运行聚合函数。

例如,您可能想要计算数据表中每个 ETHER 值(ETHER=0、ETHER=1 等)的记录数。

• SELECT COUNT(ETHER) FROM "Solubility" GROUP BY (ETHER) 返回一列数据,列中每个条目对应 ETHER 的一个水平。

• SELECT COUNT(ETHER) FROM "Solubility" WHERE OCTANOL > 0 GROUP BY (ETHER) 的作用与上一语句相同,只不过是为 OCTANOL > 0 的行计算记录数。

对某列的聚合函数使用 GROUP BY 时,请将该列本身包含在 SELECT 语句中。例如,以下代码在返回计数之外还返回包含 ETHER 水平的一列:

SELECT ETHER, COUNT(ETHER) FROM "Solubility" GROUP BY (ETHER)

使用子查询

聚合函数还有助于计算要在 WHERE 语句中使用的值。例如,您可能希望获取大于 ETHER 平均值的所有值。换言之,您希望找到 ETHER 的平均值,然后仅选择值大于该平均值的记录。请记住 SELECT AVG(ETHER) FROM "Solubility" 语句可获取您想要的平均值。所以,正确的 SQL 命令会在 WHERE 条件语句中使用上述语句:

SELECT * FROM "Solubility" WHERE ETHER > (SELECT AVG(ETHER) FROM "Solubility")

保存和加载 SQL 查询

构造查询之后,您可能希望以后重新运行该查询,但不想在每次想要使用该查询时都手动输入它。此时,您可以将该查询导出至外部文件。这需要在Figure 3.56 所示的窗口中点击导出 SQL 按钮。这将打开一个窗口,您可在其中将 SQL 查询另存为文本文件。

要加载保存的查询,请在Figure 3.56 所示的窗口中点击导入 SQL 按钮。这将打开一个窗口,您可在其中导航至已保存的查询。该查询一打开即加载到该窗口中。

使用 WHERE 子句编辑器

JMP 可以帮助在 ODBC 导入期间生成 SQL 查询的 WHERE 子句。它提供 WHERE 子句编辑器,可帮助您使用 SQL 常用功能生成基本表达式,同时允许使用供应商特定的函数。例如,您不必了解 SQL 是使用“=”还是“==”来进行比较,也不必了解是使用 avg() 还是 average() 来求平均值。

此外,应该用单引号 (‘string’) 而不是双引号 (“string”) 将字符串文字引起来。

图 3.57 WHERE 子句编辑器 

The WHERE Clause Editor

打开 WHERE 子句编辑器

1. 按照使用“打开表”连接至数据库中的步骤连接至某个数据库。

2. 在从数据库打开表窗口中,点击高级按钮。

3. 点击 Where 按钮。

使用 WHERE 子句编辑器从工作面板添加以下任何内容:表达式、函数和项。这些内容应用于突出显示的蓝框。

4. 点击“表名浏览器”选择某个表。

该表中的列显示在列表中。

5. 点击“SQL 供应商名称浏览器”选择要使用的 SQL 的类型:GenericSQL、Access、DB2、MySQL、Oracle、SQL Server 或以上全部类型。

通过点击列表中的某个函数或运算符并从出现的列表中选择运算符,执行所需操作。

注意:不支持以下 SQL Server 数据类型:二进制、地理和几何图形。

6. 通过点击公式编辑区域中的空公式元素将其选中。

出现红色外框时即被选中。相对于所点击位置的最小嵌套框内的所有项都将被选中。后续操作应用于这些组合元素。

7. 通过点击小键盘上的按钮向表达式添加运算符。

8. (可选)要定制 WHERE 子句,请从公式编辑器红色小三角中选择一个选项:

显示外框

显示或隐藏 WHERE 子句项的外框。

大字体

增大公式的字体大小。

小字体

减小公式的字体大小。

简化

尽量简化 WHERE 子句语句。

重置面板布局

显示Figure 3.57 中所示的面板。

WHERE 子句编辑器与“公式编辑器”(在“­在 JMP 中创建公式­”中介绍)的工作方式类似。

需要更多信息?有问题?从 JMP 用户社区得到解答 (community.jmp.com).