【初心者用】SQL インデックスとビューについてまとめてみた

参考サイト

https://style.potepan.com/articles/25208.html
SQLのインデックスとは? 作成、確認、削除方法からメリットまで解説!

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になっていて、対象のカラムに重複したデータを入れることはできないことがわかる

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の項目が設定されていることを確認できた

12. 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 を削除することができた

削除されているか確認する



削除されていることを確認できた

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);

7. インデックスの削除

インデックスを削除したい場合、 DROP INDEX構文を使用する

構文

DROP INDEX インデックス名 ON テーブル名

先程作成した staff2テーブルの インデックスを削除する

staff2テーブルのインデックス名: id_index

drop index id_index on staff2;



これで staff2テーブルのindexを削除することができた

削除できたか確認



staff2テーブルが削除されていることがわかる

8. PRIMARY KEY(主キー)制約

PRIMARY KEY(主キー)は、データベースに格納されたレコードを識別するために設定する

9. PRIMARY KEY(主キー)のメリット

テーブルの検索スピードが早くなったり、データの整合性が担保されるなどがあげられる