SQL create tableでテーブル生成 DBMSごとに差異あり
  • facebookページ
  • twitterページ
  • 2019.09.05

    SQL create tableでテーブル生成 DBMSごとに差異あり

    テーブルを生成するSQL文、create tableについてまとめました。

    以下、MySQL前提のサンプルコードになります。データベースとして、MySQLのサンプルデータベースEmployeesを使っています。

    create table の使い方

    カラム名、INT型、日付型などのデータ型、NULLを許可するか、デフォルト値、プライマリーキーとなるカラムを指定します。

    指定可能なオプションには、他にもユニークキー指定やAUTO_INCREMENTなどがあります。

    データベース領域のタイプ、文字セットを指定します。

    primaryキーを後から追加設定する

    PRIMARYキーは、create table文に含めることも出来ますが、Alter table文でテーブル作成後に追加設定が可能です。

    インデックスキーを一時的にdropしてデータを大量に高速に削除するような運用をおこなう場合は、インデックスのみ設定しなおすためにalter tableで記述したSQLファイルを用意しておくとよいでしょう。

    foreignキーを後から追加設定する

    foreignキーもPRIMARYキー同様、create table文に含めることが可能です。

    しかし、後からインデックスのみ再設定することを想定して、alter table文でSQLファイルを用意しておくのが良いでしょう。

    default値を後から設定する

    対象カラムの情報をまるごと再設定することも可能です。

    default値以外に、カラム名、データ型、NULLの許可、カラムコメントの変更が可能です。

    selectの結果から、新しいテーブルを作成

    select文の結果を使って、新しいテーブルを作成できます。

    単純に元のテーブルを複製する場合は、以下のSQLを実行します。

    employeesテーブルを複製して、employees2テーブルを作成します。

    なお、データ構造のみ複製し、データをコピーしたくない場合は以下のSQLを実行します。

    WHERE 1=2という条件は常に偽となるため、データはコピーされません。

    create table実行時のエラー already exists

    create table実行時に、以下のエラーが出力されることがあります。

    create tableに「IF NOT EXISTS」をつけることで、テーブルが存在しないときのみテーブルを作成するようになり、エラーを抑制できます。

    主要DBMSのcreate table関連の差異

    Oracleはデフォルト値削除ができない

    Oracleでは、テーブルのカラムのデフォルト値を削除するDDLがありません。

    デフォルト値にNULLを設定することで、「デフォルト値を設定していない状態」と同じ振る舞いをさせることができます。

    MySQLは、テーブル構造を生成するSQL出力可能

    mysqlでは、既存データベースからテーブル構造を生成するSQLを出力することが可能です。

    create table、create algorithm(ビューのクリエイト)、プライマリキーやインデックス、制約(Foreignキー)の生成が含まれます。

    SQL Serverのselect~into文は独自仕様

    SQL Serverでは、selectで抽出したデータでtable createする場合の構文が、MySQLやOracleとは異なります。

    create tableのまとめ

    ポテパンダの一言メモ
    • create table でテーブルを作成できる
    • テーブル作成後にPRIMARYキー制約やForeignキー制約、Default値などの変更が可能
    • DBMSにより、create tableの仕様差異あり


    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE