本記事は、株式会社ギックスの運営していた分析情報サイト graffe/グラーフ より移設されました(2019/7/1)
SQL(エスキューエル、英語的にはスィークェル)
本日はデータベースにおける「SQL」という言葉を解説します。SQLは以前ご説明したデータベースマネージメントシステム(DBMS)を「利用者が利用するための手段」です。
SQLは言語
SQLはしばしは「Structured Query Language」の頭文字であるといわれます*。直訳すると「構造化された問い合わせ言語」となります。まずここから「SQLは言語である」と説明させてください。何の為の言語でしょうか?それが”Q=Query”にあらわれていて「Query=問い合わせ」の為の言語なのです。
すなわち、データベースマネージメントシステム(DBMS)内で管理されているデータを利用者が見たいと思ったとき、利用者は「XXXのデータの中でZZZという条件に該当するデータをください」とDBMSに「問い合わせ」をします。するとDBMSは該当するデータを利用者に応答します。この「問い合わせ」に用いられる「言語」がSQLなのです。
*国際標準としては形式上「SQLという単語自体は何かの略語ではない」という表現がなされています。
具体例
前回、表(テーブル)に関して説明しました。その際に例として以下のようなテーブルをお見せしました。今回はこのテーブルを例にして説明をさせてください。以下のテーブルがDBMS内に存在したとします。
表の名前:総理大臣テーブル
氏名 | ふりがな | 出生日 | 出生地 | 出身校 | 死没日 | 死没地 |
伊藤博文 | いとうひろぶみ | 1841年10月16日 | 周防国熊毛郡 | 松下村塾 | 1909年10月26日 | 中国黒龍江省 |
黒田清隆 | くろだきよたか | 1840年11月9日 | 薩摩国鹿児島郡 | 1900年8月23日 | 東京府 | |
山縣有朋 | やまがたありとも | 1838年6月14日 | 長門国阿武郡 | 松下村塾 | 1922年2月1日 | 神奈川県小田原市 |
これに対して、利用者が 「総理大臣テーブルの中で、【出身校】が”松下村塾”の総理大臣の【氏名】を、データとしてください。」と問い合わせをしたとしましょう。この場合のSQLは以下のように表されます。
SELECT 氏名 FROM 総理大臣テーブル WHERE 出身校=’松下村塾’ |
すると、DBMSは以下の結果を応答します。結果データは表の形式で応答されます。
氏名 |
伊藤博文 |
山縣有朋 |
このようにDBMSの利用者はDBMS内のデータにSQLを用いて問い合わせを行うことにより、目的となるデータを得ることができるのです。
SQLはデータを取得するだけではありません
DBMSの目的は利用者にデータを提供することなので、SQLの代表的な使い方はデータの取得(上記のSELECT~の使い方)なのですが、その他にDBMSに対するさまざまな操作をSQLで行う事ができます。たとえばデータの追加です。そもそもDBMSの中にデータが格納されなければ、DBMSは利用者に何も提供できませんから、このような処理もSQLで行う必要があるのです。
SQLで行う処理をおおまかに説明すると以下の3つに分かれます。
[データ定義]
表(テーブル)を作成する
表(テーブル)を削除する
など
[データ操作]
表(テーブル)のデータを取得する
表(テーブル)のデータを削除する
表(テーブル)にデータを追加する
など
[データ制御]
表(テーブル)へのデータの変更を無効にして元に戻す。
など
関連記事(姉妹サイト):オススメ!SQL入門書のご紹介 「まずはこの2冊!」
データ分析用語:索引