sql >> データベース >  >> RDS >> Mysql

MySQL、MariaDB、Oracle、PostgreSQL、DB2、およびSQLiteでテーブルを複製、コピー、またはバックアップし、SQLとしてテーブルを作成します

    Oracle、PostgreSQL、DB2、MySQL、MariaDB、およびSQLiteデータベースシステムには、テーブルの作成と呼ばれる優れたコマンド機能があります。 これにより、別のテーブルまたは他のいくつかのテーブルのデータを使用してテーブルを簡単に複製できます。スクリプトにエラーがあり、バックアップ日を使用して元の状態に復元できる場合に備えて、SQLコマンドを使用して、テーブルを正確に「コピーアンドペースト」したり、元のテーブルでデータ操作クエリを実行する前にテーブルデータをバックアップしたりすることもできます。 。 名前を付けてテーブルを作成 選択によって取得されたデータセットまたは結果セットのコンテンツから構築された新しいテーブルを作成します データベース内にすでに存在するテーブルからのSQLクエリ。

    Create TableAsSQLステートメントの構文は次のとおりです。

    CREATE TABLE table_name [ ( column_name [, ...] ) ]
                 AS select [ * ! ( column_name [, ...] ) ] FROM source_table_name

    table_nameを、作成される新しいテーブルの名前に置き換えます。列名はオプションであり、コンマ区切りのリストに名前を含めることで複数の列を指定できます。それ以外の場合、新しいテーブルの構造は、行データとともに、Selectステートメントによって返される列名、タイプ、および列の数に基づきます。列名を指定する場合は、selectによって返されるのと同じ数の列が指定されている必要があることに注意してください。

    create table asコマンドの最後にあるselectステートメントは有効である必要があり、AS句の前にあるオプションの列リストの列数と一致する選択されたターゲットの数が含まれています。複数のテーブルからデータを取得する複雑なselectステートメントの場合があります。オプションの列リストが括弧内に指定されている場合、アスタリスク(*)はselectステートメントで使用できなくなります。

    たとえば、

    CREATE TABLE demo_backup
    AS SELECT * FROM demo;

    上記のSQLステートメントは、デモテーブルのデータと構造(列)を含むdemo_backupという名前の正確なレプリカバックアップテーブルを作成します。

    オプションの列リストを指定した場合に発生する可能性のあるエラーは次のとおりです。

    エラー:CREATE TABLE /ASSELECTの列数が一致していません

    このエラーメッセージが表示された場合、これは、括弧内の列のオプションのリストに、selectステートメントが返す行数とは異なる行数が含まれていることが原因です。指定された列の数が、選択した結果セットから期待される結果と同じであるかどうかを再確認してください。

    注一部のデータベースシステムは、元のテーブルで定義された列属性とインデックスを含む、別のテーブルの定義に基づいて空のテーブルを作成するCREATETABLE…LIKE構文をサポートしています。違いは、CREATETABLE…SELECT構文もデータをコピーすることです。


    1. 単純なPostgreSQLスクリプトで変数をどのように使用しますか?

    2. LEFT()関数がSQL Server(T-SQL)でどのように機能するか

    3. SQL Serverテーブルに2つのID列を含めることはできますか?

    4. SQLデータベースを簡単に復元–ステップバイステップガイド