기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
SELECT아마존의 명령 QLDB
중요
지원 종료 알림: 기존 고객은 2025년 7월 31일 지원이 종료될 QLDB 때까지 Amazon을 사용할 수 있습니다. 자세한 내용은 아마존 QLDB 원장을 Amazon Aurora SQL Postgre로 마이그레이션을
QLDBAmazon에서는 SELECT
명령을 사용하여 하나 이상의 테이블에서 데이터를 검색합니다. 의 QLDB 모든 SELECT
쿼리는 트랜잭션에서 처리되며 트랜잭션 제한 시간이 적용됩니다.
결과 순서는 구체적이지 않으며 각 SELECT
쿼리마다 다를 수 있습니다. 어떤 QLDB 쿼리에서든 결과 순서에 의존해서는 안 됩니다.
특정 테이블에서 이 PartiQL 명령을 실행하기 위한 액세스를 제어하는 방법을 알아보려면 Amazon에서 표준 권한 모드 시작하기 QLDB 섹션을 참조하세요.
주의
인덱싱된 조회 QLDB 없이 에서 쿼리를 실행하면 전체 테이블 스캔이 호출됩니다. PartiQL은 호환되므로 이러한 쿼리를 지원합니다. SQL 하지만 프로덕션 사용 사례에서는 테이블 스캔을 실행하지 마세요. QLDB 테이블 스캔은 동시성 충돌 및 트랜잭션 시간 초과를 포함하여 대규모 테이블에서 성능 문제를 일으킬 수 있습니다.
인덱싱된 필드 또는 문서 ID(예: WHERE indexedField = 123
또는 WHERE indexedField IN (456, 789)
)에서 동등 연산자를 사용하여 WHERE
조건자 절이 포함된 문을 실행하는 것이 좋습니다. 자세한 내용은 쿼리 성능 최적화을 참조하세요.
구문
SELECT [ VALUE ]
expression
[ ASfield_alias
] [,expression
, ... ] FROMsource
[ ASsource_alias
] [ ATidx_alias
] [ BYid_alias
] [,source
, ... ] [ WHEREcondition
]
파라미터
- VALUE
-
값을 튜플 구조로 래핑하는 대신 쿼리에서 원시 데이터 유형 값을 반환하도록 하는 표현식의 한정자입니다.
expression
-
*
와일드카드에서 형성된 프로젝션 또는 결과 집합에 있는 하나 이상의 필드로 구성된 프로젝션 목록입니다. 표현은 PartiQL 함수에 대한 호출 또는 PartiQL 연산자에서 수정되는 필드로 구성될 수 있습니다. - AS
field_alias
-
(선택 사항)최종 결과 집합에 사용되는 필드의 임시 사용자 정의 별칭입니다.
AS
키워드는 옵션입니다.단순 필드 이름이 아닌 표현식에 별칭을 지정하지 않으면 결과 집합은 해당 필드에 기본 이름을 적용합니다.
- FROM
source
-
쿼리할 소스입니다. 현재 지원되는 소스는 테이블 이름, 테이블 간 내부 조인, 중첩된
SELECT
쿼리(중첩된 쿼리 한도에 적용), 테이블에 대한 기록 함수 호출 뿐입니다.소스를 최소 하나 이상 지정해야 합니다. 여러 소스는 쉼표로 구분해야 합니다.
- AS
source_alias
-
(선택 사항)쿼리할 소스의 범위를 지정하는 사용자 정의 별칭입니다.
SELECT
또는WHERE
절에 사용되는 모든 소스 별칭은FROM
절에 선언되어야 합니다.AS
키워드는 선택 사항입니다. - AT
idx_alias
-
(선택 사항)소스 목록 내 각 요소의 인덱스(서수) 번호에 바인딩되는 사용자 정의 별칭입니다.
AT
키워드를 사용하여FROM
절에서 별칭을 선언해야 합니다. - BY
id_alias
-
(선택 사항)결과 집합에 있는 각 문서의
id
메타데이터 필드에 바인딩되는 사용자 정의 별칭입니다.BY
키워드를 사용하여FROM
절에서 별칭을 선언해야 합니다. 이는 기본 사용자 뷰를 쿼리하면서 문서 ID를 기반으로 프로젝션하거나 필터링하려는 경우에 유용합니다. 자세한 내용은 BY 절을 사용하여 문서 ID 쿼리하기 단원을 참조하십시오. - WHERE
condition
-
쿼리의 선택 기준 및 조인 기준(해당하는 경우)입니다.
참고
WHERE
절을 생략하면 테이블의 모든 문서가 검색됩니다.
조인
현재 내부 조인만 지원됩니다. 다음과 같이 명시적 INNER JOIN
절을 사용하여 내부 조인 쿼리를 작성할 수 있습니다. 이 구문에서는 JOIN
와 ON
가 쌍을 이루어야 하며 INNER
키워드는 선택 사항입니다.
SELECT
expression
FROM table1 AS t1 [ INNER ] JOIN table2 AS t2 ON t1.element
= t2.element
또는 다음과 같이 암시적 구문을 사용하여 내부 조인을 작성할 수 있습니다.
SELECT
expression
FROM table1 AS t1, table2 AS t2 WHERE t1.element
= t2.element
중첩된 쿼리 한도
SELECT
표현식과 FROM
소스 내에서 중첩된 쿼리(하위 쿼리)를 작성할 수 있습니다. 주요 제한 사항은 가장 바깥쪽 쿼리만 글로벌 데이터베이스 환경에 액세스할 수 있다는 것입니다. 예를 들어, VehicleRegistration
및 Person
테이블이 있는 원장이 있다고 가정해 보겠습니다. 다음 중첩 쿼리는 내부 SELECT
가 Person
에 액세스를 시도하므로 유효하지 않습니다.
SELECT r.VIN, (SELECT p.PersonId FROM Person AS p WHERE p.PersonId = r.Owners.PrimaryOwner.PersonId) AS PrimaryOwner FROM VehicleRegistration AS r
반면 다음 중첩 쿼리는 유효합니다.
SELECT r.VIN, (SELECT o.PrimaryOwner.PersonId FROM @r.Owners AS o) AS PrimaryOwner FROM VehicleRegistration AS r
예
다음 쿼리는 IN
연산자를 사용하는 표준 WHERE
술어 절이 포함된 기본 SELECT
전체 와일드카드를 보여줍니다.
SELECT * FROM Vehicle WHERE VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
다음은 문자열 필터를 사용한 SELECT
프로젝션을 보여줍니다.
SELECT FirstName, LastName, Address FROM Person WHERE Address LIKE '%Seattle%' AND GovId = 'LEWISR261LL'
다음은 중첩된 데이터를 평면화하는 상관 하위 쿼리를 보여줍니다. 참고로 이 @
문자는 기술적으로 선택 사항입니다. 하지만 이 표현은 Owners
(존재하는 경우)이라는 이름의 다른 컬렉션이 아니라 VehicleRegistration
내에 중첩된 Owners
구조를 적용하고 싶다는 것을 명시적으로 나타냅니다. 자세한 내용은 데이터 및 기록 다루기 장의 중첩된 데이터 섹션을 참조하세요.
SELECT r.VIN, o.SecondaryOwners FROM VehicleRegistration AS r, @r.Owners AS o WHERE r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
다음은 중첩된 데이터를 프로젝션하는 SELECT
목록의 하위 쿼리와 암시적 내부 조인을 보여줍니다.
SELECT v.Make, v.Model, (SELECT VALUE o.PrimaryOwner.PersonId FROM @r.Owners AS o) AS PrimaryOwner FROM VehicleRegistration AS r, Vehicle AS v WHERE r.VIN = v.VIN AND r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
다음은 명시적 내부 조인을 보여줍니다.
SELECT v.Make, v.Model, r.Owners FROM VehicleRegistration AS r JOIN Vehicle AS v ON r.VIN = v.VIN WHERE r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
다음은 BY
절을 사용한 문서 id
메타데이터 필드의 프로젝션을 보여줍니다.
SELECT r_id, r.VIN FROM VehicleRegistration AS r BY r_id WHERE r_id = '
documentId
'
다음은 BY
절을 사용하여 PersonId
및 문서 id
필드의 DriversLicense
및 Person
테이블에 각각 조인합니다.
SELECT * FROM DriversLicense AS d INNER JOIN Person AS p BY pid ON d.PersonId = pid WHERE pid = '
documentId
'
다음은 커밋된 뷰을 사용하여 PersonId
및 문서 id
필드의 DriversLicense
및 Person
테이블에 각각 조인합니다.
SELECT * FROM DriversLicense AS d INNER JOIN _ql_committed_Person AS cp ON d.PersonId = cp.metadata.id WHERE cp.metadata.id = '
documentId
'
다음은 테이블 VehicleRegistration
내 문서에 대한 Owners.SecondaryOwners
목록에 있는 각 사람의 PersonId
및 인덱스(서수)를 반환합니다.
SELECT s.PersonId, owner_idx FROM VehicleRegistration AS r, @r.Owners.SecondaryOwners AS s AT owner_idx WHERE r.VIN = 'KM8SRDHF6EU074761'
드라이버를 사용하여 프로그래밍 방식으로 실행
드라이버를 사용하여 이 명령문을 프로그래밍 방식으로 실행하는 방법을 알아보려면 QLDB 드라이버 시작하기에서 다음 자습서를 참조하십시오.
-
Java: 빠른 시작 자습서 | Cookbook 참조
-
.NET: 빠른 시작 자습서 | Cookbook 참조
-
Go: 빠른 시작 자습서 | Cookbook 참조
-
Node.js: 빠른 시작 자습서 | Cookbook 참조
-
Python: 빠른 시작 자습서 | Cookbook 참조