查询类型

<< 点击显示目录 >>

主页  mappServices帮助手册 > mapp Database: 连接数据库  > 配置  > MpDatabaseCore配置 >

查询类型

mapp Services V5.16

SELECT类型的查询可以使用小组件"数据库"执行和显示 。更多信息,见"SELECT "一节。

显示高级参数

Name



Database




Queries





Query: {/Name}






Name






Type







SELECT







SELECT








Destination








Columns









Process variable









{/Column}










Column










Process variable







FROM







WHERE








Connect








#1-N









Column









Operator









Compare To










Value










PV







ORDER BY








{/Column} ({/Order})









Column









Order







INSERT







INTO







Columns








Process variable








{/Column}









Column









Process variable







UPDATE







Table Name







Columns








Process variable








{/Column}









Column









Process variable







WHERE








Connect








#1-N









Column









Operator









Compare To










Value










PV







CREATE







Table Name







Columns








Process variable








{/Column}









Column









Data type







DELETE







Table Name







WHERE








Connect








#1-N









Column









Operator









Compare To










Value










PV







CUSTOM







Query







Columns








Process variable








{/Column}









Column









Process variable





关于不同查询类型的例子,见这里

指定变量

不同查询类型中使用的变量可以用两种不同的方式来指定。

 

自动

 

选项 "自动 "取决于 "自动映射 "下的设置。

config_automatic_mapping

 

Strict。使用 "自动"和"严格",变量自动连接到表中的列。必须指定一个变量,其结构和变量名称与数据库表中的完全一致。下图中的表 "产品 "有 "id"、"name "和 "quality "等列。Automation Studio创建一个变量,如"SetData",其类型为 "Product_Type"。

configuration_dataname

  如果变量名称与列名不匹配,或者指定的变量太少,则 会在功能块MpDatabaseQuery中触发错误 "查询错误"。错误 "不正确的PV条目 " 也会显示在Logger中。

 

Flexible: 在 "自动 "和 "灵活 "的情况下,结构中变量的顺序可以变化。只有变量的名称必须与表中的列名相匹配。如果列("SA")和变量("VA")的数量不匹配,或者没有涵盖所有的列,则行为取决于使用的数据库系统和查询类型。

映射示例

SELECT

INSERT INTO

UPDATE

VA和SA是相同的。

列名被覆盖。

变量名和列名的顺序相同

check

check

check

VA和SA是不同的。

列名被覆盖。

变量名和列名的顺序相同

check

delete

delete

VA和SA是不同的。

列名不包括在内。

变量名和列名的顺序相同

check

sign_warning

sign_warning

VA和SA是相同的。

列名被覆盖。

变量名和列名的顺序不一致

check

check

check

VA和SA是不同的。

列名被覆盖。

变量名和列名的顺序不一致

check

delete

delete

VA和SA是不同的。

列名不包括在内。

变量名和列名的顺序不一致

check

sign_warning

sign_warning

check:查询可以被执行。

delete 。查询不能被执行 触发了一个错误。更多信息,请参见常见问题中的 "命令行界面的信息" 。

sign_warning :行为取决于所用数据库的设置。这可以在各个数据库的文档中找到。由于不是所有的列名都被覆盖,所以要么插入数据库中定义的默认值,要么就会触发一个错误。更多信息,请参见 常见问题中的 "命令行界面的信息" 。

 

 

单列

在"单列"下,需要的列被单独指定。所需的列名在"列"下定义。必须指定一个PV,以便对信息进行存储、删除或更新等。PV的名称和数据库中的列名不一定要一致!

 

指定PV

如果指定一个具有简单数据类型的变量,则按如下方式进行。"::任务名:PV名"

以下SQL、MSSQL或PostgreSQL的数据类型应使用IEC的数据类型。

IEC数据类型

MySQL/MariaDB数据类型

MSSQL数据类型

PostgreSQL数据类型

BOOL

TINYINT(1)

BIT

BOOL

SINT

TINYINT(4)

TINYINT

SMALLINT

INT

SMALLINT(6)

SMALLINT

INTEGER

DINT

INT(11)

INT, BIGINT

BIGINT

USINT

TINYINT(3) (unsigned)

TINYINT

SMALLINT

UINT

SMALLINT(5) (unsigned)

SMALLINT

INTEGER

UDINT

INT(10) (unsigned)

INT, BIGINT

BIGINT

STRING

VARCHAR(81)

VARCHAR

CHARACTER VARYING, CHARACTER

WSTRING

VARCHAR

NVARCHAR

CHARACTER VARYING

TIME

TIME

TIME

TIME WITHOUT TIME ZONE

LREAL

DOUBLE

FLOAT, BIGINT

DOUBLE PRECISION, NUMERIC

REAL

FLOAT

FLOAT

REAL

DATE

DATE

DATE

DATE

DATE_AND_TIME

DATETIME

DATETIME2

TIMESTAMP WITHOUT TIMEZONE

DTStructure

DATETIME(6)

DATETIME

TIMESTAMP WITHOUT TIMEZONE

 

当使用数据类型WSTRING时,应遵守一般条件一节中解释的要点

负的TIME值不能在MS SQL和PostgreSQL中使用!

MSSQL数据类型BIGINT是一个8字节的数据类型。这不能由Automation Studio自动处理。必须进行LREAL、DINT或UDINT的转换。这可以在MpDatabaseCore配置中的常规设置("数据库设置")中完成

 

指定数组PV

如果指定了一个数组PV,则按如下方式进行。"::任务名:MyArrayPV[]"

大括号[]必须由用户添加。

 

指定PV片段

在查询中,也可以以片段的形式指定PV。这在与"自定义"查询相结合时尤为重要。它们在配置中使用"{&pv[任务名:PV名]}"指定。该片段必须始终在大括号("{}")中指定。&pv "代表一个过程变量的值。实际的PV在方括号中表示("[]")。

关于如何在查询中指定变量的例子,见查询例子一节

SELECT

"SELECT "可以用来将信息从一个表/列复制到一个PV。需要查询信息的表在"FROM"中定义。信息所来自的列在"Columns"中被指定。这里有两个查询选项:"自动"和"单列"。它们在上面的"指定变量"中有所描述。

此外,过滤条件也可以在"WHERE"下指定。使用"Column"指定所需列的名称。要比较的值可以在"值"中指定。"操作者"定义了该值应如何与列名进行比较。

如果使用"LIKE"作为操作符,可以搜索到类似的条目。必须使用通配符"*"。如果"*Test*"被用作"Value",例如,条目"Test01"、"MyTest"和"MyTest01"可以被搜索到。

在一些数据库中,通配符"%"也被使用。

可以指定各种过滤器选项。这些都是通过"连接"相互连接的。

通过"Order by",查询的内容可以根据所需的列进行升序或降序排序。为此必须指定数据库表中使用的列名。

logo_use_case

用例"在数据库中添加和查询生产数据" 解释了如何使用 "SELECT"。

 

连接mapp View ( 小组件 "Database")

配置中指定的SELECT查询可以使用小组件"数据库"执行和显示。关于如何配置小组件的解释,请参阅配置示例使用小组件 "数据库"。配置中的参数"目的地"决定了查询的内容是否将只显示在小组件上,或者也显示在指定的过程变量上。

如果 "目的地=小组件",那么查询可以由小组件执行,查询的内容将只显示在 小组件"数据库"。如果"目的地=进程变量",那么查询可以由小组件执行,查询的返回内容将显示在指定的进程变量和 小组件"数据库"中。欲了解更多信息,请看这里

INSERT

可以使用"INSERT"将信息添加到数据库中。所需的数据库表必须在"INTO"下指定。"列"决定了信息的添加方式。有关解释,请参见上面的"指定变量"一节。

logo_use_case

用例"在数据库中添加和查询生产数据" 解释了如何使用"INSERT"。

UPDATE

"UPDATE"可以用来更新表中的信息。在 "表名"下指定所需的表名。然后你可以使用"列"来确定信息的更新方式。这里有两个选项,"自动"和"单列"。它们在上面的"指定变量"中有所描述。

此外,过滤条件也可以在"WHERE"下指定。使用"Column"指定所需列的名称。要比较的值可以在"值"中指定。"操作者"定义了该值应如何与列名进行比较。

如果使用"LIKE"作为操作符,可以搜索到类似的条目。必须使用通配符"*"。如果"*Test*"被用作"Value",例如,条目"Test01"、"MyTest "和 "MyTest01"可以被搜索到。

在一些数据库中,也使用通配符"%"。

可以指定各种过滤选项。这些都是通过"连接"相互连接的。

CREATE TABLE

"CREATE TABLE"可以用来在数据库中创建一个新表。表的名称在"表名"下定义。

"列"定义了应该如何创建表中的列。这里有两个选项,"自动"和"单列"。它们在上面的"指定变量"中有所描述。

指定结构/变量的数据类型决定了数据库表中的数据类型!

DELETE FROM

"DELETE FROM "可以用来删除一个表的一个或多个列,必须用"表名"来指定。

应该被删除的条目在"WHERE"部分定义。这里可以定义不同的过滤选项。

使用"Column"指定所需列的名称。要比较的值可以在"值"中指定。"操作者"定义了该值应如何与列名进行比较。

如果使用"LIKE"作为操作符,可以搜索到类似的条目。必须使用通配符"*"。如果"*Test*"被用作"Value",例如,条目 "Test01"、"MyTest "和 "MyTest01"可以被搜索到。

在一些数据库中,也使用通配符"%"。

可以指定各种过滤选项。这些都是通过"连接"相互连接的。

Custom

可以在"自定义"下创建一个自我定义的SQL查询。在 "查询"下添加SQL代码。关创建SQL查询的更多信息,请看这里例子。

logo_use_case

用例创建一个用户定义的查询显示了如何创建一个用户定义的查询。

在mapp Database中不能检查查询的有效性。如果在执行查询过程中出现错误,需要额外的信息,请参见脚本的命令窗口。更多信息,请看这里

本节的主题:

查询实例