

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

# Amazon QLDB의 FROM (INSERT, REMOVE, 또는 SET) 명령
<a name="ql-reference.from"></a>

**중요**  
지원 종료 알림: 기존 고객은 07/31/2025에 지원이 종료될 때까지 Amazon QLDB를 사용할 수 있습니다. 자세한 내용은 [Amazon QLDB 원장을 Amazon Aurora PostgreSQL로 마이그레이션](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)을 참조하세요.

Amazon QLDB에서 `FROM`로 시작하는 문은 문서 내에 특정 요소를 삽입하고 제거할 수 있는 PartiQL 확장입니다. [UPDATE](ql-reference.update.md) 명령과 마찬가지로 이 명령문을 사용하여 문서의 기존 요소를 업데이트할 수도 있습니다.

**참고**  
특정 테이블에서 이 PartiQL 명령을 실행하기 위한 액세스를 제어하는 방법을 알아보려면 [Amazon QLDB에서 표준 권한 모드로 시작하기](getting-started-standard-mode.md) 섹션을 참조하세요.

**Topics**
+ [구문](#ql-reference.from.syntax)
+ [파라미터](#ql-reference.from.parameters)
+ [중첩된 컬렉션](#ql-reference.from.nested-collections)
+ [반환 값](#ql-reference.from.return)
+ [예시](#ql-reference.from.examples)
+ [드라이버를 사용하여 프로그래밍 방식으로 실행](#ql-reference.from.driver)

## 구문
<a name="ql-reference.from.syntax"></a>

**FROM-INSERT**

기존 문서에 새 요소를 삽입합니다. 새 최상위 문서를 테이블에 삽입하려면 [INSERT](ql-reference.insert.md)를 사용해야 합니다.

```
FROM table_name [ AS table_alias ] [ BY id_alias ]
[ WHERE condition ]
INSERT INTO element VALUE data [ AT key_name ]
```

**FROM-REMOVE**

문서 내의 기존 요소를 제거하거나 최상위 문서 전체를 제거합니다. 후자는 의미상 기존 [DELETE](ql-reference.delete.md) 구문과 동일합니다.

```
FROM table_name [ AS table_alias ] [ BY id_alias ]
[ WHERE condition ]
REMOVE element
```

**FROM-SET**

문서 내 하나 이상의 요소를 업데이트합니다. 요소가 없으면 해당 요소가 삽입됩니다. 이는 기존 [UPDATE](ql-reference.update.md) 구문과 의미상 동일합니다.

```
FROM table_name [ AS table_alias ] [ BY id_alias ]
[ WHERE condition ]
SET element = data [, element = data, ... ]
```

## 파라미터
<a name="ql-reference.from.parameters"></a>

***table\$1name***  
수정할 데이터가 포함된 사용자 테이블의 이름입니다. DML 문은 기본 [사용자 뷰](working.userdata.md)에서만 지원됩니다. 각 명령문은 단일 테이블에서만 실행할 수 있습니다.  
이 절에는 지정된 테이블 내에 중첩된 컬렉션을 하나 이상 포함할 수도 있습니다. 자세한 내용은 [중첩된 컬렉션](#ql-reference.from.nested-collections) 섹션을 참조하세요.

**AS *table\$1alias***  
(선택 사항)수정할 테이블 전체에 적용되는 사용자 정의 별칭입니다. `SET`, `REMOVE`, `INSERT INTO` 또는 `WHERE` 절에 사용되는 모든 테이블 별칭은 `FROM` 절에서 선언되어야 합니다. `AS` 키워드는 선택 사항입니다.

**BY *id\$1alias***  
(선택 사항)결과 집합에 있는 각 문서의 `id` 메타데이터 필드에 바인딩되는 사용자 정의 별칭입니다. `BY` 키워드를 사용하여 `FROM` 절에서 별칭을 선언해야 합니다. 이는 기본 사용자 뷰를 쿼리하면서 [문서 ID](working.metadata.md)를 기준으로 필터링하려는 경우에 유용합니다. 자세한 내용은 [BY 절을 사용하여 문서 ID 쿼리하기](working.metadata.by-clause.md)을 참조하세요.

**WHERE *condition***  
수정할 문서의 선택 기준입니다.  
`WHERE` 절을 생략하면 테이블의 모든 문서가 수정됩니다.

***element***  
생성하거나 수정할 문서 요소입니다.

***data***  
요소의 새 값입니다.

**AT *key\$1name***  
수정할 문서에 추가할 키 이름입니다. 키 이름과 함께 해당하는 `VALUE`을 지정해야 합니다. 이는 문서 내 특정 위치에 새 값 `AT`을 삽입하는 데 필요합니다.

## 중첩된 컬렉션
<a name="ql-reference.from.nested-collections"></a>

단일 테이블에서만 DML 문을 실행할 수 있지만 해당 테이블의 문서 내에 있는 중첩된 컬렉션을 추가 소스로 지정할 수 있습니다. 중첩 컬렉션에 대해 선언한 각 별칭은 `WHERE` 절과 `SET`, `INSERT INTO` 또는 `REMOVE` 절에서 사용할 수 있습니다.

예를 들어, 다음 명령문의 `FROM` 소스에는 `VehicleRegistration` 테이블과 중첩된 `Owners.SecondaryOwners` 구조가 모두 포함됩니다.

```
FROM VehicleRegistration r, @r.Owners.SecondaryOwners o
WHERE r.VIN = '1N4AL11D75C109151' AND o.PersonId = 'abc123'
SET o.PersonId = 'def456'
```

이 예제는 `'1N4AL11D75C109151'`의 `VIN`가 있는 `VehicleRegistration` 문서 내에서 `'abc123'`의 `PersonId`가 있는 `SecondaryOwners` 목록의 특정 요소를 업데이트합니다. 이 표현식을 사용하면 인덱스가 아닌 값을 기준으로 목록의 요소를 지정할 수 있습니다.

## 반환 값
<a name="ql-reference.from.return"></a>

`documentId` - 업데이트 또는 삭제한 각 문서의 고유 ID입니다.

## 예시
<a name="ql-reference.from.examples"></a>

문서 내 요소를 수정합니다. 요소가 존재하지 않는 경우 해당 요소가 삽입됩니다.

```
FROM Vehicle AS v
WHERE v.VIN = '1N4AL11D75C109151' AND v.Color = 'Silver'
SET v.Color = 'Shiny Gray'
```

시스템에서 할당한 문서 `id` 메타데이터 필드에 요소와 필터를 수정하거나 삽입합니다.

```
FROM Vehicle AS v BY v_id
WHERE v_id = 'documentId'
SET v.Color = 'Shiny Gray'
```

문서 내 `Owners.SecondaryOwners` 목록에 있는 *첫 번째* 요소의 `PersonId` 필드를 수정합니다.

```
FROM VehicleRegistration AS r
WHERE r.VIN = '1N4AL11D75C109151'
SET r.Owners.SecondaryOwners[0].PersonId = 'abc123'
```

문서 내 기존 요소를 제거합니다.

```
FROM Person AS p
WHERE p.GovId = '111-22-3333'
REMOVE p.Address
```

테이블에서 전체 문서를 제거합니다.

```
FROM Person AS p
WHERE p.GovId = '111-22-3333'
REMOVE p
```

`VehicleRegistration` 테이블의 문서 내 `Owners.SecondaryOwners` 목록의 *첫 번째* 요소를 제거합니다.

```
FROM VehicleRegistration AS r
WHERE r.VIN = '1N4AL11D75C109151'
REMOVE r.Owners.SecondaryOwners[0]
```

`{'Mileage':26500}`를 `Vehicle` 테이블의 문서 내에 최상위 이름-값 쌍으로 삽입합니다.

```
FROM Vehicle AS v 
WHERE v.VIN = '1N4AL11D75C109151'
INSERT INTO v VALUE 26500 AT 'Mileage'
```

`{'PersonId':'abc123'}`를 `VehicleRegistration` 테이블의 문서 `Owners.SecondaryOwners` 필드에 이름-값 쌍으로 추가합니다. 이 명령문이 유효하려면 `Owners.SecondaryOwners`이 이미 존재하고 목록 데이터 유형이어야 합니다. 그렇지 않으면 `INSERT INTO` 절에 `AT` 키워드가 필요합니다.

```
FROM VehicleRegistration AS r 
WHERE r.VIN = '1N4AL11D75C109151'
INSERT INTO r.Owners.SecondaryOwners VALUE { 'PersonId' : 'abc123' }
```

`{'PersonId':'abc123'}`를 문서 내 기존 `Owners.SecondaryOwners` 목록의 *첫 번째* 요소로 삽입합니다.

```
FROM VehicleRegistration AS r 
WHERE r.VIN = '1N4AL11D75C109151'
INSERT INTO r.Owners.SecondaryOwners VALUE {'PersonId' : 'abc123'} AT 0
```

문서 내 기존 `Owners.SecondaryOwners` 목록에 여러 개의 이름-값 쌍을 추가합니다.

```
FROM VehicleRegistration AS r 
WHERE r.VIN = '1N4AL11D75C109151'
INSERT INTO r.Owners.SecondaryOwners << {'PersonId' : 'abc123'}, {'PersonId' : 'def456'} >>
```

## 드라이버를 사용하여 프로그래밍 방식으로 실행
<a name="ql-reference.from.driver"></a>

QLDB 드라이버를 사용하여 이 명령문을 프로그래밍 방식으로 실행하는 방법을 알아보려면 *드라이버 시작하기*에서 다음 자습서를 참조하세요.
+ Java: [빠른 시작 자습서](driver-quickstart-java.md) \$1 [Cookbook 참조](driver-cookbook-java.md)
+ .NET: [빠른 시작 자습서](driver-quickstart-dotnet.md) \$1 [Cookbook 참조](driver-cookbook-dotnet.md)
+ Go: [빠른 시작 자습서](driver-quickstart-golang.md) \$1 [Cookbook 참조](driver-cookbook-golang.md)
+ Node.js: [빠른 시작 자습서](driver-quickstart-nodejs.md) \$1 [Cookbook 참조](driver-cookbook-nodejs.md)
+ Python: [빠른 시작 자습서](driver-quickstart-python.md) \$1 [Cookbook 참조](driver-cookbook-python.md)