JMP 中最重要的 SQL 语句是 SELECT 语句。该语句指示数据库从数据源中获取哪些行。当您完成编写 SQL 语句以查询数据库中针对 Solubility.jmp 样本数据表的过程之后,实际就是向数据源发送了以下 SQL 语句:
SELECT * FROM "Solubility"
* 运算符是“所有列”的简写形式。这样,该语句即向数据库发送了一个请求,请求从指定的数据表中返回所有列。
若不想返回所有行,您可以用数据表中的特定列名取代 *。在 Solubility 数据表示例中,您可以通过提交以下语句仅选择 ETHEROCTANOLCHLOROFORM 这三列:
SELECT ETHER, OCTANOL, CHLOROFORM FROM "Solubility"
JMP 提供一种图形化的方式来构造简单的 SELECT 语句,这样就不必再键入实际的 SQL。要从数据源中选择特定列,请在列列表中突出显示这些列。
SELECT DISTINCT ETHER, OCTANOL, CHLOROFORM FROM "Solubility"
SELECT * FROM "Solubility" ORDER BY LABELS
选择所有字段,按 LABELS 变量对生成的数据表排序。若要指定更多变量作为排序依据,请将其添加到逗号分隔列表中。
SELECT * FROM "Solubility" ORDER BY LABELS, ETHER, OCTANOL
使用 WHERE 语句,您可以基于条件获取数据表中的特定行。例如,您可能想要选择列 ETHER 的值大于 1 的所有行。
SELECT * FROM "Solubility" WHERE ETHER > 1
WHERE 语句放置在 FROM 语句之后,可使用以下任意逻辑运算符。
对条件求值时,先对整个语句处理 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)
要指定获取一定范围内的值,请随同 WHERE 使用 INBETWEEN 语句。IN 语句指定值列表,BETWEEN 支持您指定一定范围内的值。例如,
SELECT * FROM "Solubility" WHERE LABELS IN (’Methanol’, ’Ethanol’, ’Propanol’)
获取 LABELS 列的值为 Methanol、Ethanol 或 Propanol 的所有行。
SELECT * FROM "Solubility" WHERE ETHER BETWEEN 0 AND 2
获取 ETHER 值介于 0 和 2 之间的所有行。
使用 LIKE 语句,您可以选择与给定字符串相似的值。用 % 来表示可包含任何值的字符串。例如,您可能想要从 Solubility 数据中选择所有乙醇类的化学品,即:以 –ol 结尾的化学品。下面的 SQL 语句可完成该任务。
SELECT * FROM "Solubility" WHERE LABELS LIKE ‘%OL’
% 运算符可放置于 LIKE 语句中的任何位置。下面的示例提取包含以 M 开头且以 OL 结尾的标签的所有行:
SELECT * FROM "Solubility" WHERE LABELS LIKE ‘M%OL’
以下语句请求对 ETHER 列和 OCTANOL 列分别求和:
SELECT SUM(ETHER), SUM(OCTANOL) FROM "Solubility"
下面的语句返回 ETHER 值大于 1 的行数:
SELECT COUNT(*) FROM "Solubility" WHERE ETHER > 1
SELECT AVG(OCTANOL) FROM "Solubility" WHERE LABELS LIKE ‘%OL’
注意:使用聚合函数时,生成的 JMP 数据表中的列名为 Expr1000Expr1001,依此类推。最好在完成获取后重命名这些列名。
GROUP BYHAVING 命令特别适用于聚合函数。这两个命令支持您基于数据集中某个字段的值多次执行聚合函数。
例如,您可能想要计算数据表中每个 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 的行计算记录数。
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")
要加载保存的查询,请在读取存储在 Excel 文件的 Solubility 表中的所有变量所示的窗口中点击导入 SQL 按钮。 这将调出一个窗口,您可在其中导航到保存的查询。该查询一打开即加载到该窗口中。
JMP 可以帮助在 ODBC 导入期间生成 SQL 查询的 WHERE 子句。它提供 WHERE 子句编辑器,可帮助您生成使用 SQL 常用功能的基本表达式,同时允许使用供应商特定的函数。例如,您不必了解 SQL 是使用“=”还是“==”来进行比较,也不必了解是使用 avg() 还是 average() 来求平均值。
此外,应使用单引号 (‘string’) 而不是双引号 (“string”) 引住字符串文字。
1.
按照连接至数据库中的步骤连接至某个数据库。
2.
从数据库打开表窗口中,点击高级按钮。
3.
点击 Where 按钮。
WHERE 子句编辑器