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

# ClickHouse でのテーブルの作成

> ClickHouse でのテーブルの作成について学びます

多くのデータベースと同様に、ClickHouse ではテーブルを論理的に **データベース** ごとにまとめます。ClickHouse で新しいデータベースを作成するには、`CREATE DATABASE` コマンドを使用します。

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

同様に、新しいテーブルを定義するには `CREATE TABLE` を使用します。データベース名を指定しない場合、そのテーブルは
`default` データベースに作成されます。

次の `my_first_table` という名前のテーブルは、`helloworld` データベースに作成されます。

```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](/ja/reference/engines/table-engines/mergetree-family/mergetree) を選ぶことになるでしょう。
</Note>

<div id="a-brief-intro-to-primary-keys">
  ## 主キーの簡単な紹介
</div>

先に進む前に、ClickHouse で主キーがどのように機能するのかを理解しておくことが重要です (主キーの実装は
意外に感じるかもしれません) :

* ClickHouse の主キーは、テーブル内の各行に対して ***一意ではありません***

ClickHouseテーブルの主キーは、データがディスクに書き込まれる際のソート順を決定します。8,192 行ごと、または 10MB の
データごと (これを **インデックス粒度** と呼びます) に、主キーの索引ファイルに 1 つのエントリが作成されます。この粒度の概念によって、
メモリに容易に収まる **スパースインデックス** が作られます。また、グラニュールは `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>
