> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> REPLACE TABLE SQL 문서

# REPLACE TABLE

<div id="overview">
  ## 개요
</div>

`REPLACE` SQL 문을 사용하면 테이블을 [원자적으로](/docs/ko/concepts/core-concepts/glossary#atomicity) 업데이트할 수 있습니다.

<Note>
  이 SQL 문은 ClickHouse와 ClickHouse Cloud의 기본 데이터베이스 엔진인 [`Atomic`](/docs/ko/reference/engines/database-engines/atomic) 및 [`Replicated`](/docs/ko/reference/engines/database-engines/replicated) 데이터베이스 엔진에서 지원됩니다.
</Note>

일반적으로 테이블에서 일부 데이터를 삭제하려면,
원하지 않는 데이터를 조회하지 않는 `SELECT` 문을 사용해 새 테이블을 생성하고 데이터를 채운 후,
기존 테이블을 삭제하고 새 테이블의 이름을 변경할 수 있습니다.
아래 예시에서 이 방법을 확인할 수 있습니다:

```sql theme={null}
CREATE TABLE myNewTable AS myOldTable;

INSERT INTO myNewTable
SELECT * FROM myOldTable 
WHERE CounterID <12345;

DROP TABLE myOldTable;

RENAME TABLE myNewTable TO myOldTable;
```

위의 방법 대신 기본 데이터베이스 엔진을 사용하는 경우 `REPLACE`를 사용하여 동일한 결과를 얻을 수도 있습니다:

```sql theme={null}
REPLACE TABLE myOldTable
ENGINE = MergeTree()
ORDER BY CounterID 
AS
SELECT * FROM myOldTable
WHERE CounterID <12345;
```

<div id="syntax">
  ## 구문
</div>

```sql theme={null}
{CREATE [OR REPLACE] | REPLACE} TABLE [db.]table_name
```

<Note>
  [`CREATE`](/docs/ko/reference/statements/create/table) SQL 문의 모든 구문 형식을 이 SQL 문에도 사용할 수 있습니다. 존재하지 않는 테이블에 `REPLACE`를 호출하면 오류가 발생합니다.
</Note>

<div id="examples">
  ## 예시
</div>

<Tabs>
  <Tab title="로컬">
    다음 테이블이 있다고 가정합니다.

    ```sql theme={null}
    CREATE DATABASE base 
    ENGINE = Atomic;

    CREATE OR REPLACE TABLE base.t1
    (
        n UInt64,
        s String
    )
    ENGINE = MergeTree
    ORDER BY n;

    INSERT INTO base.t1 VALUES (1, 'test');

    SELECT * FROM base.t1;

    ┌─n─┬─s────┐
    │ 1 │ test │
    └───┴──────┘
    ```

    `REPLACE` SQL 문을 사용해 모든 데이터를 삭제할 수 있습니다.

    ```sql theme={null}
    CREATE OR REPLACE TABLE base.t1 
    (
        n UInt64,
        s Nullable(String)
    )
    ENGINE = MergeTree
    ORDER BY n;

    INSERT INTO base.t1 VALUES (2, null);

    SELECT * FROM base.t1;

    ┌─n─┬─s──┐
    │ 2 │ \N │
    └───┴────┘
    ```

    또는 `REPLACE` SQL 문을 사용해 테이블 구조를 변경할 수 있습니다.

    ```sql theme={null}
    REPLACE TABLE base.t1 (n UInt64) 
    ENGINE = MergeTree 
    ORDER BY n;

    INSERT INTO base.t1 VALUES (3);

    SELECT * FROM base.t1;

    ┌─n─┐
    │ 3 │
    └───┘
    ```
  </Tab>

  <Tab title="Cloud">
    ClickHouse Cloud에 다음 테이블이 있다고 가정합니다.

    ```sql theme={null}
    CREATE DATABASE base;

    CREATE OR REPLACE TABLE base.t1 
    (
        n UInt64,
        s String
    )
    ENGINE = MergeTree
    ORDER BY n;

    INSERT INTO base.t1 VALUES (1, 'test');

    SELECT * FROM base.t1;

    1    test
    ```

    `REPLACE` SQL 문을 사용해 모든 데이터를 삭제할 수 있습니다.

    ```sql theme={null}
    CREATE OR REPLACE TABLE base.t1 
    (
        n UInt64, 
        s Nullable(String)
    )
    ENGINE = MergeTree
    ORDER BY n;

    INSERT INTO base.t1 VALUES (2, null);

    SELECT * FROM base.t1;

    2    
    ```

    또는 `REPLACE` SQL 문을 사용해 테이블 구조를 변경할 수 있습니다.

    ```sql theme={null}
    REPLACE TABLE base.t1 (n UInt64) 
    ENGINE = MergeTree 
    ORDER BY n;

    INSERT INTO base.t1 VALUES (3);

    SELECT * FROM base.t1;

    3
    ```
  </Tab>
</Tabs>
