

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon Keyspaces(Apache Cassandra용)에 대한 CQL 언어 참조
<a name="cql"></a>

Amazon Keyspaces 엔드포인트에 연결한 후에는 Cassandra 쿼리 언어(CQL)를 사용하여 데이터베이스 작업을 합니다. CQL은 여러 면에서 구조화 쿼리 언어(SQL)와 비슷합니다.
+ **CQL 요소** - 이 섹션에서는 식별자, 상수, 용어 및 데이터 유형을 포함하여 Amazon Keyspaces에서 지원되는 CQL의 기본 요소를 다룹니다. 문자열 유형, 숫자 유형, 컬렉션 유형 등과 같은 개념을 설명합니다.
+ **데이터 정의 언어(DDL)** - DDL 문은 Amazon Keyspaces의 키스페이스 및 테이블과 같은 데이터 구조를 관리하는 데 사용됩니다. 이 섹션에서는 키스페이스 및 테이블을 생성, 변경 및 삭제하고 특정 시점 백업에서 테이블을 복원하기 위한 문을 다룹니다.
+ **데이터 조작 언어(DML) ** - DML 문은 테이블 내의 데이터를 관리하는 데 사용됩니다. 이 섹션에서는 데이터 선택, 삽입, 업데이트 및 삭제에 대한 설명을 다룹니다. 또한 `IN` 연산자 사용, 결과 주문, 페이지 매김과 같은 고급 쿼리 기능에 대해서도 설명합니다.
+ **내장 함수** - Amazon Keyspaces는 CQL 문에 사용할 수 있는 다양한 내장 스칼라 함수를 지원합니다. 이 섹션에서는 사용 예제를 포함하여 이러한 함수에 대한 개요를 제공합니다.

이 주제에서는 Amazon Keyspaces에서 CQL을 효과적으로 사용하기 위한 자세한 구문, 예제 및 모범 사례를 찾을 수 있습니다.

**Topics**
+ [Amazon Keyspaces의 Cassandra 쿼리 언어(CQL) 요소](cql.elements.md)
+ [Amazon Keyspaces의 DDL 문(데이터 정의 언어)](cql.ddl.md)
+ [Amazon Keyspaces의 DML 문(데이터 조작 언어)](cql.dml.md)
+ [Amazon Keyspaces의 기본 제공 함수](cql.functions.md)

# Amazon Keyspaces의 Cassandra 쿼리 언어(CQL) 요소
<a name="cql.elements"></a>

식별자, 상수, 용어, 데이터 유형을 포함하여 Amazon Keyspaces에서 지원하는 Cassandra 쿼리 언어(CQL) 요소에 대해 알아보세요.

**Topics**
+ [identifier](#cql.elements.identifier)
+ [constants](#cql.elements.constants)
+ [term](#cql.elements.term)
+ [데이터 타입](#cql.data-types)
+ [Amazon Keyspaces 데이터 유형의 JSON 인코딩](#cql.data-types.JSON)

## 식별자
<a name="cql.elements.identifier"></a>

식별자(또는 이름)는 테이블, 열, 기타 객체를 식별하는 데 사용됩니다. 식별자를 인용하거나 인용하지 않을 수 있습니다. 다음이 적용됩니다.

```
identifier          ::=  unquoted_identifier | quoted_identifier
unquoted_identifier ::=  re('[a-zA-Z][a-zA-Z0-9_]*')
quoted_identifier   ::=  '"' (any character where " can appear if doubled)+ '"'
```

## 상수
<a name="cql.elements.constants"></a>

다음 상수가 정의됩니다.

```
constant ::=  string | integer | float | boolean | uuid | blob | NULL
string   ::=  '\'' (any character where ' can appear if doubled)+ '\''
              '$$' (any character other than '$$') '$$'
integer  ::=  re('-?[0-9]+')
float    ::=  re('-?[0-9]+(\.[0-9]*)?([eE][+-]?[0-9+])?') | NAN | INFINITY
boolean  ::=  TRUE | FALSE
uuid     ::=  hex{8}-hex{4}-hex{4}-hex{4}-hex{12}
hex      ::=  re("[0-9a-fA-F]")
blob     ::=  '0' ('x' | 'X') hex+
```

## 용어
<a name="cql.elements.term"></a>

용어는 지원되는 값의 종류를 나타냅니다. 용는 다음에 따라 정의됩니다.

```
term                 ::=  constant | literal | function_call | arithmetic_operation | type_hint | bind_marker
literal              ::=  collection_literal | tuple_literal
function_call        ::=  identifier '(' [ term (',' term)* ] ')'
arithmetic_operation ::=  '-' term | term ('+' | '-' | '*' | '/' | '%') term
```

## 데이터 타입
<a name="cql.data-types"></a>

Amazon Keyspaces는 다음 데이터 형식을 지원합니다.

### 문자열 형식
<a name="cql.data-types.string"></a>


****  

| 데이터 유형 | 설명 | 
| --- | --- | 
|  `ascii`  | ASCII 문자열을 나타냅니다. | 
|  `text`  | UTF-8 인코딩 문자열을 나타냅니다. | 
|  `varchar`  |  UTF-8 인코딩 문자열(`varchar`은 `text`의 별칭)을 나타냅니다.  | 

### 숫자형
<a name="cql.data-types.numeric"></a>


****  

| 데이터 유형 | 설명 | 
| --- | --- | 
|  `bigint`  | 64비트 서명 길이를 나타냅니다. | 
|  `counter`  | 64비트 서명 정수 카운터를 나타냅니다. 자세한 내용은 [카운터](#cql.data-types.numeric.counters) 단원을 참조하십시오. | 
|  `decimal`  | 가변 정밀도 십진수를 나타냅니다. | 
|  `double`  | 64비트 IEEE 754 부동 소수점을 나타냅니다. | 
|  `float`  | 32비트 IEEE 754 부동 소수점을 나타냅니다. | 
|  `int`  |  32비트 서명 정수를 나타냅니다.  | 
|  `varint`  |  \$1/-10^38 범위 내의 정수 값을 나타냅니다.  | 

#### 카운터
<a name="cql.data-types.numeric.counters"></a>

`counter` 열에는 64비트 서명 정수가 포함됩니다. 카운터 값은 [UPDATE](cql.dml.update.md) 문을 사용하여 높이거나 내릴 수 있으며 직접적으로 설정할 수 없습니다. 따라서 `counter` 열은 카운트를 추적하는 데 유용합니다. 예를 들어 카운터를 사용하여 로그 파일의 항목 수 또는 소셜 네트워크에서 게시물 조회수를 추적할 수 있습니다. `counter` 열에 적용되는 제한은 다음과 같습니다.
+ `counter` 유형의 열은 테이블 `primary key`의 일부가 될 수 없습니다.
+ `counter` 유형 열이 하나 이상 포함된 테이블의 경우 해당 테이블의 모든 열이 `counter` 유형이어야 합니다.

카운터 업데이트가 실패하는 경우(예: 시간 초과 또는 Amazon Keyspace와의 연결 끊김) 클라이언트는 카운터 값이 업데이트되었는지 여부를 알 수 없습니다. 업데이트가 다시 시도되면 카운터 값에 대한 업데이트가 다시 적용될 수 있습니다.

### Blob 유형
<a name="cql.data-types.blob"></a>


****  

| 데이터 유형 | 설명 | 
| --- | --- | 
|  `blob`  | 임의의 바이트를 나타냅니다. | 

### 부울 유형
<a name="cql.data-types.boolean"></a>


****  

| 데이터 유형 | 설명 | 
| --- | --- | 
|  `boolean`  | true 또는 false를 나타냅니다. | 

### 시간 관련 유형
<a name="cql.data-types.time"></a>


****  

| 데이터 유형 | 설명 | 
| --- | --- | 
|  `date`  | 형식의 문자열입니다<yyyy>-<mm>-<dd>. | 
|  `timestamp`  | epoch(1970년 1월 1일 00:00:00 GMT) 이후의 날짜 및 시간을 밀리초 단위로 나타내는 64비트 서명 정수. | 
|  `timeuuid`  | [버전 1 UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address))를 나타냅니다. | 

### 컬렉션 유형
<a name="cql.data-types.collection"></a>


****  

| 데이터 유형 | 설명 | 
| --- | --- | 
|  `list`  | 정렬된 리터럴 요소 모음을 나타냅니다. | 
|  `map`  | 정렬되지 않은 키-값 페어 모음을 나타냅니다. | 
|  `set`  | 하나 이상의 리터럴 요소의 순서가 지정되지 않은 모음을 나타냅니다. | 

모음 유형 다음에 다른 데이터 유형(예: `TEXT` 또는 `INT`)을 각괄호로 묶어 집합 열을 선언합니다. 다음 예제와 같이 `TEXT`의 `SET`이 있는 열을 만들거나 `TEXT`의 `MAP`과 `INT` 키-값 쌍을 만들 수 있습니다.

```
SET <TEXT>
MAP <TEXT, INT>
```

**비프로즌 수집을 사용하면 각 개별 수집 요소를 업데이트할 수 있습니다. 개별 요소에 대해 클라이언트 측 타임스탬프 및 Time to Live(TTL) 설정이 저장됩니다.

수집 유형에 `FROZEN` 키워드를 사용하면 수집의 값이 변경할 수 없는 단일 값으로 직렬화되며 Amazon Keyspaces는 이를 `BLOB`처럼 취급합니다. 이는 **프로즌 수집입니다. `INSERT` 또는 `UPDATE` 문은 프로즌 수집 전체를 덮어씁니다. 프로즌 수집 내의 개별 요소는 업데이트할 수 없습니다.

클라이언트 측 타임스탬프와 Time to Live(TTL) 설정은 개별 요소가 아닌 프로즌 수집 전체에 적용됩니다. `Frozen` 수집 열은 `PRIMARY KEY` 테이블의 일부일 수 있습니다.

프로즌 수집을 중첩할 수 있습니다. 예를 들어 다음 예제와 같이 `MAP`이 `FROZEN` 키워드를 사용하는 경우 `SET`에서 `MAP`를 정의할 수 있습니다.

```
SET <FROZEN> <MAP <TEXT, INT>>>
```

Amazon Keyspaces는 기본적으로 최대 8개 수준의 동결 수집 중첩을 지원합니다. 자세한 내용은 [Amazon Keyspaces 서비스 할당량](quotas.md#table) 단원을 참조하십시오. Apache Cassandra와의 기능적 차이에 대한 자세한 내용은 [`FROZEN` 컬렉션](functional-differences.md#functional-differences.frozen-collections) 섹션을 참조하십시오. CQL 구문에 대한 자세한 내용은 [CREATE TABLE](cql.ddl.table.md#cql.ddl.table.create) 및 [ALTER TABLE](cql.ddl.table.md#cql.ddl.table.alter) 섹션을 참조하세요.

### 튜플 유형
<a name="cql.data-types.tuple"></a>

`tuple` 데이터 유형은 한정된 리터럴 요소 그룹을 나타냅니다. `user defined type` 대신 튜플을 사용할 수 있습니다. 튜플에는 `FROZEN` 키워드를 사용할 필요가 없습니다. 튜플은 항상 프로즌 상태이고 요소를 개별적으로 업데이트할 수 없기 때문입니다.

### 기타 유형
<a name="cql.data-types.other"></a>


****  

| 데이터 유형 | 설명 | 
| --- | --- | 
|  `inet`  | IP 주소를 IPv4 또는 IPv6 형식으로 나타내는 문자열입니다. | 

### 정적
<a name="cql.data-types.static"></a>

클러스터링 열이 있는 Amazon Keyspaces 테이블에서 `STATIC` 키워드를 사용하여 다양한 유형의 정적 열을 생성할 수 있습니다.

다음 문은 이에 대한 예입니다.

```
my_column INT STATIC
```

정적 열로 작업하기에 대한 자세한 내용은 [Amazon Keyspaces의 정적 열에 대한 용량 소비 추정](static-columns.md) 섹션을 참조하세요.

### 사용자 정의 유형(UDTs)
<a name="cql.data-types.user-defined"></a>

Amazon Keyspaces는 사용자 정의 유형(UDTs 지원합니다. 유효한 Amazon Keyspaces 데이터 형식을 사용하여 컬렉션 및 기타 기존 UDT를 포함한 UDTs. 키스페이스에서 UDTs를 생성하고 이를 사용하여 키스페이스의 모든 테이블에서 열을 정의할 수 있습니다.

CQL 구문에 대한 자세한 내용은 [사용자 정의 유형(UDTs)](cql.ddl.type.md) 섹션을 참조하세요. UDTs[User-defined types (UDTs) in Amazon Keyspaces](udts.md).

키스페이스당 지원되는 UDTs 수, 지원되는 중첩 수준, UDTs와 관련된 기타 기본값 및 할당량을 검토하려면 섹션을 참조하세요[Amazon Keyspaces의 사용자 정의 유형(UDTs)에 대한 할당량 및 기본값](quotas.md#quotas-udts).

## Amazon Keyspaces 데이터 유형의 JSON 인코딩
<a name="cql.data-types.JSON"></a>

Amazon Keyspaces는 Apache Cassandra와 동일한 JSON 데이터 유형 매핑을 제공합니다. 다음 표는 Amazon Keyspaces가 `INSERT JSON` 문에서 허용하는 데이터 유형과 Amazon Keyspaces가 `SELECT JSON` 문과 함께 데이터를 반환할 때 사용하는 데이터 유형을 설명합니다.

`float`, `int`, `UUID`, `date` 등의 단일 필드 데이터 유형의 경우 데이터를 `string`로 삽입할 수도 있습니다. `tuple`, `map`, `list` 등의 복합 데이터 유형 및 수집의 경우 데이터를 JSON이나 인코딩된 `JSON string` 형식으로 삽입할 수도 있습니다.


****  

| JSON 데이터 유형 | `INSERT JSON` 문에서 허용되는 데이터 유형 | `SELECT JSON` 문에서 반환되는 데이터 유형 | 참고 | 
| --- | --- | --- | --- | 
|  `ascii`  | string | string | JSON 문자 이스케이프 `\u`을(를) 사용합니다. | 
|  `bigint`  | integer, string | integer | 문자열은 유효한 64비트 정수여야 합니다. | 
|  `blob`  | string | string | 문자열은 `0x` 다음에 16진수의 짝수로 시작해야 합니다. | 
|  `boolean`  | boolean, string | boolean | 문자열은 `true` 또는 `false`여야 합니다. | 
|  `date`  | string | string | 날짜 형식 `YYYY-MM-DD`, 시간대 UTC. | 
|  `decimal`  | integer, float, string | float | 클라이언트 측 디코더에서 32비트 또는 64비트 IEEE-754 부동 소수점 정밀도를 초과할 수 있습니다. | 
|  `double`  | integer, float, string | float | 문자열은 유효한 정수 또는 부동 소수점이어야 합니다. | 
|  `float`  | integer, float, string | float | 문자열은 유효한 정수 또는 부동 소수점이어야 합니다. | 
|  `inet`  | string | string | IPv4 주소 또는 IPv6 주소. | 
|  `int`  | integer, string | integer | 문자열은 유효한 32비트 정수여야 합니다. | 
|  `list`  | list, string | list | 네이티브 JSON 목록 표현을 사용합니다. | 
|  `map`  | map, string | map | 네이티브 JSON 맵 표현을 사용합니다. | 
|  `smallint`  | integer, string | integer | 문자열은 유효한 16비트 정수여야 합니다. | 
|  `set`  | list, string | list | 네이티브 JSON 목록 표현을 사용합니다. | 
|  `text`  | string | string | JSON 문자 이스케이프 `\u`을(를) 사용합니다. | 
|  `time`  | string | string | 시간대 형식`HH-MM-SS[.fffffffff]`. | 
|  `timestamp`  | integer, string | string | 타임스탬프입니다. 문자열 상수를 사용하면 타임스탬프를 날짜로 저장할 수 있습니다. `YYYY-MM-DD HH:MM:SS.SSS` 형식의 날짜 스탬프가 반환됩니다. | 
|  `timeuuid`  | string | string | 1 UUID를 입력합니다. UUID 형식에 대한 내용은 [constants](#cql.elements.constants)을 참조하세요. | 
|  `tinyint`  | integer, string | integer | 문자열은 유효한 8비트 정수여야 합니다. | 
|  `tuple`  | list, string | list | 네이티브 JSON 목록 표현을 사용합니다. | 
|  `UDT`  | map, string | map | 필드 이름을 키로 하는 기본 JSON 맵 표현을 사용합니다. | 
|  `uuid`  | string | string | UUID 형식에 대한 내용은 [constants](#cql.elements.constants)을 참조하세요. | 
|  `varchar`  | string | string | JSON 문자 이스케이프 `\u`을(를) 사용합니다. | 
|  `varint`  | integer, string | integer | 가변 길이. 클라이언트 측 디코더에서 32비트 또는 64비트 정수가 오버플로될 수 있습니다. | 

# Amazon Keyspaces의 DDL 문(데이터 정의 언어)
<a name="cql.ddl"></a>

*데이터 정의 언어*(DDL)는 Amazon Keyspaces(Apache Cassandra용)에서 키스페이스 및 테이블과 같은 데이터 구조를 관리하는 데 사용하는 Cassandra 쿼리 언어(CQL) 문 집합입니다. DDL을 사용하여 이러한 데이터 구조를 생성하고, 생성 후 수정하고, 더 이상 사용하지 않을 때는 제거할 수 있습니다. Amazon Keyspaces는 DDL 작업을 비동기적으로 수행합니다. 비동기 작업이 완료되었는지 확인하는 방법에 대한 자세한 내용은 [키스페이스 및 테이블의 비동기 생성 및 삭제](functional-differences.md#functional-differences.table-keyspace-management) 섹션을 참조하세요.

 다음 DDL 문이 지원됩니다.
+  [CREATE KEYSPACE](cql.ddl.keyspace.md#cql.ddl.keyspace.create) 
+  [ALTER KEYSPACE](cql.ddl.keyspace.md#cql.ddl.keyspace.alter) 
+  [DROP KEYSPACE](cql.ddl.keyspace.md#cql.ddl.keyspace.drop) 
+  [사용](cql.ddl.keyspace.md#cql.ddl.keyspace.use) 
+  [CREATE TABLE](cql.ddl.table.md#cql.ddl.table.create) 
+  [ALTER TABLE](cql.ddl.table.md#cql.ddl.table.alter) 
+  [RESTORE TABLE](cql.ddl.table.md#cql.ddl.table.restore) 
+  [DROP TABLE](cql.ddl.table.md#cql.ddl.table.drop) 
+  [유형 생성](cql.ddl.type.md#cql.ddl.type.create) 
+  [DROP 유형](cql.ddl.type.md#cql.ddl.type.drop) 

**Topics**
+ [Keyspaces](cql.ddl.keyspace.md)
+ [테이블](cql.ddl.table.md)
+ [사용자 정의 유형(UDTs)](cql.ddl.type.md)

# Keyspaces
<a name="cql.ddl.keyspace"></a>

**키스페이스는 하나 이상의 애플리케이션과 관련된 관련 테이블을 그룹화합니다. 관계형 데이터베이스 관리 시스템(RDBMS)의 경우, 키스페이스는 데이터베이스, 테이블스페이스, 또는 유사한 구조와 거의 유사합니다.

**참고**  
Apache Cassandra에서 키스페이스는 여러 스토리지 노드 간에 데이터가 복제되는 방식을 결정합니다. 하지만 Amazon Keyspaces는 완전 관리형 서비스이므로 스토리지 계층의 세부 정보를 자동으로 관리합니다. 따라서 Amazon Keyspaces의 키스페이스는 논리적 구조일 뿐이며 기본적인 물리적 스토리지와는 관련이 없습니다.

Amazon Keyspaces 키스페이스의 할당량 한도 및 제약 조건에 대한 자세한 내용은 [Amazon Keyspaces(Apache Cassandra용)에 대한 할당량](quotas.md)을 참조하세요.

**Topics**
+ [CREATE KEYSPACE](#cql.ddl.keyspace.create)
+ [ALTER KEYSPACE](#cql.ddl.keyspace.alter)
+ [DROP KEYSPACE](#cql.ddl.keyspace.drop)
+ [USE](#cql.ddl.keyspace.use)

## CREATE KEYSPACE
<a name="cql.ddl.keyspace.create"></a>

`CREATE KEYSPACE` 문을 사용하여 새 키스페이스를 생성합니다.

**구문**

```
create_keyspace_statement ::= 
    CREATE KEYSPACE [ IF NOT EXISTS ] keyspace_name
    WITH options
```

위치:
+ `keyspace_name`은 생성할 키스페이스 이름입니다.
+ *옵션*은 다음 중 하나 이상입니다.
  + `REPLICATION` — 키스페이스의 복제 전략을 나타내는 맵:
    + `SingleRegionStrategy` — 단일 리전 키스페이스용. (필수)
    + `NetworkTopologyStrategy` - 2개 이상을 지정합니다 AWS 리전. 각 리전의 복제 계수는 3입니다. (선택 사항)
  + `DURABLE_WRITES` — Amazon Keyspace에 대한 쓰기는 항상 내구성이 뛰어나므로 이 옵션은 필수가 아닙니다. 하지만 지정하는 경우 값은 `true`이어야 합니다.
  + `TAGS` – 리소스를 생성할 때 연결할 키-값 페어 태그의 목록입니다. (선택 사항)

**예제**

다음과 같이 키스페이스를 생성합니다.

```
CREATE KEYSPACE my_keyspace
    WITH REPLICATION = {'class': 'SingleRegionStrategy'} and TAGS ={'key1':'val1', 'key2':'val2'} ;
```

다중 리전 키스페이스를 생성하려면를 지정`NetworkTopologyStrategy`하고 2개 이상을 포함합니다 AWS 리전. 각 리전의 복제 계수는 3입니다.

```
CREATE KEYSPACE my_keyspace
    WITH REPLICATION = {'class':'NetworkTopologyStrategy', 'us-east-1':'3', 'ap-southeast-1':'3','eu-west-1':'3'};
```

## ALTER KEYSPACE
<a name="cql.ddl.keyspace.alter"></a>

다음 *옵션*에 `ALTER KEYSPACE WITH` 문을 사용할 수 있습니다.
+ `REPLICATION` -이 옵션을 사용하여 키스페이스에 새 AWS 리전 복제본을 추가합니다. 단일 리전 또는 다중 리전 키스페이스에 새 리전을 추가할 수 있습니다.
+ `TAGS` -이 옵션을 사용하여 키스페이스에서 태그를 추가하거나 제거합니다.

**구문**

```
alter_keyspace_statement ::= 
    ALTER KEYSPACE keyspace_name
    WITH options
```

위치:
+ `keyspace_name`는 변경할 키스페이스의 이름입니다.
+ *옵션은* 다음 중 하나입니다.
  + `ADD | DROP TAGS` — 키스페이스에서 추가하거나 제거할 키-값 페어 태그의 목록입니다.
  + `REPLICATION` - 키스페이스의 복제 전략을 나타내는 맵입니다.
    + `class`-는 키스페이스를 다중 리전 키스페이스로 `NetworkTopologyStrategy` 정의합니다.
    + `region`-이 키스페이스 AWS 리전 에 대해 하나 더 지정합니다. 각 리전의 복제 계수는 3입니다.
    + `CLIENT_SIDE_TIMESTAMPS` - 기본값은 입니다`DISABLED`. 상태를 로만 변경할 수 있습니다`ENABLED`.

**예시**

다음 예제와 같이 키스페이스를 변경하여 태그를 추가합니다.

```
ALTER KEYSPACE my_keyspace ADD TAGS {'key1':'val1', 'key2':'val2'};
```

세 번째 리전을 다중 리전 키스페이스에 추가하려면 다음 문을 사용할 수 있습니다.

```
ALTER KEYSPACE my_keyspace
WITH REPLICATION = {
    'class': 'NetworkTopologyStrategy',
    'us-east-1': '3',
    'us-west-2': '3',
    'us-west-1': '3'
} AND CLIENT_SIDE_TIMESTAMPS = {'status': 'ENABLED'};
```

## DROP KEYSPACE
<a name="cql.ddl.keyspace.drop"></a>

`DROP KEYSPACE` 문을 사용하여 테이블과 같은 모든 콘텐츠를 포함한 키스페이스를 제거합니다.

**구문**

```
drop_keyspace_statement ::= 
    DROP KEYSPACE [ IF EXISTS ] keyspace_name
```

위치:
+ **keyspace\$1name은 삭제할 키스페이스의 이름입니다.

**예제**

```
DROP KEYSPACE my_keyspace;
```

## USE
<a name="cql.ddl.keyspace.use"></a>

`USE` 문을 사용하여 현재 키스페이스를 정의합니다. 이렇게 하면 키스페이스 접두사가 포함된 정규화된 이름을 사용하지 않고도 테이블 및 유형과 같은 특정 키스페이스에 바인딩된 객체를 참조할 수 있습니다.

**구문**

```
use_statement ::= 
    USE keyspace_name
```

위치:
+ *keyspace\$1name*은 사용할 키스페이스의 이름입니다.

**예제**

```
USE my_keyspace;
```

# 테이블
<a name="cql.ddl.table"></a>

*테이블*은 Amazon Keyspaces의 기본 데이터 구조입니다. 테이블의 데이터는 행과 열로 구성됩니다. 이러한 열의 하위 집합은 파티션 키 지정을 통해 파티셔닝(및 데이터 배치)을 결정하는 데 사용됩니다.

또 다른 열 집합을 클러스터링 열로 정의할 수 있습니다. 즉, 이러한 열 집합을 쿼리 실행 시 조건자로 사용할 수 있습니다.

기본적으로 *온디맨드* 처리량 용량을 갖춘 새 테이블이 생성됩니다. 새 테이블과 기존 테이블의 용량 모드를 변경할 수 있습니다. 읽기/쓰기 용량 처리량 모드에 대한 자세한 내용은 [Amazon Keyspaces의 읽기/쓰기 용량 모드 구성](ReadWriteCapacityMode.md)를 참조하세요.

프로비저닝된 모드의 테이블의 경우 선택적 `AUTOSCALING_SETTINGS`를 구성할 수 있습니다. Amazon Keyspaces 오토 스케일링 및 사용 가능한 옵션에 대한 자세한 내용은 [기존 테이블에서 오토 스케일링 구성](autoscaling.configureTable.md) 섹션을 참조하세요.

Amazon Keyspaces 테이블의 할당량 한도 및 제약 조건에 대한 자세한 내용은 [Amazon Keyspaces(Apache Cassandra용)에 대한 할당량](quotas.md)을 참조하세요.

**Topics**
+ [CREATE TABLE](#cql.ddl.table.create)
+ [ALTER TABLE](#cql.ddl.table.alter)
+ [RESTORE TABLE](#cql.ddl.table.restore)
+ [DROP TABLE](#cql.ddl.table.drop)

## CREATE TABLE
<a name="cql.ddl.table.create"></a>

`CREATE TABLE` 문을 사용하여 새 테이블을 만듭니다.

 **구문**

```
create_table_statement ::=  CREATE TABLE [ IF NOT EXISTS ] table_name
    '('
        column_definition 
        ( ',' column_definition )*
        [ ',' PRIMARY KEY '(' primary_key ')' ]
    ')' [ WITH table_options ]

column_definition      ::=  column_name cql_type [ FROZEN ][ STATIC ][ PRIMARY KEY]

primary_key            ::=  partition_key [ ',' clustering_columns ]

partition_key          ::=  column_name
                              | '(' column_name ( ',' column_name )* ')'

clustering_columns     ::=  column_name ( ',' column_name )*

table_options          ::=  [table_options]
                              | CLUSTERING ORDER BY '(' clustering_order ')' [ AND table_options ]
                              | cdc
                              | CUSTOM_PROPERTIES
                              | AUTOSCALING_SETTINGS
                              | default_time_to_live
                              | TAGS

clustering_order       ::=  column_name (ASC | DESC) ( ',' column_name (ASC | DESC) )*
```

위치:
+ `table_name`은 생성할 테이블의 이름입니다. 정규화된 이름에는 키스페이스 접두사가 포함됩니다. 또는 키스페이스 문을 사용하여 현재 `USE` 키스페이스를 설정할 수 있습니다.
+ `column_definition`은 다음 항목으로 구성됩니다.
  +  *`column_name`* – 열의 이름입니다.
  + `cql_type` — An Amazon Keyspaces 데이터 유형([데이터 타입](cql.elements.md#cql.data-types) 참조)
  + `FROZEN` - 사용자 정의 또는 유형`collection`(예: , `LIST` `SET`또는 `MAP`)인이 열을 고정으로 지정합니다. **프로즌 수집은 변경할 수 없는 단일 값으로 직렬화되고 `BLOB`처럼 취급됩니다. 자세한 내용은 [컬렉션 유형](cql.elements.md#cql.data-types.collection) 단원을 참조하십시오.
  + `STATIC` — 이 열을 정적 열로 지정합니다. 정적 열에는 동일한 파티션의 모든 행이 공유하는 값이 저장됩니다.
  + `PRIMARY KEY` — 이 열을 테이블의 프라이머리 키로 지정합니다.
+ `primary_key`은 다음 항목으로 구성됩니다.
  + `partition_key`
  + `clustering_columns`
+ `partition_key`:
  + 파티션 키는 단일 열이거나 둘 이상의 열로 구성된 복합 값일 수 있습니다. 프라이머리 키의 파티션 키 부분은 필수 입력 항목이며 이에 따라 Amazon Keyspaces가 데이터를 저장하는 방식이 결정됩니다.
+ `clustering_columns`:
  + 프라이머리 키의 선택적 클러스터링 열 부분에 따라 각 파티션 내에서 데이터가 클러스터링되고 정렬되는 방식이 결정됩니다.
+ `table_options`은 다음 항목으로 구성됩니다.
  + *`CLUSTERING ORDER BY`* — 테이블의 기본 클러스터링 순서는 `ASC`(오름차순) 정렬 방향의 클러스터링 키로 구성됩니다. 기본 정렬 동작을 재정의하도록 지정합니다.
  +  *`cdc`* - Amazon Keyspaces가 테이블에 대한 변경 데이터 캡처(CDC) 스트림을 생성할지 여부를 지정하는 부울입니다. 기본값은 `false`입니다. 스트림을 활성화할 `view type` 때를 지정하려면를 `CUSTOM_PROPERTIES` `cdc_specification`로 설정합니다.
  +  *`CUSTOM_PROPERTIES`* — Amazon Keyspace에만 적용되는 설정 맵.
    +  `capacity_mode`: 테이블에 읽기/쓰기 처리량 용량 모드를 지정합니다. 옵션은 `throughput_mode:PAY_PER_REQUEST` 및 `throughput_mode:PROVISIONED`입니다. 프로비저닝된 용량 모드에는 `read_capacity_units` 및 `write_capacity_units`가 입력으로 필요합니다. 기본값은 `throughput_mode:PAY_PER_REQUEST`입니다.
    +  `cdc_specification`: CDC 스트림`view_type`의를 지정합니다. 다음과 같은 옵션이 있습니다.
      + `NEW_AND_OLD_IMAGES` - 변경 전후 행의 두 버전입니다. 기본값입니다.
      + `NEW_IMAGE` - 변경 후 행의 버전입니다.
      + `OLD_IMAGE` - 변경 전 행의 버전입니다.
      + `KEYS_ONLY` - 변경된 행의 파티션 및 클러스터링 키입니다.

      CDC 스트림에 대한 자세한 내용은 섹션을 참조하세요[Amazon Keyspaces에서 변경 데이터 캡처(CDC) 스트림 작업](cdc.md). 코드 예제는 [Amazon Keyspaces에서 새 테이블을 생성할 때 CDC 스트림 활성화](keyspaces-enable-cdc-new-table.md) 섹션을 참조하세요.
    +  `client_side_timestamps`: 테이블에 대해 클라이언트 측 타임스탬프를 활성화할지 여부를 지정합니다. 옵션은 `{'status': 'enabled'}` 및 `{'status': 'disabled'}`입니다. 지정하지 않으면 기본값으로 `status:disabled`이 지정됩니다. 테이블에 대해 클라이언트 측 타임스탬프를 활성화한 후에는 이 설정을 비활성화할 수 없습니다.
    +  `encryption_specification`: 저장된 암호화에 대한 암호화 옵션을 지정합니다. 지정하지 않으면 기본값으로 `encryption_type:AWS_OWNED_KMS_KEY`이 지정됩니다. 암호화 옵션 고객 관리형 키에는 Amazon 리소스 이름(ARN) 형식의 AWS KMS 키가 입력으로 필요합니다`kms_key_identifier:ARN``kms_key_identifier:ARN`.
    +  `point_in_time_recovery`: 테이블에 대해 특정 시점 복원을 활성화할지 여부를 지정합니다. 옵션은 `status:enabled` 및 `status:disabled`입니다. 지정하지 않으면 기본값으로 `status:disabled`이 지정됩니다.
    + `replica_updates`: AWS 리전에 고유한 다중 리전 테이블의 설정을 지정합니다. 다중 리전 테이블의 경우 AWS 리전에 따라 테이블의 읽기 용량을 다르게 구성할 수 있습니다. 다음 파라미터를 구성하여 이 작업을 수행할 수 있습니다. 자세한 내용과 예제는 [Amazon Keyspaces에서 오토 스케일링을 사용하는 프로비저닝된 모드에서 다중 리전 테이블 생성](tables-mrr-create-provisioned.md) 섹션을 참조하세요.
      + `region` - 다음 설정이 있는 테이블 복제본 AWS 리전 의 입니다.
        + `read_capacity_units`
    +  `TTL`: 테이블에 대한 Time to Live 사용자 정의 설정을 활성화합니다. 활성화하려면 `status:enabled`을 사용합니다. 기본값은 `status:disabled`입니다. `TTL`이 활성화된 후에는 테이블에 대해 이 설정을 비활성화할 수 없습니다.
  + `AUTOSCALING_SETTINGS`에는 프로비저닝 모드의 테이블에 대한 다음과 같은 선택적 설정이 포함되어 있습니다. 자세한 내용과 예제는 [오토 스케일링을 사용하여 새 테이블 만들기](autoscaling.createTable.md) 섹션을 참조하세요.
    + `provisioned_write_capacity_autoscaling_update`:
      + `autoscaling_disabled` - 쓰기 용량에 대해 오토 스케일링을 활성화하려면 값을 `false`로 설정합니다. 기본값은 `true`입니다. (선택 사항)
      + `minimum_units` - 테이블이 항상 지원할 준비가 되어야 하는 쓰기 처리량의 최소 수준입니다. 값은 1에서 계정에 대해 초당 최대 처리량 할당량(기본값 40,000) 사이여야 합니다.
      + `maximum_units` - 테이블이 항상 지원할 준비가 되어야 하는 쓰기 처리량의 최대 수준입니다. 값은 1에서 계정에 대해 초당 최대 처리량 할당량(기본값 40,000) 사이여야 합니다.
      + `scaling_policy` - Amazon Keyspaces는 대상 추적 정책을 지원합니다. 오토 스케일링 대상은 테이블의 프로비저닝된 쓰기 용량입니다.
        + `target_tracking_scaling_policy_configuration` - 대상 추적 정책을 정의하려면 대상 값을 정의해야 합니다. 대상 추적 및 휴지 기간에 대한 자세한 내용을 알아보려면 *애플리케이션 오토 스케일링 사용 설명서*의 [대상 추적 조정 정책](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html)을 참조하세요.
          + `target_value` - 테이블의 목표 활용률입니다. Amazon Keyspaces 오토 스케일링은 프로비저닝된 용량 대비 소비된 용량의 비율을 이 값 또는 그 수준으로 유지하도록 합니다. `target_value`를 백분율로 지정합니다. 20에서 90 사이의 두 배입니다. (필수)
          + `scale_in_cooldown` - 규모 조정 활동 사이의 휴지 기간(초)으로, 다른 스케일 인 활동이 시작되기 전에 테이블을 안정화할 수 있습니다. 값이 제공되지 않으면 기본값은 0입니다. (선택 사항)
          + `scale_out_cooldown` - 규모 조정 활동 사이의 휴지 기간(초)으로, 다른 스케일 아웃 활동이 시작되기 전에 테이블을 안정화할 수 있습니다. 값이 제공되지 않으면 기본값은 0입니다. (선택 사항)
          + `disable_scale_in`: 테이블에 `scale-in`을 비활성화 또는 활성화할지 여부를 지정하는 `boolean`입니다. 이 파라미터는 기본적으로 비활성화되어 있습니다. `scale-in`을 켜려면 `boolean` 값을 `FALSE`로 설정합니다. 즉, 사용자를 대신하여 테이블의 용량이 자동으로 스케일 다운됩니다. (선택 사항) 
    + `provisioned_read_capacity_autoscaling_update`:
      + `autoscaling_disabled` - 읽기 용량에 대해 오토 스케일링을 활성화하려면 값을 `false`로 설정합니다. 기본값은 `true`입니다. (선택 사항)
      + `minimum_units` - 테이블이 항상 지원할 준비가 되어야 하는 처리량의 최소 수준입니다. 값은 1에서 계정에 대해 초당 최대 처리량 할당량(기본값 40,000) 사이여야 합니다.
      + `maximum_units` - 테이블이 항상 지원할 준비가 되어야 하는 처리량의 최대 수준입니다. 값은 1에서 계정에 대해 초당 최대 처리량 할당량(기본값 40,000) 사이여야 합니다.
      + `scaling_policy` - Amazon Keyspaces는 대상 추적 정책을 지원합니다. 오토 스케일링 대상은 테이블의 프로비저닝된 읽기 용량입니다.
        + `target_tracking_scaling_policy_configuration` - 대상 추적 정책을 정의하려면 대상 값을 정의해야 합니다. 대상 추적 및 휴지 기간에 대한 자세한 내용을 알아보려면 *애플리케이션 오토 스케일링 사용 설명서*의 [대상 추적 조정 정책](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html)을 참조하세요.
          + `target_value` - 테이블의 목표 활용률입니다. Amazon Keyspaces 오토 스케일링은 프로비저닝된 용량 대비 소비된 용량의 비율을 이 값 또는 그 수준으로 유지하도록 합니다. `target_value`를 백분율로 지정합니다. 20에서 90 사이의 두 배입니다. (필수)
          + `scale_in_cooldown` - 규모 조정 활동 사이의 휴지 기간(초)으로, 다른 스케일 인 활동이 시작되기 전에 테이블을 안정화할 수 있습니다. 값이 제공되지 않으면 기본값은 0입니다. (선택 사항)
          + `scale_out_cooldown` - 규모 조정 활동 사이의 휴지 기간(초)으로, 다른 스케일 아웃 활동이 시작되기 전에 테이블을 안정화할 수 있습니다. 값이 제공되지 않으면 기본값은 0입니다. (선택 사항)
          + `disable_scale_in`: 테이블에 `scale-in`을 비활성화 또는 활성화할지 여부를 지정하는 `boolean`입니다. 이 파라미터는 기본적으로 비활성화되어 있습니다. `scale-in`을 켜려면 `boolean` 값을 `FALSE`로 설정합니다. 즉, 사용자를 대신하여 테이블의 용량이 자동으로 스케일 다운됩니다. (선택 사항) 
    + `replica_updates`: 다중 리전 테이블의 AWS 리전 특정 Auto Scaling 설정을 지정합니다. 다중 리전 테이블의 경우 AWS 리전에 따라 테이블의 읽기 용량을 다르게 구성할 수 있습니다. 다음 파라미터를 구성하여 이 작업을 수행할 수 있습니다. 자세한 내용과 예제는 [Amazon Keyspaces에서 다중 리전 테이블에 대한 프로비저닝된 용량 및 오토 스케일링 설정 업데이트](tables-mrr-autoscaling.md) 섹션을 참조하세요.
      + `region` - 다음 설정이 있는 테이블 복제본 AWS 리전 의 입니다.
        + `provisioned_read_capacity_autoscaling_update`
          + `autoscaling_disabled` - 테이블의 읽기 용량에 대해 오토 스케일링을 활성화하려면 값을 `false`로 설정합니다. 기본값은 `true`입니다. (선택 사항) 
**참고**  
테이블의 모든 복제본에 대해 다중 리전 테이블의 오토 스케일링을 활성화하거나 비활성화해야 합니다.
          + `minimum_units` - 테이블이 항상 지원할 준비가 되어야 하는 읽기 처리량의 최소 수준입니다. 값은 1에서 계정에 대해 초당 최대 처리량 할당량(기본값 40,000) 사이여야 합니다.
          + `maximum_units` - 테이블이 항상 지원할 준비가 되어야 하는 읽기 처리량의 최대 수준입니다. 값은 1에서 계정에 대해 초당 최대 처리량 할당량(기본값 40,000) 사이여야 합니다.
          + `scaling_policy` - Amazon Keyspaces는 대상 추적 정책을 지원합니다. 오토 스케일링 대상은 테이블의 프로비저닝된 읽기 용량입니다.
            + `target_tracking_scaling_policy_configuration` - 대상 추적 정책을 정의하려면 대상 값을 정의해야 합니다. 대상 추적 및 휴지 기간에 대한 자세한 내용을 알아보려면 *애플리케이션 오토 스케일링 사용 설명서*의 [대상 추적 조정 정책](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html)을 참조하세요.
              + `target_value` - 테이블의 목표 활용률입니다. Amazon Keyspaces 오토 스케일링은 프로비저닝된 읽기 용량 대비 소비된 읽기 용량의 비율을 이 값 또는 그 수준으로 유지하도록 합니다. `target_value`를 백분율로 지정합니다. 20에서 90 사이의 두 배입니다. (필수)
              + `scale_in_cooldown` - 규모 조정 활동 사이의 휴지 기간(초)으로, 다른 스케일 인 활동이 시작되기 전에 테이블을 안정화할 수 있습니다. 값이 제공되지 않으면 기본값은 0입니다. (선택 사항)
              + `scale_out_cooldown` - 규모 조정 활동 사이의 휴지 기간(초)으로, 다른 스케일 아웃 활동이 시작되기 전에 테이블을 안정화할 수 있습니다. 값이 제공되지 않으면 기본값은 0입니다. (선택 사항)
              + `disable_scale_in`: 테이블에 `scale-in`을 비활성화 또는 활성화할지 여부를 지정하는 `boolean`입니다. 이 파라미터는 기본적으로 비활성화되어 있습니다. `scale-in`을 켜려면 `boolean` 값을 `FALSE`로 설정합니다. 즉, 사용자를 대신하여 테이블의 읽기 용량이 자동으로 스케일 다운됩니다. (선택 사항) 
  + `default_time_to_live` — 테이블의 기본 Time to Live 설정(초 단위)입니다.
  + `TAGS` – 리소스를 생성할 때 연결할 키-값 페어 태그의 목록입니다.
  + `clustering_order`은 다음 항목으로 구성됩니다.
    +  *`column_name`* – 열의 이름입니다.
    +  *`ASC | DESC`* — 오름차순(`ASC`) 또는 내림차순(`DESC`) 순서 수정자를 설정합니다. 지정하지 않으면 기본 순서로 ASC가 지정됩니다.

**예제**

```
CREATE TABLE IF NOT EXISTS my_keyspace.my_table (
                                            id text,
                                            name text,
                                            region text,
                                            division text,
                                            project text,
                                            role text,
                                            pay_scale int,
                                            vacation_hrs float,
                                            manager_id text,
                                            PRIMARY KEY (id,division))
                                            WITH CUSTOM_PROPERTIES={
                                                'capacity_mode':{
                                                        'throughput_mode': 'PROVISIONED', 'read_capacity_units': 10, 'write_capacity_units': 20
                                                    },
                                                'point_in_time_recovery':{'status': 'enabled'},
                                                'encryption_specification':{
                                                        'encryption_type': 'CUSTOMER_MANAGED_KMS_KEY', 
                                                        'kms_key_identifier':'arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111'
                                                    }
                                            }
                                            AND CLUSTERING ORDER BY (division ASC) 
                                            AND TAGS={'key1':'val1', 'key2':'val2'}
                                            AND default_time_to_live = 3024000;
```

클러스터링 열을 사용하는 테이블의 경우 테이블 정의에서 클러스터링이 아닌 열을 고정으로 선언할 수 있습니다. 정적 열에 대한 자세한 내용은 [Amazon Keyspaces의 정적 열에 대한 용량 소비 추정](static-columns.md)을 참조하세요.

**예제**

```
CREATE TABLE my_keyspace.my_table (
                                            id int,
                                            name text,
                                            region text,
                                            division text,
                                            project text STATIC,
                                            PRIMARY KEY (id,division));
```

사용자 정의 유형(UDT)을 사용하는 열이 있는 테이블을 생성할 수 있습니다. 예제의 첫 번째 문은 유형을 생성하고 두 번째 문은 유형을 사용하는 열이 있는 테이블을 생성합니다.

**예제**

```
CREATE TYPE my_keyspace."udt""N@ME" (my_field int);
CREATE TABLE my_keyspace.my_table (my_col1 int pri key, my_col2 "udt""N@ME");
```

## ALTER TABLE
<a name="cql.ddl.table.alter"></a>

`ALTER TABLE` 문을 사용하여 새 열을 추가하거나, 태그를 추가하거나, 테이블의 사용자 지정 속성을 변경합니다.

**구문**

```
alter_table_statement ::=  ALTER TABLE table_name    
 
        [ ADD ( column_definition | column_definition_list)  ] 
        [[ADD | DROP] TAGS {'key1':'val1', 'key2':'val2'}]            
        [ WITH table_options [ , ... ] ] ;
        
column_definition      ::=  column_name cql_type
```

위치:
+ `table_name`는 변경할 테이블의 이름입니다.
+ `column_definition`는 추가할 열 이름 및 데이터 유형입니다.
+ `column_definition_list`는 괄호 안에 있는 쉼표로 구분된 열 목록입니다.
+ `table_options`은 다음 항목으로 구성됩니다.
  + `AUTOSCALING_SETTINGS`에는 프로비저닝된 테이블에 대한 오토 스케일링 설정이 선택 사항으로 포함되어 있습니다. 구문 및 자세한 설명은 [CREATE TABLE](#cql.ddl.table.create) 섹션을 참조하세요. 예시는 [기존 테이블에서 오토 스케일링 구성](autoscaling.configureTable.md) 섹션을 참조하세요.
  +  *`cdc`* - Amazon Keyspaces가 테이블에 대한 변경 데이터 캡처(CDC) 스트림을 생성할지 여부를 지정하는 부울입니다. 기본값은 `false`입니다. 스트림을 활성화할 `view type` 때를 지정하려면를 `CUSTOM_PROPERTIES` `cdc_specification`로 설정합니다.
  +  *`CUSTOM_PROPERTIES`*— Amazon Keyspace와 관련된 설정 맵입니다.
    +  `capacity_mode`: 테이블에 읽기/쓰기 처리량 용량 모드를 지정합니다. 옵션은 `throughput_mode:PAY_PER_REQUEST` 및 `throughput_mode:PROVISIONED`입니다. 프로비저닝된 용량 모드에는 `read_capacity_units` 및 `write_capacity_units`가 입력으로 필요합니다. 기본값은 `throughput_mode:PAY_PER_REQUEST`입니다.
    +  `cdc_specification`: CDC 스트림`view_type`의를 지정합니다. 다음과 같은 옵션이 있습니다.
      + `NEW_AND_OLD_IMAGES` - 변경 전후 행의 두 버전입니다. 기본값입니다.
      + `NEW_IMAGE` - 변경 후 행의 버전입니다.
      + `OLD_IMAGE` - 변경 전 행의 버전입니다.
      + `KEYS_ONLY` - 변경된 행의 파티션 및 클러스터링 키입니다.

      CDC 스트림에 대한 자세한 내용은 섹션을 참조하세요[Amazon Keyspaces에서 변경 데이터 캡처(CDC) 스트림 작업](cdc.md). 코드 예제는 [Amazon Keyspaces에서 기존 테이블에 대한 CDC 스트림 활성화](keyspaces-enable-cdc-alter-table.md) 섹션을 참조하세요.
    +  `client_side_timestamps`: 테이블에 대해 클라이언트 측 타임스탬프를 활성화할지 여부를 지정합니다. 옵션은 `{'status': 'enabled'}` 및 `{'status': 'disabled'}`입니다. 지정하지 않으면 기본값으로 `status:disabled`이 지정됩니다. 테이블에 대해 클라이언트 측 타임스탬프를 활성화한 후에는 이 설정을 비활성화할 수 없습니다.
    +  `encryption_specification`: 저장된 암호화에 대한 암호화 옵션을 지정합니다. 옵션은 `encryption_type:AWS_OWNED_KMS_KEY` 및 `encryption_type:CUSTOMER_MANAGED_KMS_KEY`입니다. 암호화 옵션 고객 관리형 키를 사용하려면 Amazon 리소스 이름(ARN) 형식의 AWS KMS 키(`kms_key_identifier:ARN`)를 입력해야 합니다.
    +  `point_in_time_recovery`: 테이블에 대해 특정 시점 복원을 활성화할지 여부를 지정합니다. 옵션은 `status:enabled` 및 `status:disabled`입니다. 기본값은 `status:disabled`입니다.
    + `replica_updates`: 다중 리전 테이블의 AWS 리전 특정 설정을 지정합니다. 다중 리전 테이블의 경우 AWS 리전에 따라 테이블의 읽기 용량을 다르게 구성할 수 있습니다. 다음 파라미터를 구성하여 이 작업을 수행할 수 있습니다. 자세한 내용과 예제는 [Amazon Keyspaces에서 다중 리전 테이블에 대한 프로비저닝된 용량 및 오토 스케일링 설정 업데이트](tables-mrr-autoscaling.md) 섹션을 참조하세요.
      + `region` - 다음 설정이 있는 테이블 복제본 AWS 리전 의 입니다.
        + `read_capacity_units` 
    +  `ttl`: 테이블에 대한 Time to Live 사용자 정의 설정을 활성화합니다. 활성화하려면 `status:enabled`을 사용합니다. 기본값은 `status:disabled`입니다. `ttl`이 활성화된 후에는 테이블에 대해 이 설정을 비활성화할 수 없습니다.
+ `default_time_to_live`: 테이블의 기본 Time to Live 설정(초 단위)입니다.
+ `TAGS`는 리소스에 연결할 키-값 페어 태그의 목록입니다.

**참고**  
ALTER TABLE을 사용하면 단일 사용자 지정 속성만 변경할 수 있습니다. 동일한 문에 ALTER TABLE 명령을 두 개 이상 조합할 수 없습니다.

**예시**

다음 문은 기존 테이블에 열을 추가하는 방법을 보여줍니다.

```
ALTER TABLE mykeyspace.mytable ADD (ID int);
```

이 문은 기존 테이블에 두 개의 수집 열을 추가하는 방법을 보여줍니다.
+ 중첩된 프로즌 수집이 포함된 프로즌 수집 열 `col_frozen_list`
+ 중첩된 프로즌 수집이 포함된 비프로즌 수집 열 `col_map`

```
ALTER TABLE my_Table ADD(col_frozen_list FROZEN<LIST<FROZEN<SET<TEXT>>>>, col_map MAP<INT, FROZEN<SET<INT>>>);
```

다음 예제에서는 사용자 정의 유형(UDT)을 사용하는 열을 테이블에 추가하는 방법을 보여줍니다.

```
ALTER TABLE my_keyspace.my_table ADD (my_column, my_udt;);
```

테이블의 용량 모드를 변경하고 읽기 및 쓰기 용량 단위를 지정하려면 다음 문을 사용할 수 있습니다.

```
ALTER TABLE mykeyspace.mytable WITH CUSTOM_PROPERTIES={'capacity_mode':{'throughput_mode': 'PROVISIONED', 'read_capacity_units': 10, 'write_capacity_units': 20}};
```

다음 문은 테이블의 고객 관리형 KMS 키를 지정합니다.

```
ALTER TABLE mykeyspace.mytable WITH CUSTOM_PROPERTIES={     
              'encryption_specification':{ 
                      'encryption_type': 'CUSTOMER_MANAGED_KMS_KEY', 
                      'kms_key_identifier':'arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111'     
                  } 
         };
```

테이블에 대해 시점 복원을 활성화하려면 다음 문을 사용할 수 있습니다.

```
ALTER TABLE mykeyspace.mytable WITH CUSTOM_PROPERTIES={'point_in_time_recovery': {'status': 'enabled'}};
```

테이블의 기본 Time to Live 값을 초 단위로 설정하려면 다음 문을 사용할 수 있습니다.

```
ALTER TABLE my_table WITH default_time_to_live = 2592000;
```

이 문을 사용하면 테이블의 Time to Live 설정을 사용자 지정할 수 있습니다.

```
ALTER TABLE mytable WITH CUSTOM_PROPERTIES={'ttl':{'status': 'enabled'}};
```

## RESTORE TABLE
<a name="cql.ddl.table.restore"></a>

`RESTORE TABLE` 문을 사용하여 테이블을 특정 시점으로 복원합니다. 이 문을 사용하려면 테이블의 시점 복구가 활성화되어 있어야 합니다. 자세한 내용은 [Amazon Keyspaces에 대한 시점 복구를 통한 데이터 백업 및 복원](PointInTimeRecovery.md) 단원을 참조하십시오.

**구문**

```
restore_table_statement ::=  
    RESTORE TABLE restored_table_name FROM TABLE source_table_name 
                    [ WITH table_options [ , ... ] ];
```

위치:
+ `restored_table_name`은 복원된 테이블의 이름입니다.
+ `source_table_name`은 소스 테이블의 이름입니다.
+ `table_options`은 다음 항목으로 구성됩니다.
  + `restore_timestamp`는 ISO 8601 형식의 복원 시점입니다. 지정하지 않을 경우 현재 타임스탬프가 사용됩니다.
  +  *`CUSTOM_PROPERTIES`*— Amazon Keyspace와 관련된 설정 맵입니다.
    +  `capacity_mode`: 테이블에 읽기/쓰기 처리량 용량 모드를 지정합니다. 옵션은 `throughput_mode:PAY_PER_REQUEST` 및 `throughput_mode:PROVISIONED`입니다. 프로비저닝된 용량 모드에는 `read_capacity_units` 및 `write_capacity_units`가 입력으로 필요합니다. 기본값은 소스 테이블의 현재 설정입니다.
    +  `encryption_specification`: 저장된 암호화에 대한 암호화 옵션을 지정합니다. 옵션은 `encryption_type:AWS_OWNED_KMS_KEY` 및 `encryption_type:CUSTOMER_MANAGED_KMS_KEY`입니다. 암호화 옵션 고객 관리형 키에는 Amazon 리소스 이름(ARN) 형식의 AWS KMS 키가 입력으로 필요합니다`kms_key_identifier:ARN`. 고객 관리형 키로 암호화된 테이블을 로 암호화된 테이블로 복원하려면 AWS 소유 키 Amazon Keyspaces에서 소스 테이블의 AWS KMS 키에 액세스해야 합니다.
    +  `point_in_time_recovery`: 테이블에 대해 특정 시점 복원을 활성화할지 여부를 지정합니다. 옵션은 `status:enabled` 및 `status:disabled`입니다. 새 테이블을 생성할 때와 달리 복원된 테이블의 기본 상태는 설정이 소스 테이블에서 상속되기 때문에 `status:enabled`입니다. 복원된 테이블의 PITR을 비활성화하려면 `status:disabled`을 명시적으로 설정해야 합니다.
    + `replica_updates`: 다중 리전 테이블의 AWS 리전 특정 설정을 지정합니다. 다중 리전 테이블의 경우 AWS 리전에 따라 테이블의 읽기 용량을 다르게 구성할 수 있습니다. 다음 파라미터를 구성하여 이 작업을 수행할 수 있습니다.
      + `region` - 다음 설정이 있는 테이블 복제본 AWS 리전 의 입니다.
        + `read_capacity_units` 
  + `AUTOSCALING_SETTINGS`에는 프로비저닝된 테이블에 대한 오토 스케일링 설정이 선택 사항으로 포함되어 있습니다. 자세한 구문 및 설명은 [CREATE TABLE](#cql.ddl.table.create) 섹션을 참조하세요.
  + `TAGS`는 리소스에 연결할 키-값 페어 태그의 목록입니다.

**참고**  
삭제된 테이블은 삭제 시점까지만 복원할 수 있습니다.

**예제**

```
RESTORE TABLE mykeyspace.mytable_restored from table mykeyspace.my_table 
WITH restore_timestamp = '2020-06-30T04:05:00+0000'
AND custom_properties = {'point_in_time_recovery':{'status':'disabled'}, 'capacity_mode':{'throughput_mode': 'PROVISIONED', 'read_capacity_units': 10, 'write_capacity_units': 20}}
AND TAGS={'key1':'val1', 'key2':'val2'};
```

## DROP TABLE
<a name="cql.ddl.table.drop"></a>

`DROP TABLE` 문을 사용하여 키스페이스에서 테이블을 제거합니다.

**구문**

```
drop_table_statement ::=  
    DROP TABLE [ IF EXISTS ] table_name
```

위치:
+ `IF EXISTS`은 테이블이 존재하지 않는 경우 `DROP TABLE`의 실패를 방지합니다. (선택 사항)
+ `table_name`는 삭제할 테이블의 이름입니다.

**예제**

```
DROP TABLE my_keyspace.my_table;
```

# 사용자 정의 유형(UDTs)
<a name="cql.ddl.type"></a>

*UDT* - Amazon Keyspaces에서 단일 열을 정의하는 데 사용할 수 있는 필드 및 데이터 유형의 그룹입니다. UDTs에 유효한 데이터 형식은 모두 동일한 키스페이스에서 이미 생성한 컬렉션 및 기타 UDTs를 포함하여 지원되는 Cassandra 데이터 형식입니다. 지원되는 Cassandra 데이터 형식에 대한 자세한 내용은 섹션을 참조하세요[Cassandra 데이터 유형 지원](cassandra-apis.md#cassandra-data-type).

```
user_defined_type::= udt_name
udt_name::= [ keyspace_name '.' ] identifier
```

**Topics**
+ [CREATE TYPE](#cql.ddl.type.create)
+ [DROP TYPE](#cql.ddl.type.drop)

## CREATE TYPE
<a name="cql.ddl.type.create"></a>

`CREATE TYPE` 문을 사용하여 새 유형을 생성합니다.

 **구문**

```
create_type_statement ::=  CREATE TYPE [ IF NOT EXISTS ] udt_name
    '('field_definition ( ',' field_definition)* ')'
            field_definition::= identifier cql_type
```

위치:
+ `IF NOT EXISTS` `CREATE TYPE`는 유형이 이미 있는 경우가 실패하지 않도록 합니다. (선택 사항)
+ `udt_name`는 형식의 UDT의 정규화된 이름입니다. 예: `my_keyspace.my_type`. `USE` 문으로 현재 키스페이스를 정의하는 경우 키스페이스 이름을 지정할 필요가 없습니다.
+ `field_definition`는 이름과 유형으로 구성됩니다.

다음 표에는 허용되는 UDT 이름의 예가 나와 있습니다. 첫 번째 열은 유형을 생성할 때 이름을 입력하는 방법을 보여주고, 두 번째 열은 Amazon Keyspaces가 내부적으로 이름의 형식을 지정하는 방법을 보여줍니다. Amazon Keyspaces는와 같은 작업에 형식이 지정된 이름을 요구합니다`GetType`.


| 입력한 이름 | 형식이 지정된 이름 | Note | 
| --- | --- | --- | 
|  MY\$1UDT  | my\$1udt | 큰따옴표가 없으면 Amazon Keyspaces는 모든 대문자를 소문자로 변환합니다. | 
|  "MY\$1UDT"  | MY\$1UDT | 큰따옴표를 사용하면 Amazon Keyspaces는 대문자를 존중하고 형식이 지정된 이름에서 큰따옴표를 제거합니다. | 
|  "1234"  | 1234 | 큰따옴표를 사용하면 이름이 숫자로 시작할 수 있으며 Amazon Keyspaces는 형식이 지정된 이름에서 큰따옴표를 제거합니다. | 
|  "Special\$1Ch@r@cters<>\$1\$1"  | Special\$1Ch@r@cters<>\$1\$1 | 큰따옴표를 사용하면 이름에 특수 문자가 포함될 수 있으며 Amazon Keyspaces는 형식이 지정된 이름에서 큰따옴표를 제거합니다. | 
|  "nested""""""quotes"  | nested"""quotes | Amazon Keyspaces는 형식이 지정된 이름에서 외부 큰따옴표와 이스케이프 큰따옴표를 제거합니다. | 

**예시**

```
CREATE TYPE my_keyspace.phone (
    country_code int,
    number text
);
```

중첩된 UDTs 동결된 경우 UDT를 중첩할 수 있습니다. 유형의 기본값 및 할당량에 대한 자세한 내용은 섹션을 참조하세요[Amazon Keyspaces UDT 할당량 및 기본값](quotas.md#udt-table).

```
CREATE TYPE my_keyspace.user (
    first_name text,
    last_name text,
    phones FROZEN<phone>
);
```

UDTs[User-defined types (UDTs) in Amazon Keyspaces](udts.md).

## DROP TYPE
<a name="cql.ddl.type.drop"></a>

`DROP TYPE` 문을 사용하여 UDT를 삭제합니다. 다른 유형 또는 테이블에서 사용하지 않는 유형만 삭제할 수 있습니다.

 **구문**

```
drop_type_statement ::=  DROP TYPE [ IF EXISTS ] udt_name
```

위치:
+ `IF EXISTS` `DROP TYPE`는 유형이 없는 경우가 실패하지 않도록 합니다. (선택 사항)
+ `udt_name`는 형식의 UDT의 정규화된 이름입니다. 예: `my_keyspace.my_type`. `USE` 문으로 현재 키스페이스를 정의하는 경우 키스페이스 이름을 지정할 필요가 없습니다.

**예제**

```
DROP TYPE udt_name;
```

# Amazon Keyspaces의 DML 문(데이터 조작 언어)
<a name="cql.dml"></a>

*데이터 조작 언어*(DML)는 Amazon Keyspaces(Apache Cassandra용) 테이블의 데이터를 관리하는 데 사용하는 Cassandra 쿼리 언어(CQL) 문 집합입니다. DML 문을 사용하여 테이블의 데이터를 추가, 수정 또는 삭제할 수 있습니다.

또한 DML 문을 사용하여 테이블의 데이터를 쿼리합니다. (참고로 CQL은 조인 또는 하위 쿼리를 지원하지 않습니다.)

**Topics**
+ [SELECT](cql.dml.select.md)
+ [INSERT](cql.dml.insert.md)
+ [UPDATE](cql.dml.update.md)
+ [DELETE](cql.dml.delete.md)

# SELECT
<a name="cql.dml.select"></a>

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 데이터 유형에 매핑하는 테이블은 [Amazon Keyspaces 데이터 유형의 JSON 인코딩](cql.elements.md#cql.data-types.JSON)을 참조하세요.

**`IN` 키워드 사용**

`IN` 키워드는 하나 이상의 값이 같도록 지정합니다. 파티션 키와 클러스터링 열에 적용할 수 있습니다. `SELECT` 문에 키가 표시된 순서대로 결과가 반환됩니다.

**예시**

```
SELECT * from mykeyspace.mytable WHERE primary.key1 IN (1,2) and clustering.key1 = 2;
SELECT * from mykeyspace.mytable WHERE primary.key1 IN (1,2) and clustering.key1 <= 2;
SELECT * from mykeyspace.mytable WHERE primary.key1 = 1 and clustering.key1 IN (1, 2);
SELECT * from mykeyspace.mytable WHERE primary.key1 <= 2 and clustering.key1 IN (1, 2) ALLOW FILTERING;
```

`IN` 키워드 및 Amazon Keyspaces가 문을 처리하는 방식에 대한 자세한 내용은 [Amazon Keyspaces에서 쿼리의 `SELECT` 문과 함께 `IN` 연산자 사용](in.select.md)섹션을 참조하세요.

**결과 순서 지정**

`ORDER BY` 절은 반환된 결과의 정렬 순서를 지정합니다. 각 열의 정렬 순서와 함께 열 이름 목록을 인수로 사용합니다. 정렬 절에는 클러스터링 열만 지정할 수 있습니다. 비클러스터링 열은 허용되지 않습니다. 정렬 순서 옵션은 `ASC`(오름차순)과 `DESC`(내림차순) 정렬 순서입니다. 정렬 순서를 생략하면 클러스터링 열의 기본 순서가 사용됩니다. 가능한 정렬 순서는 [Amazon Keyspaces에서 `ORDER BY`로 결과 순서 지정](ordering-results.md)을 참조하세요.

**예제**

```
SELECT name, id, division, manager_id FROM "myGSGKeyspace".employees_tbl WHERE id = '012-34-5678' ORDER BY division;
```

`IN` 키워드와 함께 `ORDER BY`을 사용하면 페이지 내에서 결과가 정렬됩니다. 페이지 매김이 비활성화된 상태에서는 전체 재정렬이 지원되지 않습니다.

**토큰**

`TOKEN` 함수를 `SELECT` 및 `WHERE` 절의 `PARTITION KEY` 열에 적용할 수 있습니다. `TOKEN` 함수를 사용하면 Amazon Keyspaces는 `PARTITION KEY`의 값이 아닌 `PARTITION_KEY`의 매핑된 토큰 값을 기준으로 행을 반환합니다.

`IN` 키워드에서는 `TOKEN` 관계가 지원되지 않습니다.

**예시**

```
SELECT TOKEN(id) from my_table; 

SELECT TOKEN(id) from my_table WHERE TOKEN(id) > 100 and TOKEN(id) < 10000;
```

**TTL 함수**

`TTL` 함수를 `SELECT` 문과 함께 사용하여 열에 저장된 만료 시간(초)을 검색할 수 있습니다. `TTL`인 값이 설정되지 않으면 없으면 함수가 `null`를 반환합니다.

**예제**

```
SELECT TTL(my_column) from my_table;
```

수집과 같은 다중 셀 열에는 `TTL` 함수를 사용할 수 없습니다.

**WRITETIME 함수**

테이블에서 클라이언트 측 타임스탬프를 사용하는 경우에만 `WRITETIME` 함수를 `SELECT` 문과 함께 사용하여 열 값의 메타데이터로 저장된 타임스탬프를 검색할 수 있습니다. 자세한 내용은 [Amazon Keyspaces의 클라이언트 측 타임스탬프](client-side-timestamps.md) 단원을 참조하십시오.

```
SELECT WRITETIME(my_column) from my_table;
```

수집과 같은 다중 셀 열에는 `WRITETIME` 함수를 사용할 수 없습니다.

**참고**  
설정된 Cassandra 드라이버 동작과의 호환성을 위해 Cassandra 드라이버 및 개발자 도구를 통해 Cassandra 쿼리 언어(CQL) API 호출을 사용하여 시스템 테이블에서 작업을 수행할 때는 태그 기반 권한 부여 정책이 적용되지 않습니다. 자세한 내용은 [태그를 기반으로 한 Amazon Keyspaces 리소스 액세스](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-tags) 단원을 참조하십시오.

# INSERT
<a name="cql.dml.insert"></a>

`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` — epoch로 알려진 표준 기준 시간인 1970년 1월 1일 00:00:00(그리니치 표준시 기준) 이후 경과된 시간을 마이크로초 단위로 나타내는 `bigint` 값입니다. 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 데이터 유형에 매핑하는 테이블은 [Amazon Keyspaces 데이터 유형의 JSON 인코딩](cql.elements.md#cql.data-types.JSON)을 참조하세요.

`JSON` 키워드를 사용하여 `JSON` 인코딩 맵을 단일 행으로 삽입할 수 있습니다. 테이블에는 있지만 JSON insert 문에서 생략된 열의 경우 `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
<a name="cql.dml.update"></a>

`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`를 증가하려면 다음 구문을 사용합니다. 자세한 내용은 [카운터](cql.elements.md#cql.data-types.numeric.counters) 단원을 참조하십시오.

```
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` — epoch로 알려진 표준 기준 시간인 1970년 1월 1일 00:00:00(그리니치 표준시 기준) 이후 경과된 시간을 마이크로초 단위로 나타내는 `bigint` 값입니다. 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
<a name="cql.dml.delete"></a>

`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` — epoch로 알려진 표준 기준 시간인 1970년 1월 1일 00:00:00(그리니치 표준시 기준) 이후 경과된 시간을 마이크로초 단위로 나타내는 `bigint` 값입니다.

# Amazon Keyspaces의 기본 제공 함수
<a name="cql.functions"></a>

Amazon Keyspaces(Apache Cassandra용)는 Cassandra 쿼리 언어(CQL) 문에서 사용할 수 있는 다양한 기본 제공 함수를 지원합니다.

**Topics**
+ [스칼라 함수](#cql.functions.scalar)

## 스칼라 함수
<a name="cql.functions.scalar"></a>

*스칼라 함수*는 단일 값에 대해 계산을 수행하고 결과를 단일 값으로 반환합니다. Amazon Keyspaces는 다음과 같은 스칼라 함수를 지원합니다.


****  

| 함수 | 설명 | 
| --- | --- | 
|  `blobAsType`  | 지정된 데이터 유형의 값을 반환합니다. | 
|  `cast`  | 하나의 네이티브 데이터 유형을 다른 네이티브 데이터 유형으로 변환합니다. | 
|  `currentDate`  | 현재 날짜/시간을 날짜로 반환합니다. | 
|  `currentTime`  | 현재 날짜/시간을 시간으로 반환합니다. | 
|  `currentTimestamp`  | 현재 날짜/시간을 타임스탬프로 반환합니다. | 
|  `currentTimeUUID`  | 현재 날짜/시간을 timeuuid으로 반환합니다. | 
|  `fromJson`  | JSON 문자열을 선택한 열의 데이터 유형으로 변환합니다. | 
|  `maxTimeuuid`  | 타임스탬프 또는 날짜 문자열에 대해 가능한 가장 큰 timeuuid 값을 반환합니다. | 
|  `minTimeuuid`  | 타임스탬프 또는 날짜 문자열에 대해 가능한 가장 작은 timeuuid 값을 반환합니다. | 
|  `now`  | 새 고유한 timeuuid 항목을 반환합니다. | 
|  `toDate`  | timeuuid 또는 타임스탬프를 날짜 유형으로 변환합니다. | 
|  `toJson`  | 선택한 열의 열 값을 JSON 형식으로 반환합니다. | 
|  `token`  | 파티션 키의 해시 값을 반환합니다. | 
|  `toTimestamp`  | timeuuid 또는 날짜를 타임스탬프로 변환합니다. | 
|  `TTL`  | 열의 만료 시간을 초 단위로 반환합니다. | 
|  `typeAsBlob`  | 지정된 데이터 유형을 blob로 변환합니다. | 
|  `toUnixTimestamp`  | timeuuid 또는 타임스탬프를 bigInt로 변환합니다. | 
|  `uuid`  | 무작위 버전 4 UUID를 반환합니다. | 
|  `writetime`  | 지정된 열 값의 타임스탬프를 반환합니다. | 
|  `dateOf`  | (사용 중단) timeuuid의 타임스탬프를 추출하여 값을 날짜로 반환합니다. | 
|  `unixTimestampOf`  | (사용 중단) timeuuid의 타임스탬프를 추출하여 값을 원시 64비트 정수 타임스탬프로 반환합니다. | 