

# 이름 데이터베이스, 테이블 및 열
<a name="tables-databases-columns-names"></a>

Athena에서 데이터베이스, 테이블 및 열의 이름을 지정하려면 다음 지침을 사용합니다.

## 데이터베이스, 테이블 및 열 이름 요구 사항
<a name="tables-databases-columns-names-requirements"></a>
+ AWS Glue의 데이터베이스 이름, 테이블 이름 및 열 이름에 사용할 수 있는 문자는 UTF-8 문자열이어야 하며 소문자로 되어 있어야 합니다. 참고로 Athena는 데이터베이스, 테이블 또는 열을 생성할 때 DDL 쿼리의 모든 대문자 이름을 자동으로 소문자로 변경합니다. 문자열은 1바이트 미만이거나 255바이트를 초과해서는 안 됩니다.
+ 현재는 이름 앞에 공백을 넣을 수 있습니다. 이러한 선행 공백은 탐지하기 어렵고 생성 후 사용성 문제를 일으킬 수 있으므로 실수로 선행 공백이 있는 객체 이름을 만들지 않도록 하세요.
+ [AWS::Glue::Database](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-database.html) CloudFormation 템플릿을 사용하여 AWS Glue 데이터베이스를 생성하고 데이터베이스 이름을 지정하지 않으면 AWS Glue는 Athena와 호환되지 않는 *resource\$1name–random\$1string* 형식으로 데이터베이스 이름을 자동으로 생성합니다.
+ AWS Glue 카탈로그 관리자를 사용하여 열 이름을 바꿀 수 있지만 테이블 이름이나 데이터베이스 이름은 바꿀 수 없습니다. 이 제한을 해결하려면 이전 데이터베이스의 정의를 사용하여 새 이름으로 데이터베이스를 생성해야 합니다. 그런 다음 이전 데이터베이스의 테이블 정의를 사용하여 새 데이터베이스에서 테이블을 다시 생성합니다. 이렇게 하려면 AWS CLI 또는 AWS Glue SDK를 사용하면 됩니다. 단계는 [AWS CLI를 사용하여 AWS Glue 데이터베이스 및 해당 테이블 다시 생성](glue-recreate-db-and-tables-cli.md)를 참조하세요.

## Athena의 테이블 이름과 테이블 열 이름에는 소문자를 사용합니다.
<a name="table-names-and-table-column-names-in-ate-must-be-lowercase"></a>

Athena는 DDL 및 DML 쿼리에서 대소문자 혼용을 허용하지만 쿼리를 실행할 때 이름을 소문자로 사용합니다. 이러한 이유로 테이블 또는 열 이름에 대소문자를 혼용하지 말고, Athena에서 대소문자를 통해서만 이러한 이름을 구별하지 마세요. 예를 들어 DDL 문을 사용하여 `Castle`이라는 열을 만드는 경우 생성된 열은 `castle`과 같이 소문자로 표시됩니다. 그런 다음 DML 쿼리에서 열 이름을 `Castle` 또는 `CASTLE`로 지정할 경우 Athena는 쿼리를 실행할 이름을 소문자로 표시하지만 쿼리에서 선택한 대소문자를 사용하여 열 머리글을 표시합니다.

데이터베이스, 테이블 및 열 이름은 255자보다 작거나 같아야 합니다.

## 밑줄로 시작하는 이름
<a name="names-that-begin-with-an-underscore"></a>

테이블을 만들 때 밑줄로 시작하는 테이블, 뷰 또는 열 이름은 백틱(`)으로 묶습니다. 다음 예를 참조하세요.

```
CREATE EXTERNAL TABLE IF NOT EXISTS `_myunderscoretable`(
  `_id` string, `_index` string)
LOCATION 's3://amzn-s3-demo-bucket/'
```

## 숫자로 시작하는 테이블, 뷰 또는 열 이름
<a name="table-names-that-include-numbers"></a>

`SELECT`, `CTAS` 또는 `VIEW` 쿼리를 실행하는 경우 숫자로 시작하는 테이블, 뷰 또는 열 이름과 같은 식별자를 인용 부호로 묶습니다. 다음 예를 참조하세요.

```
CREATE OR REPLACE VIEW "123view" AS
SELECT "123columnone", "123columntwo"
FROM "234table"
```

## 열 이름 및 복합 유형
<a name="tables-databases-columns-names-complex-types"></a>

복합 유형의 경우 영숫자, 밑줄(`_`) 및 기간(`.`)만 열 이름에 허용됩니다. 제한된 문자가 있는 키에 대한 테이블 및 매핑을 만들 때 사용자 지정 DDL 문을 사용할 수 있습니다. 자세한 내용은 *AWS 빅 데이터 블로그*의 [Create tables in Amazon Athena from nested JSON and mappings using JSONSerDe](https://aws.amazon.com/blogs/big-data/create-tables-in-amazon-athena-from-nested-json-and-mappings-using-jsonserde/)를 참조하세요.

## 예약어
<a name="tables-databases-columns-names-reserved-words"></a>

Athena의 특정 예약어는 이스케이프를 해야 합니다. DDL 문에서 예약어를 이스케이프하려면 해당 문을 악센트 부호(`)로 묶습니다. [뷰](views.md)에 대한 SQL `SELECT` 문과 쿼리에서 예약어를 이스케이프하려면 예약어를 큰 따옴표('')로 묶습니다.

자세한 내용은 [쿼리에서 예약어 이스케이프](reserved-words.md) 섹션을 참조하세요.

## 추가 리소스
<a name="tables-databases-columns-names-additional-resources"></a>

전체 데이터베이스 및 테이블 생성 구문은 다음 페이지를 참조하세요.
+ [CREATE DATABASE](create-database.md)
+ [CREATE TABLE](create-table.md)

AWS Glue의 데이터베이스 및 테이블에 대한 자세한 내용은 **AWS Glue 개발자 안내서의 [데이터베이스](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-databases.html) 및 [테이블](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-tables.html)을 참조하세요.