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

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

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

使用 SELECT 语句

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

SELECT * FROM "Solubility"

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

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

SELECT ETHER, OCTANOL, CHLOROFORM FROM "Solubility"

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

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

突出显示若干行

按住 Shift 的同时点击,选择一定范围内的列名

按住 Ctrl 的同时点击 (Windows) 或在按住 Command 的同时点击 (macOS),选择各个列名。

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

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

SELECT DISTINCT ETHER, OCTANOL, CHLOROFORM FROM "Solubility"

对结果排序

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

SELECT * FROM "Solubility" ORDER BY LABELS

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

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

使用 WHERE 语句

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

SELECT * FROM "Solubility" WHERE ETHER > 1

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

表 3.4 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 使用 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 语句

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

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

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

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

使用聚合函数

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

表 3.5 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 数据表中的列名为 Expr1000Expr1001,依此类推。最好在完成获取后重命名这些列名。

GROUP BY 和 HAVING 命令

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 的行计算记录数。

对某列的聚合函数使用 GROUP BY 时,请将该列本身包含在 SELECT 语句中。例如,

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

在返回计数之外还返回包含 ETHER 水平的一列。

使用子查询

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

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

保存和加载 SQL 查询

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

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

使用 WHERE 子句编辑器

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

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

打开 WHERE 子句编辑器

1. 按照连接至数据库中的步骤连接至某个数据库。

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

3. 点击 Where 按钮。

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

1. 点击“表名浏览器”选择某个表。该表中的列显示在列表中。

2. 点击“SQL 供应商名称浏览器”选择要使用的 SQL 的类型:GenericSQL、Access、DB2、MySQL、Oracle、SQL Server 或以上全部类型。通过点击列表中的某个函数或运算符并从出现的列表中选择运算符,执行所需操作。

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

3. 通过点击公式编辑区域中的空公式元素将其选中。出现红色外框时即被选中。相对于所点击位置的最小嵌套框内的所有项都将被选中。后续操作应用于这些组合元素。

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

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

显示外框

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

大字体

增大公式的字体大小。

小字体

减小公式的字体大小。

简化

尽量简化 WHERE 子句语句。

重置面板布局

显示Figure 3.68中所示的面板。

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

图 3.68 WHERE 子句编辑器 

Image shown here

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