ここではMySQLでの主キーの設定ついて解説していきます。
主キーの設定
CREATE TABLE tb1(id INT PRIMARY KEY);
実行結果
Field | Type | Null | Key | Default | Extra |
id | int(11) | No | PRI |
書式
CREATE TABLE テーブル名(カラム名 データ型 PRIMARY KEY);
テーブルを作成したときのコマンドの最後に半角スペースで「PRIMARY KEY」を追加します。
複数定義する場合は、「,」で区切り定義します。
主キーとは
主キーとはレコードのうち1つを特定するのに使われる識別子で、
「値の重複をしない」、「空(null)にすることはできない」とカラムに設定することです。
主キーを設定することで、社員IDや商品IDなど重複しない1つのデータを定義することが可能です。
又、主キーを設定したカラムに重複した値やnullを登録しようとした場合はエラーになり登録することができません。
一意キーの設定
CREATE TABLE tb1(id INT UNIQUE);
実行結果
Field | Type | Null | Key | Default | Extra |
id | int(11) | YES | UNI | NULL |
書式
CREATE TABLE テーブル名(カラム名 データ型 UNIQUE);
テーブルを作成したときのコマンドの最後に半角スペースで「UNIQUE」を追加します。
複数定義する場合は、「,」で区切り定義します。
一意キーとは
一意キーとは、重複はできませんが、「空(null)」を入力することはできます。
連続番号の設定
CREATE TABLE tb1(id INT AUTO_INCREMENT PRIMARY KEY);
実行結果
Field | Type | Null | Key | Default | Extra |
id | int(11) | No | PRI | NULL | auto_increment |
書式
CREATE TABLE テーブル名(カラム名 データ型 AUTO_INCREMENT PRIMARY KEY);
テーブルを作成したときのコマンドの最後に半角スペースで「AUTO_INCREMENT PRIMARY KEY」を追加します。
複数定義する場合は、「,」で区切り定義します。
連続番号とは
連続番号付のカラムを指定する場合は、データ型は「INT」など整数値に定義します。
連続番号を指定したカラムはデータ挿入時に自動的に「1」、「2」・・・と入力されていきます。
連続番号の初期値を設定
ALTER TABLE tb1 AUTO_INCREMENT=0;
書式
ALTER TABLE テーブル名 AUTO_INCREMENT=初期値;
すでに存在するデータの数値より大きい値であれば「AUTO_INCREMENT」を初期値として設定することができます。
インデックスを設定
CREATE INDEX index_name ON tb1(name);
書式
CREATE INDEX インデックス名 ON テーブル名(カラム名);
インデックスとは
データを検索するとき、データの量が多い場合、全てのデータを検索すると時間がかかってしまいます。
これを解消するためにインデックスを設定し、データの検索にはインデックスを利用し素早い検索を行います。
又、主キーの設定時にインデックスは自動的に追加されます。
インデックスの削除
DROP INDEX index_name tb1;
書式
DROP INDEX インデックス名 テーブル名;
「DROP INDEX」コマンドでインデックスを削除します。
インデックスの確認
SHOW INDEX FROM tb1;
書式
SHOW INDEX FROM テーブル名;
「SHOW INDEX」コマンドでインデックスの確認ができます。
インデックスのまとめ
インデックスを設定することで検索速度を早くすると先ほど解説しましたが、インデックスを設定する項目が適していなかったり、インデックスをたくさんのカラムに設定してしまうと、逆に検索速度が遅くなってしまいます。
例えば重複するデータが多いカラムにはインデックスを設定しないほうがいいです。
重複するデータが少なければ少ないほど、インデックスの効果を発揮します。