- 프로젝트 만들기
- 개체 및 변수 참조
- 프로젝트 확장
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 Table1SELECT *, Timestamp AS T FROM Table1SELECT Column1 FROM Table1SELECT *, 10 FROM Table1SELECT 10, * FROM Table1SELECT *, 'text value' FROM Table1SELECT COUNT(*) FROM Table1SELECT DINSTINCT Column1 FROM Table1CREATE TEMPORARY TABLE "##TempTable" AS SELECT Column1 FROM MyTable WHERE Column1 > 5노트:CASE및WHEN표현식은 지원되지 않습니다.중요:SQL 표준에서는*를 파생 열과 결합하는 것을 허용하지 않습니다.SELECT *, Timestamp FROM Table1SELECT *, ROW_NUMBER() OVER (ORDER BY Timestamp) FROM DataLoggerFactoryTalk 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 > 5CREATE 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 |
| 부울 값에는 소문자를 사용합니다. |
문자열 | 'string value' | 작은따옴표를 사용하여 텍스트를 구분합니다. 작은따옴표를 다른 작은따옴표로 이스케이프 처리하여 텍스트 문자열에 작은따옴표( ' )를 삽입합니다. 예를 들어, 'string' 을 쓰려면 문자열에 두 개의 작은따옴표 ''string'' 을 사용합니다. |
날짜 및 시간 | "2004-05-23T14:25:10.487" | 큰따옴표로 구분된 ISO8601 형식을 사용합니다. 날짜 및 시간 표기법은 모호성 없이 DATE , TIME 및 TIMESTAMP 키워드를 피하는 데 사용되는 비표준 ANSI SQL입니다. |
표준 식별자 |
| 공백을 사용하지 마십시오. 대문자 또는 소문자로 시작합니다. 숫자, 문자 및 밑줄 문자 _ 를 사용할 수 있습니다. |
구분 식별자 |
| 큰따옴표( " )를 구분 기호로 사용합니다.식별자에서 " 문자를 제외한 모든 문자를 사용합니다.식별자 끝에 있는 공백은 무시됩니다. |
조인
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 |
|
BETWEEN |
|
LIKE |
|
EXISTS |
|
IS |
|
NOT |
NOT 연산자는 다른 모든 연산자에 적용됩니다. |
노트:
ANY
및 ALL
연산자는 지원되지 않습니다.창 함수
함수 | 예제 |
---|---|
ROW_NUMBER |
|
RANK |
|
DENSE_RANK |
|
AVG |
|
SUM , MIN , MAX |
|
COUNT |
|
노트:
PARTITION BY
절은 열 식별자만 지원합니다.토큰
토큰 | 정규식 |
---|---|
regular_identifier | [a-zA-Z][a-zA-Z0-9_]* |
delimited_identifier | ".*?" |
real | |
boolean | |
기타 사소한 토큰 | 단일 문자 또는 단일 단어 토큰에 대한 정규식 |
노트:
렉서는 날짜 및 시간 값을 토큰으로 인식하지 않고
delimited_identifier
로 구문 분석합니다. 의미 분석기는 정규식에 따라 delimited_identifier
에서 모든 날짜 및 시간 값을 추출합니다.sql
query
의견을 작성 부탁드립니다.