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練習問題集