【SQL】PRIMARY KEY制約の作成・削除・追加・変更方法まとめ
  • facebookページ
  • twitterページ
  • 2020.05.29

    【SQL】PRIMARY KEY制約の作成・削除・追加・変更方法まとめ

    PRIMARY KEY(主キー)とは?

    PRIMARY KEYとは、値を指定することである1行を完全に特定できるという役割を担った列のことです。

    会社で言えば社員番号やマイナンバーのように、番号によって個人を紐付けるイメージですね。

    PRIMARY KEYは、テーブルごとに1つだけ設定できます。

    列(カラム)にPRIMARY KEY制約を設定した場合、列には他の行の値と重複しない値のみ格納されるようになります。また、NULLも格納できないため、何かしらの値が格納されます。

    これによって、PRIMARY KEY制約を設定した列の値を検索すると、テーブルの中で唯一のデータを特定可能です。

    PRIMARY KEYの役割

    PRIMARY KEYの役割は、大きく分けて次の2つあります。

    • テーブルに格納されたデータの整合性を保証する
    • テーブルの検索スピードを速くする

    PRIMARY KEYは前述したように、他のデータと重複しないユニークな値が設定されます。

    そのため、PRIMARY KEYが設定されたデータ群は整合性が保証されていると言えるのです。

    また、PRIMARY KEYで検索をかけた場合、必要なデータを特定できるため検索スピードもアップします。

    データベースのテーブルのほとんどは、PRIMARY KEYが設定されているといっても過言ではありません。

    設定することにデメリットもなく、上記にあげた重要な役割がPRIMARY KEYにはあります。

    PRIMARY KEY制約の作成方法

    PRIMARY KEY制約は、基本的にテーブルを作成する際に一緒に設定します。

    テーブル作成と合わせてPRIMARY KEY制約を設定する場合の書式は次の通りです。

    複数のカラムと組み合わせてPRIMARY KEY制約を設定する場合は、次の通りです。

    PRIMARY KEYは、カラムのデータ型の後ろに記述します。

    また、PRIMARY KEYを設定するカラムには、「NOT NULL制約」の設定が必要です。

    明示的に設定しなくてもエラーは発生せず、NOT NULL制約は自動的に設定されます。

    では、サンプルで入力方法を確認してみましょう。

    「sample_tb」にユーザーID、名前、年齢、性別をもったテーブルを作成すると同時に、ユーザーID(user_id)にPRIMARY KEYを設定しました。

    PRIMARY KEYの設定ができたか確認してみると、次のような形になっているはずです。

    user_idのKeyカラムに「PRI」と表示されれば、PRIMARY KEYの設定ができています。

    PRIMARY KEYを後から追加する

    作成時にはPRIMARY KEYを設定せず、後から追加したい場合は、次のコマンドで設定可能です。

    では、先ほどのテーブルを少し変更して確認してみましょう。

    このテーブルを作成すると、テーブルの定義は次のようになっているはずです。

    Keyカラムに「PRI」が表示されていないので、PRIMARY KEYが定義されていないのが確認できますね。

    ここで、先ほど説明したALTER TABLE文で「ユーザーID(user_id)」にPRIMARY KEY制約を追加します。

    上記のように、ALTER TABLE文によってuser_idにPRIMARY KEYを後から追加できました。

    PRIMARY KEYを削除する

    設定したPRIMARY KEY制約を削除したい場合は、次のコマンドを入力します。

    こちらもサンプルで確認してみましょう。

    先ほど「PRIMARY KEYを後から追加する」で追加したPRIMARY KEYを削除してみます。

    テーブルを表示してみると、PRIMARY KEYが削除されているのがわかります。

    PRIMARY KEYを変更する

    PRIMARY KEYを別のカラムに変更するSQLコマンドはありません。

    PRIMARY KEYを変更したい場合は、一度PRIMARY KEYを削除してから新規作成もしくは追加します。

    PRIMARY KEYの削除は「PRIMARY KEYを削除する」をPRIMARY KEYの追加は「PRIMARY KEYを後から追加する」を参考にしてください。

    PRIMARY KEYを複数のカラムに追加する

    PRIMARY KEYは、テーブルに1つのみ設定できると解説しましたが、対象になるカラムは 1つのみではなく複数のカラムを組み合わせて設定可能です。

    例えば、2つのカラムを組み合わせてPRIMARY KEYを設定すると、 2つのカラムに格納された値の組み合わせは他のデータと重複しません。

    ではサンプルコードでPRIMARY KEYを複数のカラムに追加してみましょう。

    ここでは「ユーザーID(user_id)」と「作成年(create_year)」にPRIMARY KEYを定義してみます。

    複数のカラムにPRIMARY KEYを設定する場合は、カンマ区切りでつなげればOKです。

    user_idとcreate_yearにPRIMARY KEYが設定できました。

    試しにデータを追加してみましょう。

    PRIMARY KEYを設定した user_idとcreate_yearの値は、2つのカラムの組み合わせでは重複していないので、user_idの「1」が重複したデータでも問題ありません。

    ただし、次のようにuser_idとcreate_yearの値の組み合わせが、他のデータと重複している場合はエラーになります。

    PRIMARY KEYをUPDATEする方法

    PRIMARY KEYをUPDATE文で書き換えてみましょう。

    ここでは、「PRIMARY KEYを複数のカラムに追加する」で追加したデータのuser_idを更新してみます。

    ORDER BYを設定しないと、idが重複してエラーになってしまうためidを降順に設定しています。

    まとめ

    SQLのPRIMARY KEYについて解説しました。

    PRIMARY KEYは、テーブル作成においてほぼ必須で設定する重要な機能です。

    ぜひこの記事を参考にPRIMARY KEYを使いこなしてください。



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

    この記事をシェア

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









    ABOUT US

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

    READ MORE