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
.
를 소수 구분 기호로 사용합니다.
Double 유형을 사용합니다.
실수의 과학적 표기
2.7000001072883606E-1
Boolean
  • true
  • false
부울 값에는 소문자를 사용합니다.
문자열
'string value'
작은따옴표를 사용하여 텍스트를 구분합니다.
작은따옴표를 다른 작은따옴표로 이스케이프 처리하여 텍스트 문자열에 작은따옴표(
'
)를 삽입합니다. 예를 들어,
'string'
을 쓰려면 문자열에 두 개의 작은따옴표
''string''
을 사용합니다.
날짜 및 시간
"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
로 구문 분석합니다. 의미 분석기는 정규식에 따라
delimited_identifier
에서 모든 날짜 및 시간 값을 추출합니다.
의견을 작성 부탁드립니다.
이 자료에 대한 문의사항이나 요청사항이 있습니까? 여기에 요청사항을 작성 부탁드립니다.
Normal