기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
DML Amazon Keyspaces의 문(데이터 조작 언어)
데이터 조작 언어(DML)는 Amazon Keyspaces(Apache Cassandra용CQL) 테이블의 데이터를 관리하는 데 사용하는 Cassandra 쿼리 언어() 문 세트입니다. DML 문을 사용하여 테이블의 데이터를 추가, 수정 또는 삭제할 수 있습니다.
DML 문을 사용하여 테이블의 데이터를 쿼리할 수도 있습니다. (참고로 CQL는 조인 또는 하위 쿼리를 지원하지 않습니다.)
SELECT
SELECT 문을 사용하여 데이터를 쿼리합니다.
구문
select_statement ::= SELECT [ JSON ] ( select_clause | '*' ) FROM table_name [ WHERE 'where_clause' ] [ ORDER BY 'ordering_clause' ] [ LIMIT (integer | bind_marker) ] [ ALLOW FILTERING ] select_clause ::= selector [ AS identifier ] ( ',' selector [ AS identifier ] ) selector ::= column_name | term | CAST '(' selector AS cql_type ')' | function_name '(' [ selector ( ',' selector )* ] ')' where_clause ::= relation ( AND relation )* relation ::= column_name operator term TOKEN operator ::= '=' | '<' | '>' | '<=' | '>=' | IN | CONTAINS | CONTAINS KEY ordering_clause ::= column_name [ ASC | DESC ] ( ',' column_name [ ASC | DESC ] )*
예제
SELECT name, id, manager_id FROM "myGSGKeyspace".employees_tbl ; SELECT JSON name, id, manager_id FROM "myGSGKeyspace".employees_tbl ;
JSON인코딩된 데이터 유형을 Amazon Keyspaces 데이터 유형에 매핑하는 테이블은 섹션을 참조하세요JSON Amazon Keyspaces 데이터 형식 인코딩.
IN
키워드 사용
IN
키워드는 하나 이상의 값이 같도록 지정합니다. 파티션 키와 클러스터링 열에 적용할 수 있습니다. SELECT
문에 키가 표시된 순서대로 결과가 반환됩니다.
예제
SELECT * from
mykeyspace.mytable
WHERE primary.key1 IN (1,2) and clustering.key1 = 2; SELECT * frommykeyspace.mytable
WHERE primary.key1 IN (1,2) and clustering.key1 <= 2; SELECT * frommykeyspace.mytable
WHERE primary.key1 = 1 and clustering.key1 IN (1, 2); SELECT * frommykeyspace.mytable
WHERE primary.key1 <= 2 and clustering.key1 IN (1, 2) ALLOW FILTERING;
IN
키워드 및 Amazon Keyspaces가 문을 처리하는 방식에 대한 자세한 내용은 Amazon IN Keyspace의 쿼리에서 SELECT 명령문과 함께 연산자를 사용하십시오.섹션을 참조하세요.
결과 순서 지정
ORDER BY
절은 반환된 결과의 정렬 순서를 지정합니다. 각 열의 정렬 순서와 함께 열 이름 목록을 인수로 사용합니다. 정렬 절에는 클러스터링 열만 지정할 수 있습니다. 비클러스터링 열은 허용되지 않습니다. 정렬 순서 옵션은 ASC
(오름차순)과 DESC
(내림차순) 정렬 순서입니다. 정렬 순서를 생략하면 클러스터링 열의 기본 순서가 사용됩니다. 가능한 정렬 순서는 Amazon ORDER BY Keyspaces를 통한 주문 결과을 참조하세요.
예
SELECT name, id, division, manager_id FROM "myGSGKeyspace".employees_tbl WHERE id = '012-34-5678' ORDER BY division;
IN
키워드와 함께 ORDER BY
을 사용하면 페이지 내에서 결과가 정렬됩니다. 페이지 매김이 비활성화된 상태에서는 전체 재정렬이 지원되지 않습니다.
TOKEN
TOKEN
함수를 SELECT
및 WHERE
절의 PARTITION KEY
열에 적용할 수 있습니다. TOKEN
함수를 사용하면 Amazon Keyspaces는 PARTITION KEY
의 값이 아닌 PARTITION_KEY
의 매핑된 토큰 값을 기준으로 행을 반환합니다.
IN
키워드에서는 TOKEN
관계가 지원되지 않습니다.
예제
SELECT TOKEN(id) from
my_table
; SELECT TOKEN(id) frommy_table
WHERE TOKEN(id) > 100 and TOKEN(id) < 10000;
TTL 함수
TTL
함수를 SELECT
문과 함께 사용하여 열에 저장된 만료 시간(초)을 검색할 수 있습니다. TTL
인 값이 설정되지 않으면 없으면 함수가 null
를 반환합니다.
예
SELECT TTL(
my_column
) frommy_table
;
수집과 같은 다중 셀 열에는 TTL
함수를 사용할 수 없습니다.
WRITETIME 함수
테이블에서 클라이언트 측 타임스탬프를 사용하는 경우에만 WRITETIME
함수를 SELECT
문과 함께 사용하여 열 값의 메타데이터로 저장된 타임스탬프를 검색할 수 있습니다. 자세한 내용은 Amazon Keyspaces의 클라이언트 측 타임스탬프 단원을 참조하십시오.
SELECT WRITETIME(
my_column
) frommy_table
;
수집과 같은 다중 셀 열에는 WRITETIME
함수를 사용할 수 없습니다.
참고
설정된 Cassandra 드라이버 동작과의 호환성을 위해 Cassandra 드라이버 및 개발자 도구를 통한 Cassandra 쿼리 언어(CQL) API 호출을 사용하여 시스템 테이블에서 작업을 수행할 때 태그 기반 권한 부여 정책이 적용되지 않습니다. 자세한 내용은 태그를 기반으로 한 Amazon Keyspaces 리소스 액세스 단원을 참조하십시오.
INSERT
INSERT
문을 사용하여 테이블에 행을 추가합니다.
구문
insert_statement ::= INSERT INTO table_name ( names_values | json_clause ) [ IF NOT EXISTS ] [ USING update_parameter ( AND update_parameter )* ] names_values ::= names VALUES tuple_literal json_clause ::= JSON string [ DEFAULT ( NULL | UNSET ) ] names ::= '(' column_name ( ',' column_name )* ')'
예
INSERT INTO "myGSGKeyspace".employees_tbl (id, name, project, region, division, role, pay_scale, vacation_hrs, manager_id) VALUES ('012-34-5678','Russ','NightFlight','US','Engineering','IC',3,12.5, '234-56-7890') ;
파라미터 업데이트
INSERT
에서 update_parameter
로 지원하는 값은 다음과 같습니다.
TTL
— 시간 값(초)입니다. 구성 가능한 최댓값은 630,720,000초로 20년에 해당합니다.TIMESTAMP
- 로 알려진 표준 기본 시간 이후의 마이크로초 수를 나타내는bigint
값입니다.epoch: 1970년 1월 1일 00:00:00 GMT. Amazon Keyspaces의 타임스탬프는 과거 2일에서 미래 5분 사이의 범위여야 합니다.
예
INSERT INTO
my_table
(userid, time, subject, body, user) VALUES (B79CB3BA-745E-5D9A-8903-4A02327A7E09, 96a29100-5e25-11ec-90d7-b5d91eceda0a, 'Message', 'Hello','205.212.123.123') USING TTL 259200;
JSON 지원
JSON인코딩된 데이터 유형을 Amazon Keyspaces 데이터 유형에 매핑하는 테이블은 섹션을 참조하세요JSON Amazon Keyspaces 데이터 형식 인코딩.
JSON
키워드를 사용하여 JSON
인코딩 맵을 단일 행으로 삽입할 수 있습니다. 테이블에는 있지만 JSON 삽입 문에는 생략된 열의 경우 DEFAULT UNSET
를 사용하여 기존 값을 보존합니다. DEFAULT NULL
를 사용하여 생략된 열의 각 행에 NULL 값을 쓰고 기존 값을 덮어씁니다(표준 쓰기 요금 적용). DEFAULT NULL
는 기본 옵션입니다.
예
INSERT INTO "myGSGKeyspace".employees_tbl JSON '{"id":"012-34-5678", "name": "Russ", "project": "NightFlight", "region": "US", "division": "Engineering", "role": "IC", "pay_scale": 3, "vacation_hrs": 12.5, "manager_id": "234-56-7890"}';
JSON 데이터에 중복 키가 포함된 경우 Amazon Keyspaces는 키의 마지막 값을 저장합니다(Apache Cassandra와 유사). 중복 키가 id
인 다음 예제에서는 234-56-7890
값이 사용됩니다.
예
INSERT INTO "myGSGKeyspace".employees_tbl JSON '{"id":"012-34-5678", "name": "Russ", "project": "NightFlight", "region": "US", "division": "Engineering", "role": "IC", "pay_scale": 3, "vacation_hrs": 12.5, "id": "234-56-7890"}';
UPDATE
UPDATE
문을 사용하여 테이블의 행을 수정합니다.
구문
update_statement ::= UPDATE table_name [ USING update_parameter ( AND update_parameter )* ] SET assignment ( ',' assignment )* WHERE where_clause [ IF ( EXISTS | condition ( AND condition )*) ] update_parameter ::= ( integer | bind_marker ) assignment ::= simple_selection '=' term | column_name '=' column_name ( '+' | '-' ) term | column_name '=' list_literal '+' column_name simple_selection ::= column_name | column_name '[' term ']' | column_name '.' `field_name condition ::= simple_selection operator term
예
UPDATE "myGSGKeyspace".employees_tbl SET pay_scale = 5 WHERE id = '567-89-0123' AND division = 'Marketing' ;
counter
를 증가하려면 다음 구문을 사용합니다. 자세한 내용은 카운터 단원을 참조하십시오.
UPDATE ActiveUsers SET counter = counter + 1 WHERE user = A70FE1C0-5408-4AE3-BE34-8733E5K09F14 AND action = 'click';
파라미터 업데이트
UPDATE
에서 update_parameter
로 지원하는 값은 다음과 같습니다.
TTL
— 시간 값(초)입니다. 구성 가능한 최댓값은 630,720,000초로 20년에 해당합니다.TIMESTAMP
- 로 알려진 표준 기본 시간 이후의 마이크로초 수를 나타내는bigint
값입니다.epoch: 1970년 1월 1일 00:00:00 GMT. Amazon Keyspaces의 타임스탬프는 과거 2일에서 미래 5분 사이의 범위여야 합니다.
예
UPDATE
my_table
(userid, time, subject, body, user) VALUES (B79CB3BA-745E-5D9A-8903-4A02327A7E09, 96a29100-5e25-11ec-90d7-b5d91eceda0a, 'Message', 'Hello again','205.212.123.123') USING TIMESTAMP '2022-11-03 13:30:54+0400';
DELETE
DELETE
문을 사용하여 테이블에서 행을 제거합니다.
구문
delete_statement ::= DELETE [ simple_selection ( ',' simple_selection ) ] FROM table_name [ USING update_parameter ( AND update_parameter )* ] WHERE where_clause [ IF ( EXISTS | condition ( AND condition )*) ] simple_selection ::= column_name | column_name '[' term ']' | column_name '.' `field_name condition ::= simple_selection operator term
위치:
-
table_name
는 삭제하려는 행이 포함된 테이블입니다.
예
DELETE manager_id FROM "myGSGKeyspace".employees_tbl WHERE id='789-01-2345' AND division='Executive' ;
DELETE
은 다음 값을 update_parameter
로 지원합니다.
TIMESTAMP
- 로 알려진 표준 기본 시간 이후의 마이크로초 수를 나타내는bigint
값입니다.epoch: 1970년 1월 1일 00:00:00 GMT.