SQL 쿼리

SQL(Structured Query Language)은 간단한 선언적 문을 통해 관계형 데이터베이스에 저장된 데이터를 관리합니다. ANSI SQL-92 표준을 사용하여 ODBC 데이터베이스 및 내장형 데이터베이스를 쿼리합니다.

SQL 문법

하향식 SQL 파서는 다음과 같은 이유로 간소화된 버전의 표준 SQL 문법을 기반으로 합니다.
  • FactoryTalk Optix는 표준 SQL의 하위 집합만 지원합니다.
  • 간소화된 표준 SQL 문법은 하향식 파서 구현에 가장 적합합니다.
  • 간소화된 표준 SQL 문법은 결과 AST의 가독성을 높여줍니다.

팁: 특수 문자가 있는 열 이름을 다음과 같은 방식으로 이스케이프합니다.
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
    노트:
    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
로 구문 분석합니다. 의미 분석기는
r
정규식에 따라
delimited_identifier
에서 모든 날짜 및 시간 값을 추출합니다.
의견을 작성 부탁드립니다.
이 자료에 대한 문의사항이나 요청사항이 있습니까? 여기에 요청사항을 작성 부탁드립니다.
Normal