こんにちは、じじグラマーのカン太です。
50歳目前、不景気の本業に焦りながら週末プログラマーをしています。
たくさんのデータの中から、自分が欲しいデータだけを取り出すにはどうしたらいいの?
データベースのお勉強第三弾。
この記事では、データベースの中から必要なデータを指定する方法を紹介します。
※第一弾はこちら↓
※第二弾はこちら↓
指定方法について
データベースの中身は、たくさんのデータが格納されています。
例えば、
select 顧客名 from 顧客マスタ
というSQLの命令をデータベースに渡すと、お客様の名前がずらーっと表示されます。
(selectという命令に見覚えのない方はこちらの記事をどうぞ)
実際の仕事などでは、「特定の条件の顧客情報を知りたい」ということがほとんだと思います。
条件を指定する命令も、SQLには用意されています。
select 顧客名 from 顧客マスタ where 顧客名 = “令和株式会社”
SQLには「where」句というものが用意されています。
SELECT UPDATE DELETE 文の加えて、データを指定する際に使います。
ここでは、
条件を指定するときは「where」句を使用する
とだけ覚えておいてください。
文法など詳細が知りたい方は、グーグル先生にお聞きしましょう。
ユニークキーについて
「令和株式会社」という会社が2件登録されていました。どちらのデータが正しいの?
先ほどのSQL文
select 顧客名 from 顧客マスタ where 顧客名 = “令和株式会社”
を実行すると、2件のデータが表示されました。
同じ会社が二件登録されてしまったのか、たまたま名前が同じだったのか。
リレーショナルデータベースには重複登録を防ぐため「ユニークキー」を指定することが可能です。
「ユニークキー」や「主キー」あるいは「プライマリキー」 と呼ばれることもあります。
(それらは少しずつ意味が違うそうですが、気にしません)
あるテーブルの中で、一つだけだと特定できる項目(カラム)をキーと呼びます。
この一つだけと特定できることを「一意に識別できる」と言います。
ここでは
テーブルの中で一意に識別できるカラムを「ユニークキー」と呼ぶ
と覚えておいてください。
インデックスについて
例えば、100万件の中からデータを特定するのって、時間かからないの?
受注の情報を管理するデータベースなど大量のデータを保存しているテーブルから、特定のデータを指定すると時間がかかる場合があります。
例えば、100万件のレコードの中からデータを検索するとき、1秒間に1万件のレコードを読み込めるコンピュータでも、100秒かかる計算になります。
スーパーのレジなどで、バーコードをピッと読み込み待つこと100秒、次の商品にぴっと待つこと100秒・・などという状況になったら、地獄絵図のような展開になりますね。
データベースには、検索を速くする仕組みが用意されています。
「インデックス」
と呼ばれるものです。
インデックスは、テーブルのカラムで指定し、指定したカラムを昇順や降順で並べ替えた状態で保持しています。
昇順や降順で並び替えられたカラムを検索すると、「二分探索」という方法で検索することが可能になります。(詳しくはグーグル先生にお聞きください)
つまり、ものすごく速くなります。
ここでは、
「インデックス」カラムで検索すると、レスポンスが飛躍的に向上する
とだけ覚えておいてください。
まとめ
今回の記事をまとめます。
・条件の指定は「WHERE」句を用いて行う
・「ユニークキー」はデータを一意に識別するカラムである
・「インデックス」カラムを用いるとレスポンスを向上させる
コメント