今回は、「SQLの基礎の基礎の基礎」についてまとめてみました。
「SQLって何?それ美味しいの?」レベルの人に読んで頂けると嬉しいです。(もちろん上級者の方も大歓迎ですが!)
なるべく分かりやすく書くので、参考にして頂けると嬉しいです。
SQLとは何か?【SQL概要】
そもそも、「SQL(Structured Query Language)」とは何なのでしょうか?
一言でいうと、SQLとは、「データベースを操作するための言語」です。
SQLを使うことで、データベースに格納したデータを操作することができます。
例えば、データを取り出したり、追加したり、削除したり、更新したりすることができるということです。
SQLは、データベースを操作するための言語
データベースの仕組みについて
SQLが「データベースを操作するための言語」だということは分かりました。では、「データベース」とは何なのでしょうか?
簡単に説明すると、データベースとは、「データを格納するための箱」的なものです。(当たり前ですが。。)
このデータベースの中に、様々なデータが格納されています。
では、どのような形式でデータは格納されているのでしょうか?
データを格納する方法(データベースの種類)はたくさんあります。
例えば、「リレーショナル型データベース」「階層型データベース」「ネットワーク型データベース」「キー・バリュー型データベース」などです。
しかし、最近では、一番最初に挙げた「リレーショナルデータベース」が主流になっています。
そこで今回は、主に「リレーショナルデータベース」について説明していきます。
リレーショナルデータベースについて
「言葉で説明するより視覚的に理解した方が早い」ということで、具体的な図を作ってみました。以下に示しているのが、簡易的な「リレーショナルデータベース」です。
大きな特徴は、横軸と縦軸からなる「表」でデータが管理されている点です。
リレーショナルデータベースにおいては、表全体のことを「テーブル」、縦の列のことを「カラム」、横軸、つまりそれぞれのデータそのものを表している部分を「レコード」と表現します。
これらは、リレーショナルデータベースを扱うにあたっては必ず触れることになる言葉なので、しっかりと覚えておいて下さい。
以上が、簡単にではありますが、リレーショナルデータベースの説明です。SQLは、これらの「レコード」や「カラム」を指定することでデータベース操作を行います。
次のセクションでは、具体的なSQLの書き方を見ていきます。
- データベースとは、「データを格納するための箱」的なもの
- 「リレーショナル型データベース」が主流
- テーブル・レコード・カラムは覚えておく
データベース補足1:DBMSについて
データベースは、一般的には「DBMS(データベースマネジメントシステム)」などと言われています。
要は、データベースだけではただの「データを格納するためだけの箱」なので、それを支えるためのシステムが必要で、そのシステムも合わせた総称が「DBMS」だということです。
とはいえ、データベースとDBMSはしっかりと区別されているわけではなく、一般的には、DBMSのことをデータベースと呼んだりします。
例えば、SQLite、MySQLなどは、厳密にはDBMSですが、一般には「データベース」と呼ばれています。
なので、「DBMS=データベース」と思ってもらって大丈夫です。混乱しないように注意して下さい。
DBMSについては、こちらの記事が分かりやすいので、理解を深めたい方は読んでみると良いでしょう。
データベース補足2:NoSQLについて
最近データベース関連でよく聞く言葉として、NoSQL(Not only SQL)があります。
NoSQLとはその名の通り、「SQLを使わずにデータを保存するデータベース」のことです。
具体的には、Key-Value型データベース(Key-Valueストア(kvs))のことを指して言う場合が多いです。
今回はNoSQLの解説はしませんが、頻繁に出てくる言葉なので頭の片隅に置いておきましょう。
参考記事:NoSQLとは?RDBMSと比較しながら分かりやすく解説
※2022年5月1日追記:KVSについて記事にまとめました!
基礎的なSQLの書き方をまとめる
ここまでで、「SQLとは何か?」「データベースとは何か」については、ザックリと理解できたと思います。そこで次に、「具体的なSQLの書き方」について説明していきます。
あくまで初歩の初歩ですが、これさえ理解しておけば「SQL初心者レベル」には達することができるので参考にして頂けると嬉しいです。
それでは一つずつ見ていきましょう。
テーブルを作成するSQL
まずは、テーブルを作成する方法です。下記のようなSQLを記述することで、任意の構成のテーブルを作成することができます。
「型」とは、カラムのデータ形式のことです。
例えば、データが整数なら「INTEGER」を記述し、データが文字列なら「TEXT」を記述するといった感じです。
この辺りは、実際にテーブルを作るときにしっかりと考えて、適切な型を指定するようにしましょう。
これでテーブルの作成はできました。次に、データを挿入する方法を見ていきましょう。
データを挿入するSQL
テーブルにデータを挿入するには、下記のSQLを実行します。
ポイントは、カラムと値の記述の順序を揃えることです。カラムの順序と値の順序は対応しているので、適切な順序で記述しましょう。
データを更新するSQL
テーブルのデータを更新するには、以下のSQLを記述します。SETの部分に、更新するカラム名と、新たなデータを記述しましょう。
テーブルを削除する
テーブルを削除したい場合は、以下のSQLを記述します。
テーブルからデータを取り出すSQL
ここまで、テーブルの作成、データの挿入、更新、削除について見てきました。
では、これらの処理を行って作成したテーブルから、データを取り出すにはどうすれば良いのでしょうか。
データを取り出すには、以下のコードを記述します。このように記述することで、FROMに指定したテーブルの、任意のカラムのデータを取り出すことができます。
これが本当に「基礎の基礎の形」なので、しっかりと頭に入れておくようにしましょう。
※全てのカラムを取得したい場合は、「*」をSELECTの後に書けばOKです。わざわざ全てのカラム名を記述する必要はありません。
特定の条件のデータを処理するSQL
ここまでは、「全てのデータを処理する方法」でした。
つまり、テーブルの全データや任意のカラムのデータは取り出せても、特定の条件のデータを個別で処理することはできていなかったのです。
では、特定の条件のデータを処理するにはどうすればいいのでしょうか。
条件指定には、以下のようにWHERE文を使います。
WHEREと書いた後に、具体的な条件を指定できます。
ここの条件指定は柔軟に行えます。例にあるように、=を用いることで、特定のレコードを取り出すこともできるし、ANDやORで条件を繋げることで、複数条件の指定も可能です。
取り出したいデータに合わせて、柔軟に条件を指定するようにしましょう。
WHERE以外にも、取り出すデータの条件を指定する方法はあります。
例えば、取り出すデータの順序の指定です。
下記のように、ORDER BYを記述することで、昇順(ASC)、もしくは降順(DESC)でデータを取得することが可能となります。
ちなみに、デフォルトの場合は昇順(ASC)が適用されるので、わざわざASCを記述する必要はありません。データを降順に並べたいときだけ、「DESC」を指定するようにしましょう。
グルーピングについて
最後に紹介するのは、「グルーピング」と呼ばれる手法です。この方法を使うことで、「グループ別」にデータを取得することが可能となります。
例えば、カラム(年齢)を指定した場合、年齢のグループごとにデータ(レコード)を取得できるということです。
この手法は、例えば、「年齢ごとにデータを取得して傾向を比較する」などの作業で威力を発揮します。とても便利な方法なので、覚えておくようにしましょう。
難しそうですが、書き方はいたってシンプルです。例えば、以下のように記述します。
このように「GROUP BY」を書くことで、age(年齢)ごとにレコードの値をグループ分けし、COUNT関数を使ってそれぞれのグループの数を数えることで、「どの年齢に何人いるか」のデータを取得することができます。
SQLには、COUNTのように、データを集計する際に使える、様々な関数(集合関数と言います)が用意されています。他にも多くの種類があるので、興味のある方は調べてみて下さい
ここまで、「基礎的なSQLの書き方」について説明してきました。
これだけ抑えておけば、「SQLの基礎の基礎の基礎」についてはマスターしたと言っていいでしょう。
SQL基礎の基礎の基礎まとめ
今回は、SQLについて、基礎的な部分を解説してきました。最後にポイントをざっくりとまとめます。
- SQLは、データベースを操作するための言語
- データベースはデータを入れるための箱的なもの(リレーショナル型データベースが主流)
- SQLで様々なキーワードを記述することで、「テーブルの作成」「データの挿入」「データの取得」等のデータベース操作が可能となる
今回紹介したものは、あくまでSQLの本当に初歩的な部分です。
これだけでは実務用の学習としては全然足りないので、興味のある部分を自分で勉強してみて下さい。