【初心者用】SQL インデックスとビューについてまとめてみた
公開日: 2022/6/17
更新日: 2022/6/15
参考サイト
https://style.potepan.com/articles/25208.htmlSQLのインデックスとは? 作成、確認、削除方法からメリットまで解説!
https://medium-company.com/sql-index/
SQL インデックス(INDEX)を作成・削除する
http://dbonline.s25.xrea.com/sqlite/index/index3.html
UNIQUEインデックス
https://www.sejuku.net/blog/52356
SQL入門 PRIMARY KEY(主キー)制約とは? 追加や削除についても解説
https://style.potepan.com/articles/26878.html
SQL 主キー(PRIMARY KEY)制約って何? サンプルコードで基本的な使い方を確認しよう!
https://smallit.co.jp/blog/a1015/
BLOG SQLのビューについて
https://products.sint.co.jp/siob/blog/view
ビューとは? 使い方を解説
https://style.potepan.com/articles/25504.html
SQLのビューって何? 基本的な使い方を理解しよう
https://cs.wingarc.com/manual/drsum/5.5/ja/UUID-3b6e70a4-5a0d-205e-4b2b-fcb2df959cfd.html
ALTER VIEW ビューの定義を変更する
1. 【初心者用】SQL インデックスとビューについてまとめてみた
10. PRIMARY KEYを作成する
構文
ALTER TABLE テーブル名 ADD PRIMARY KEY (カラム名1, カラム名2);
では復習もかねて新しいテーブルを作成する
create table staff4 (id int(10), name varchar(20), age int(10), area varchar(20));
idカラム、 nameカラム、 ageカラム、 areaカラムを作成
作成したidカラムとnameカラムをプライマリーキー(主キー)に設定する
alter table staff4 add primary key(id, name);
プライマリーキーを作成
作成されたプライマリーキーを確認する
show index from staff4;
Key_name が PRIMARY になっていることが確認できる
このとき、Non_unique が 0になっていて、対象のカラムに重複したデータを入れることはできないことがわかる
ALTER TABLE テーブル名 ADD PRIMARY KEY (カラム名1, カラム名2);
では復習もかねて新しいテーブルを作成する
create table staff4 (id int(10), name varchar(20), age int(10), area varchar(20));
idカラム、 nameカラム、 ageカラム、 areaカラムを作成
作成したidカラムとnameカラムをプライマリーキー(主キー)に設定する
alter table staff4 add primary key(id, name);
プライマリーキーを作成
作成されたプライマリーキーを確認する
show index from staff4;
Key_name が PRIMARY になっていることが確認できる
このとき、Non_unique が 0になっていて、対象のカラムに重複したデータを入れることはできないことがわかる
11. PRIMARY KEY(主キー)を後から追加する
構文
ALTER TABLE テーブル名 ADD PRIMARY KEY(列名);
新しいテーブルを作成する
menuテーブルを作成
まずはPRIMARY KEYなしで作成する
create table menu (number int(10), menu_name varchar(20), price int(10));
テーブルの状態を確認する
desc menu;
SQLの descは、データベースオブジェクトの定義情報を表示するコマンド
PRIMARY KEY (主キー)を設定していないため、Keyの項目は空欄になっていることがわかる
では、ALTER TABLE で numberカラムに PRIMARY KEY を設定する
alter table menu add primary key(num
これで numberカラムに PRIMARY KEYを設定することができた
ではデータオブジェクトの情報を確認する
desc menu;
Keyの項目が設定されていることを確認できた
ALTER TABLE テーブル名 ADD PRIMARY KEY(列名);
新しいテーブルを作成する
menuテーブルを作成
まずはPRIMARY KEYなしで作成する
create table menu (number int(10), menu_name varchar(20), price int(10));
テーブルの状態を確認する
desc menu;
SQLの descは、データベースオブジェクトの定義情報を表示するコマンド
PRIMARY KEY (主キー)を設定していないため、Keyの項目は空欄になっていることがわかる
では、ALTER TABLE で numberカラムに PRIMARY KEY を設定する
alter table menu add primary key(num
これで numberカラムに PRIMARY KEYを設定することができた
ではデータオブジェクトの情報を確認する
desc menu;
Keyの項目が設定されていることを確認できた
12. PRIMARY KEYを削除する
構文
ALTER TABLE テーブル名 DROP PRIMARY KEY
先程作成した menuテーブルの PRIMARY KEY を削除する
alter table menu drop primary key;
これで PRIMARY KEY を削除することができた
削除されているか確認する
削除されていることを確認できた
ALTER TABLE テーブル名 DROP PRIMARY KEY
先程作成した menuテーブルの PRIMARY KEY を削除する
alter table menu drop primary key;
これで PRIMARY KEY を削除することができた
削除されているか確認する
削除されていることを確認できた
13. まとめ
PRIMARY KEYの設定は、テーブルの検索スピードを早くするメリットがある、実際の実務でもよく使うため、操作の仕方について何回も練習して実践で活かせるようにしていこう。
2. PRIMARY KEYを削除する
構文
ALTER TABLE テーブル名 DROP PRIMARY KEY
先程作成した menuテーブルの PRIMARY KEY を削除する
alter table menu drop primary key;
これで PRIMARY KEY を削除することができた
削除されているか確認する
削除されていることを確認できた
ALTER TABLE テーブル名 DROP PRIMARY KEY
先程作成した menuテーブルの PRIMARY KEY を削除する
alter table menu drop primary key;
これで PRIMARY KEY を削除することができた
削除されているか確認する
削除されていることを確認できた
3. まとめ
PRIMARY KEYの設定は、テーブルの検索スピードを早くするメリットがある、実際の実務でもよく使うため、操作の仕方について何回も練習して実践で活かせるようにしていこう。
4. インデックスとは
インデックスは、テーブルにある情報を検索するときに、どこに何があるのかわかるようにするもの 索引ともいわれる
(テーブルの処理を高速化する)
(テーブルの処理を高速化する)
5. インデックスを作成するメリット・デメリット
メリット
データが多い場合に検索スピードが向上する
デメリット
データの追加や並び替えをするときに処理速度が低下する
基本的にインデックスは、データ数が多いときに使うようにする
データが多い場合に検索スピードが向上する
デメリット
データの追加や並び替えをするときに処理速度が低下する
基本的にインデックスは、データ数が多いときに使うようにする
6. インデックスを作成する
構文
CREATE INDEX インデックス名 ONテーブル名 (カラム名)
復習もかねて新しいテーブルを作成する
staffテーブルを作成する
create table staff (id int(10), name varchar(20), area varchar(20));
idカラム、 nameカラム、 areaカラムを作成
idカラムにインデックスを作成する
create index id_index on staff(id);
これで idカラムに対して indexを作成することができた
作成したインデックスを確認する
show index from staff;
作成したインデックスが、 Key_nameの値が id_index になっていることがわかる
また Non_unique が 1 となっている場合は、インデックスを作成した対象のカラムで重複したデータを格納することができるという意味になる
またインデックスの作成は、ALTER TABLE でもインデックスを作成することもできる
新しいテーブルを作成する
staff2テーブルを作成する
create table staff2 (id int(10), name varchar(20), area varchar(20), department varchar(20));
ALTER TABLE でインデックスを追加する
alter table staff2 add index id_index(id);
作成したインデックスを確認する
show index from staff2;
Key_name が id_index となっていてインデックスが作成されていることがわかる
では重複したデータを格納できないように設定する操作をしていく
重複した値を許可しないように設定するには、 UNIQUEインデックスを使用する
UNIQUEインデックスの構文
CREATE UNIQUE INDEX インデックス名 ON テーブル名(カラム名1, カラム名2)
では改めて新しいテーブルを作成する
staff3テーブルを作成
create table staff3 (id int(10), name varchar(20), age int(10));
作成したテーブルのidカラムに UNIQUEインデックスを設定する
staff3テーブルにデータを追加していく
insert into staff3 (id, name, age) values (1, '佐藤次郎', 32), (2, '鈴木一郎', 33), (3, '平山次郎', 29), (4, '大石正明', 30);
staff3テーブルの作成
idカラムが重複したデータを追加する
insert into staff3 (id, name, age) values (1, '田沢英二', 33);
CREATE INDEX インデックス名 ONテーブル名 (カラム名)
復習もかねて新しいテーブルを作成する
staffテーブルを作成する
create table staff (id int(10), name varchar(20), area varchar(20));
idカラム、 nameカラム、 areaカラムを作成
idカラムにインデックスを作成する
create index id_index on staff(id);
これで idカラムに対して indexを作成することができた
作成したインデックスを確認する
show index from staff;
作成したインデックスが、 Key_nameの値が id_index になっていることがわかる
また Non_unique が 1 となっている場合は、インデックスを作成した対象のカラムで重複したデータを格納することができるという意味になる
またインデックスの作成は、ALTER TABLE でもインデックスを作成することもできる
新しいテーブルを作成する
staff2テーブルを作成する
create table staff2 (id int(10), name varchar(20), area varchar(20), department varchar(20));
ALTER TABLE でインデックスを追加する
alter table staff2 add index id_index(id);
作成したインデックスを確認する
show index from staff2;
Key_name が id_index となっていてインデックスが作成されていることがわかる
では重複したデータを格納できないように設定する操作をしていく
重複した値を許可しないように設定するには、 UNIQUEインデックスを使用する
UNIQUEインデックスの構文
CREATE UNIQUE INDEX インデックス名 ON テーブル名(カラム名1, カラム名2)
では改めて新しいテーブルを作成する
staff3テーブルを作成
create table staff3 (id int(10), name varchar(20), age int(10));
作成したテーブルのidカラムに UNIQUEインデックスを設定する
staff3テーブルにデータを追加していく
insert into staff3 (id, name, age) values (1, '佐藤次郎', 32), (2, '鈴木一郎', 33), (3, '平山次郎', 29), (4, '大石正明', 30);
staff3テーブルの作成
idカラムが重複したデータを追加する
insert into staff3 (id, name, age) values (1, '田沢英二', 33);
7. インデックスの削除
インデックスを削除したい場合、 DROP INDEX構文を使用する
構文
DROP INDEX インデックス名 ON テーブル名
先程作成した staff2テーブルの インデックスを削除する
staff2テーブルのインデックス名: id_index
drop index id_index on staff2;
これで staff2テーブルのindexを削除することができた
削除できたか確認
staff2テーブルが削除されていることがわかる
構文
DROP INDEX インデックス名 ON テーブル名
先程作成した staff2テーブルの インデックスを削除する
staff2テーブルのインデックス名: id_index
drop index id_index on staff2;
これで staff2テーブルのindexを削除することができた
削除できたか確認
staff2テーブルが削除されていることがわかる
8. PRIMARY KEY(主キー)制約
PRIMARY KEY(主キー)は、データベースに格納されたレコードを識別するために設定する
9. PRIMARY KEY(主キー)のメリット
テーブルの検索スピードが早くなったり、データの整合性が担保されるなどがあげられる