> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-home-button.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# ClickHouse에서 테이블 생성

> ClickHouse에서 테이블 생성에 대해 알아봅니다

대부분의 데이터베이스와 마찬가지로 ClickHouse는 테이블을 **데이터베이스(databases)** 단위로 논리적으로 묶습니다. ClickHouse에서 새 데이터베이스를 생성하려면 `CREATE DATABASE` 명령을 사용하세요:

```sql theme={null}
CREATE DATABASE IF NOT EXISTS helloworld
```

마찬가지로 새 테이블을 정의할 때는 `CREATE TABLE`을 사용합니다. 데이터베이스 이름을 지정하지 않으면 테이블은
`default` 데이터베이스에 생성됩니다.

다음과 같이 `helloworld` 데이터베이스에 `my_first_table`이라는 테이블을 생성합니다:

```sql theme={null}
  CREATE TABLE helloworld.my_first_table
  (
      user_id UInt32,
      message String,
      timestamp DateTime,
      metric Float32
  )
  ENGINE = MergeTree()
  PRIMARY KEY (user_id, timestamp)
```

위 예시에서 `my_first_table`은 4개의 컬럼을 가진 `MergeTree` 테이블입니다:

* `user_id`:  32비트 부호 없는 정수
* `message`: `String` 데이터 타입으로, 다른 데이터베이스 시스템의 `VARCHAR`, `BLOB`, `CLOB` 등의 타입을 대체합니다
* `timestamp`: 특정 시점을 나타내는 `DateTime` 값
* `metric`: 32비트 부동소수점 숫자

<Note>
  테이블 엔진은 다음 사항을 결정합니다:

  * 데이터가 저장되는 방식과 위치
  * 지원되는 쿼리
  * 데이터 복제 여부

  선택할 수 있는 엔진은 많지만, 단일 노드 ClickHouse 서버에서 사용하는 간단한 테이블이라면 [MergeTree](/ko/reference/engines/table-engines/mergetree-family/mergetree)가 일반적인 선택입니다.
</Note>

<div id="a-brief-intro-to-primary-keys">
  ## 프라이머리 키에 대한 간단한 소개
</div>

계속 진행하기 전에 ClickHouse에서 프라이머리 키(primary key)가 어떻게 동작하는지 이해하는 것이 중요합니다(프라이머리 키의 구현 방식은
다소 예상 밖일 수 있습니다!):

* ClickHouse의 프라이머리 키는 테이블의 각 행마다 ***고유하지 않습니다***

ClickHouse 테이블의 프라이머리 키는 데이터가 디스크에 기록될 때 어떤 방식으로 정렬되는지를 결정합니다. 8,192개 행 또는 10MB의
데이터마다(이를 **인덱스 세분화 수준(index granularity)** 이라고 함) 프라이머리 키 인덱스 파일에 항목 하나가 생성됩니다. 이러한 세분화 수준 개념은
메모리에 쉽게 올릴 수 있는 **희소 인덱스(sparse index)** 를 만들며, 그래뉼은 `SELECT` 쿼리에서 처리되는 가장 작은 단위의
컬럼 데이터 스트라이프를 나타냅니다.

프라이머리 키는 `PRIMARY KEY` 매개변수를 사용해 정의할 수 있습니다. `PRIMARY KEY`를 지정하지 않고 테이블을 정의하면
키는 `ORDER BY` 절에 지정된 튜플이 됩니다. `PRIMARY KEY`와 `ORDER BY`를 모두 지정하는 경우, 프라이머리 키는 정렬 순서의 접두사여야 합니다.

프라이머리 키는 정렬 키이기도 하며, `(user_id, timestamp)` 형태의 튜플입니다. 따라서 각
컬럼 파일에 저장되는 데이터는 먼저 `user_id`, 그다음 `timestamp` 순으로 정렬됩니다.

<Tip>
  자세한 내용은 ClickHouse Academy의 [Modeling Data training module](https://learn.clickhouse.com/visitor_catalog_class/show/1328860/?utm_source=clickhouse\&utm_medium=docs)을 확인하십시오.
</Tip>
