PR

phpMyAdminの使い方_プライマリーキーの設定

テーブルには多くのデータが格納されています。格納されたすべてのデータの中から1つのデータを特定したいときには、そのデータが一意に識別できなくてはなりません。つまり他のデータの値と重複しないことが前提です。この仕組みとして、データベースにはユニークカラムという仕組みがあります。このユニークカラムの中で最も大切なキーとしてプライマリーキー(主キー)という仕組みがあります。
カラムにプライマリーキー制約を設定すると、カラムには他のデータの値と重複することのない値しか格納することができなくなります。またNULLも格納することができません。その結果、プライマリーキー制約が設定されたカラムの値を検索することで、テーブルの中でただ一つのデータを特定することができるのです。プライマリーキーはテーブルに1つしか設定することができませんが、対象となるカラムは1つだけではなく 複数のカラムの組み合わせに対して設定することができます。例えば2つのカラムの組み合わせに対して設定した場合、 2つのカラムに格納されている値の組み合わせが他のデータと重複することはできなくなります。

スポンサーリンク

プライマリーキーの設定

プライマリーキーの設定がない場合

プライマリーキーの設定がない状態で、テーブルにデータをセットしてみます。

データの挿入(新規)

1レコード追加したjinjiデータベースのstaff_list

表示タブをクリックすると

表示タブを選択されたjinjiデータベースのstaff_list

データの挿入(追加)

同じidを登録したstaff_list

IDにどのような数字を入れるかは、何らのチェックもありませんので、間違って同じ数字をidとして入力することができます。そのため、2番が「安藤なつ」なのか?「浅田哲也」なのかの識別がつかず、idとして意味をなさなくなります。

プライマリーキーの設定がある場合

プライマリーキーの設定

①テーブルを空にする。

プライマリーキーの設定は空の状態でおこないますので、既に入っている場合は、「操作」というタブをクリックして、「テーブルを空にする」を選択します。

「テーブルを空にする」を選択したstaff_list

②「構造」タブのクリック

プライマリーキーを設定する為に、「構造」タブをクリックします。

構造タブを表示したstaff_list

③「主」のクリック

idの右端のその他の「主」をクリックします。

プライマリーキーの設定画面

④プライマリーキーの設定完了

正常に実行されると、「主」がグレーとなり、リンクではなくなっています。idのとなりに鍵のマーク、そして、インデックスとしてidがプライマリーになっていることを示す表が表示されています。

プライマリーキーの設定完了を確認する画面

これで、プライマリーkeyの設定が有効となりました。

データの挿入(新規)

プライマリーキーが設定されている状態でデータを入力してみます。

挿入タブが表示されたstaff_list

データの挿入(追加)

同一のidを入力してエラーが表示されたstaff_list

このようにエラー表示されますので、idを重複して入力することができなくなります。id=2に変えれば、正しく追加されます。

idを変えて入力できたstaff_list

プライマリーキーの設定のタイミング

プライマリーキーはテーブルを作成する時に設定できます。

新規作成のクリック

新規テーブルを追加したjinjiデータベース

プライマリーキーの設定

カラムの右のインデックスでpraimaryをクリックすると、最初から、このカラムをプライマリーとすることができます。

インデックスで「primary」を選択した新規テーブル

インデックスにprimaryを選択して実行ボタンを押下する新規テーブル

スポンサーリンク

オートインクリメントの設定

オートインクリメントとは、テーブルにレコードが追加された際に自動的に連番をつけてくれる機能です。インクリメントとは、加算するという意味の英語で、つまり自動で加算するという事です。消したレコードは永久欠番となり、最後の一番大きい値に続けて連番がつくられます。

設定

「構造」タブのクリック

構造タブを表示したtables

「操作」タブをクリック

「操作」タブをクリックして、idの「変更」をクリックします。

構造タブの変更を選択したtables

するとidというカラムの内容を変更する画面が表示されます。

idのカラム内容変更画面

A_Iにチェックを入れて「保存」をクリック

オートインクリメント(A_I)にチェックを入れたカラム内容変更画面

これでオートインクリメントが設定されました。idカラムのその他欄に「AUTO_INCREMENT」と表示されます。

「AUTO_INCREMENT」と表示されたidカラムのその他欄

データの挿入

オートインクリメントを設定した状態で、データを挿入してみます。

「挿入」タブのクリック

①id,nameの入力

これまではidのところに数字を入力していましたが、今回は必要ありません。
nameを入力して「実行」をクリックすると

オートインクリメント設定済みの挿入タブの画面

②入力結果

「id 3の行を挿入しました」と表示されました。

挿入確認画面

③「表示」タブのクリック

「表示」をクリックすると

表示タブを選択したtables

データを削除後、データの挿入

オートインクリメントで採番されたデータを削除してみます。
id=2を削除した後、データを追加するとidは何番がふられるか?というと、id=2は永久欠番となり、4番が採番されます。

データの削除

①id=2のレコード削除

id=2、name=小野妹子さんのレコードを削除してみます。

レコード削除を実行したtables

②削除結果

実行結果が表示されたtables

データの挿入

①「挿入」タブをクリック

nameを入力して、「実行」をクリック

オートインクリメント設定済みの挿入タブの画面

②入力結果

「id 4の行を挿入しました」と表示されました。

挿入確認画面

③「表示」タブのクリック

「表示」をクリックすると

表示タブを選択したtables

id=4が採番されて、id=2は欠番となっています。

タイムスタンプの設定

カラム(タイムスタンプ)の追加

コンピューターが内蔵している時計を使いtimestampとして登録することで、データベースにその時点の日付と時刻を記録することができます。

データベース(jinji)の選択

jinjiデータベースのテーブル一覧

テーブル(staff_list)の選択

staff_listの構造をクリックします。

構造タブを表示したstaff_list

カラム数と位置の指定

追加するカラムの数と位置を指定して、実行をクリックします。

カラム数と位置の指定画面

カラム設定画面の表示

カラム設定画面

タイムスタンプの設定

名前=stampとして、データ型=TIMESTAMPとして「保存する」をクリックします。

データ型=TIMESTAMPを設定したstaff_list

「表示」タブのクリック

タイムスタンプが表示されたstaff_list

データの追加

データを1件追加してみます。

レコードを追加したstaff_list

timestampのところは、何も変更せず「実行」をクリックします。

追加したレコードの表示されたstaff_list

データを挿入した日時が、オートインクリメントと同じ様に格納されます。

留意:
timestamp型は、日付と時刻の両方を含む型で、表現できる範囲は「1970-01-01 00:00:01」から「2038-01-19 03:14:07」までです。これはtimestampの2038年問題と言われ、MySQLのtimestampが1970年1月1日を0として32ビットの整数で計算している為、2038年になると32ビットを使い切って時計が1970年に戻ってしまうという現象です。