Tips

2017.05.31

MySQLでプライマリキー、ユニークキーを作成するSQL

MySQLでプライマリキー、ユニークキーを作成するSQL

キー指定したりインデックスを張ったり、あんまり頻繁に行っていないのでSQLを忘れてしまったり、
そもそもよくわかっていなかったりしたので、ここにまとめます。

1.プライマリキー(主キー)

1-1.テーブル作成時に指定する場合

create table テーブル名(カラム名 型 primary key, ・・・・);
例:create table sample(id int primary key,cnt1 int,cnt2 int);

1-2.後から指定する場合

alter table テーブル名 modify column カラム名 型 primary key;
例:alter table sample modify column id int primary key;

1-3.プライマリキーを削除する場合

alter table テーブル名 drop primary key;
例:alter table sample drop primary key;

1-4.既存のプライマリキーを削除してから別のキーを追加する場合

alter table テーブル名 drop primary key ,add primary key(カラム名);
例:alter table sample drop primary key ,add primary key(cnt1);

1-5.複合主キー指定する場合

alter table テーブル名 add primary key idx1(カラム名1, カラム名2);
例:alter table sample add primary key(cnt1,cnt2);

1-6.インデックスの自動生成

なお、プライマリキーを指定すると、自動的にインデックスが作成されます。
show index from テーブル名;
例:show index from sample;
btree形式のインデックスが生成されています。キー名は「PRIMARY」になります。

2.ユニークキー

次にユニークキーを作成するSQLをまとめます。

2-1.テーブル作成時に指定する場合

create table テーブル名(カラム名 型 unique key, ・・・・);
例:create table sample2(id int unique key,cnt1 int,cnt2 int);

2-2.後から指定する場合

alter table テーブル名 modify column カラム名 型 unique key;
例:alter table sample2 modify column id int unique key;

2-3.ユニークキーを削除する場合

alter table テーブル名 drop index キー名
例:alter table sample2 drop index id;

2-4.複合ユニークキー指定する場合

alter table テーブル名 add primary key キー名(カラム名1, カラム名2);
例:alter table sample2 add unique key unq1(id,cnt2);

2-5.インデックスの自動生成

ユニークキーを指定すると、自動的にユニークインデックスが作成されます。
show index from テーブル名;
例:show index from sample;
btree形式のインデックスが生成されています。キー名は指定可能、またはユニーク制約のつくカラム名になります。

SQLが学べる 関連連載リンク

データベースの基礎が学べるSQL基礎講座
SQL基礎 連載

練習問題を通じてSQL理解度アップの人気連載!
SQL練習問題集

Recent News

Recent Tips

Tag Search