SQL クエリ

SQL クエリ

SQL (Structured Query Language) は、リレーショナルデータベースに格納されたデータを単純なステートメントで管理します。

SQL 文法

FactoryTalk Optix
SQL パーサーは、次の理由により、標準 SQL 2003 文法の簡略化されたバージョンに基づいています。MySQL、SQL Server、InfluxDB のプラットフォーム固有のコマンドなど、特定のダイアレクトはサポートされていません。
ヒント:
高度なクエリまたはストアド プロシージャを利用するには、カスタム NetLogics で Microsoft.Data.SqlClient NuGet パッケージの使用を検討してください。
Rockwell Automation
は、パフォーマンス、セキュリティ、更新、または当社製品との互換性を含むがこれらに限定されない、サードパーティのソフトウェアについて責任を負いません。サードパーティのソフトウェアの使用は、お客様ご自身の責任で行ってください、当社はそのようなソフトウェアに対するサポート、保証を提供しません。 ユーザーは、それぞれのサードパーティのプロバイダーでサポートとライセンス条件について確認する必要があります。
詳細については、「NetLogic」を参照してください。

ステートメント

ヒント: 特殊文字を含む列名をエスケープするには、次の方法を使用します:
SELECT MAX(
"/Variable1"
) FROM mystore.recipeschema1;
FactoryTalk Optix Studio
は、SQL クエリで次のステートメントをサポートします。
  • SELECT
    ステートメントを使用して、データベースからデータを選択します。このステートメントは、列名と値式の両方、および
    ALL
    DISTINCT
    セット量指定子をサポートしています。
    例:
    SELECT *, FROM Table1
    SELECT *, Timestamp AS T FROM Table1
    SELECT Column1 FROM Table1
    SELECT *, 10 FROM Table1
    SELECT 10, * FROM Table1
    SELECT *, 'text value' FROM Table1
    SELECT COUNT(*) FROM Table1
    SELECT DINSTINCT Column1 FROM Table1
    CREATE TEMPORARY TABLE "##TempTable" AS SELECT Column1 FROM MyTable WHERE Column1 > 5
    注:
    CASE
    式と
    WHEN
    式はサポートされていません。
    重要:
    SQL 標準では、
    *
    と派生列を組み合わせることはできません。
    SELECT *, Timestamp FROM Table1
    SELECT *, ROW_NUMBER() OVER (ORDER BY Timestamp) FROM DataLogger
    FactoryTalk Optix
    は、スパークライン グラフのクエリ操作を有効にするために、この標準をサポートしています。
  • DELETE
    ステートメントを使用して、テーブル内の既存のレコードを削除します。
    例:
    SELECT * FROM Table1 WHERE ... DELETE FROM Table1 WHERE ... UPDATE Table1 SET column1 = 10 WHERE column2 > 20 ...
  • UPDATE
    ステートメントを使用して、テーブル内の既存のレコードを変更します。
    例:
    SELECT * FROM Table1 WHERE ... DELETE FROM Table1 WHERE ... UPDATE Table1 SET column1 = 10 WHERE column2 > 20 ...
FactoryTalk Optix Studio
は、SQL クエリで次のステートメントを一部サポートします。
  • CREATE
    ステートメントを使用して、テーブルまたはデータベース内のテーブルを作成します。このステートメントは
    TABLE
    INDEX
    を部分的にサポートしています。
    例:
    CREATE UNIQUE INDEX Table_Index ON Table1 (Column1) CREATE INDEX IF NOT EXISTS Table_Index ON Table1 (Column1)
    CREATE TABLE TempTable AS SELECT Column1 FROM MyTable WHERE Column1 > 5 CREATE TEMPORARY TABLE TempTable AS SELECT Column1 FROM MyTable WHERE Column1 > 5
    CREATE TEMPORARY TABLE Table2 AS SELECT Column1 FROM Table1 WHERE Column1 > 5 CREATE UNIQUE INDEX Column1_Index ON Table1 (Column1) DROP TABLE Table1
  • DROP
    ステートメントは、データベース内の既存のデータベースまたはテーブルをすべて削除します。
    例:
    DROP TABLE TemporaryTable DROP TABLE Table1

リテラル値

サポートされているリテラル値
リテラル値タイプ
メモ
整数
1520
桁区切り記号は使用しないでください。
Int32 タイプを使用します。
実数
15.025
小数点記号として
.
を使用します。
ダブル タイプを使用します。
実数科学
2.7000001072883606E-1
ブール値
  • true
  • false
ブール値には小文字を使用します。
文字列
'string value'
一重引用符を使用して、テキストを区切ります。
一重引用符を別の一重引用符でエスケープして、テキスト文字列に一重引用符 (
'
) を挿入します。たとえば、
'string'
と記述するには、文字列内に一重引用符
''string''
を 2 つ使用します。
日時
"2004-05-23T14:25:10.487"
二重引用符で区切られた ISO8601 形式を使用します。
日時の表記は、あいまいさのない
DATE
TIME
、および
TIMESTAMP
キーワードを回避するために非標準の ANSI SQL を使用します。
標準識別子
  • Column1
  • Grüße
スペースは使用しないでください。
大文字または小文字で開始します。
数字、文字、およびアンダースコア文字
_
を使用できます。
区切られた識別子
  • "Water level"
  • "SELECT"
区切り文字として二重引用符 (
"
) を使用します。
識別子には、
"
文字以外の任意の文字を使用します。
識別子の末尾にあるスペースはすべて無視されます。

結合

INNER
UNION
LEFT
RIGHT
FULL
NATURAL
CROSS
などのあらゆる種類の結合がサポートされています。
注: 一部の結合は、すべての DBMS で完全にサポートされているわけではありません。

エイリアス

エイリアスは、識別子、派生列のサブクエリ、およびテーブルで使用できます。
以下は、エイリアスを使用したクエリの例です。
SELECT Timestamp AS T FROM Table1 WHERE ...
SELECT * FROM Table1 AS T WHERE ...
SELECT * FROM (SELECT * FROM Table1) AS SubQuery WHERE ...
CREATE TABLE Table1 AS SELECT Timestamp, Column1 FROM Table2

テーブルリファレンス

FROM
句は、次のテーブルリファレンスをサポートしています。
サポートしているテーブルリファレンス
リファレンス
完全修飾リファレンス
... FROM table_name
... FROM schema_name.table_name
... FROM database_name.schema.name.table_name
サブクエリ
... FROM (SELECT * FROM Table2) WHERE ...
注: 完全修飾名は、列リファレンスとしてもサポートされています。
例:
... WHERE Table1.Column1 > 10... WHERE Table1."order id" > 10 SELECT * FROM Table1 AS T WHERE T."order id" > 10 ... WHERE "my table"."order id" > 10

オペレーター

サポートされている演算子
オペレーター
IN
SELECT * FROM Table1 WHERE Column1 IN (10, 20, 30)
BETWEEN
SELECT * FROM Table1 WHERE Column1 BETWEEN 100 AND 200
LIKE
... WHERE column1 LIKE '%a'
... WHERE column1 LIKE '%a%'
... WHERE column1 LIKE '%bbpi!%ppo%' ESCAPE '!'
EXISTS
... WHERE EXISTS (SELECT Table1.Column1 FROM Table2)
IS
... WHERE column1 IS NULL
NOT
... WHERE column1 IS NOT NULL
... WHERE column1 NOT IS (10, 20)
... WHERE column1 NOT BETWEEN 100 AND 200
NOT
演算子は他のすべての演算子に適用されます。
注:
ANY
ALL
演算子はサポートされていません。

ウィンドウ関数

サポートされているウィンドウ関数
関数
ROW_NUMBER
ROW_NUMBER() OVER (ORDER BY Column2)
ROW_NUMBER() OVER (PARTITION ON Column1 ORDER BY Column2)
ROW_NUMBER() OVER (window_name PARTITION ON Column1 ORDER BY Column2)
RANK
RANK() OVER (PARTITION ON Column1 ORDER BY Column2)
DENSE_RANK
DENSE_RANK() OVER (PARTITION ON Column1 ORDER BY Column2)
AVG
AVG(Column1) OVER (PARTITION BY Column2)
SUM
MIN
MAX
SUM(Column1) OVER (PARTITION BY Column2)
COUNT
COUNT(Column1) OVER (PARTITION BY Column2)
COUNT(*) OVER (PARTITION BY Column2)
注:
PARTITION BY
句は、列識別子のみをサポートします。

トークン

サポートされているトークン
トークン
正規表現
regular_identifier
[a-zA-Z][a-zA-Z0-9_]*
delimited_identifier
".*?"
real
boolean
その他のトリビアルトークン
単一文字または単一単語トークンの正規表現
注: 字句解析器は日付と時刻の値をトークンとして認識せず、
delimited_identifier
として解析します。意味解析ツールは、 正規表現に従って、 から日付と時刻の値を抽出します。
ご質問やご意見
このドキュメントに関するご質問やご意見は、こちらまでお寄せください。 こちらからご意見をお寄せください。
Normal