プログラミング言語やフレームワークを問わず、データベースを使うときには何かしらの形でSQLにかかわることになるでしょう。言い方を変えれば、SQLをマスターしておけば今後いろんな場面でメリットがあるともいえますね。
本記事では、SQLを学ぶ上で知っておくと、学習がスムーズになる10個のエッセンスをお教えします。これからSQLを学習する方だけでなく、学習を始めて間もない方でも参考になる内容です。
エッセンス1:データベースとテーブルを理解する
SQLを学習するには、最低でもデータベースやテーブルとは何かを知る必要があります。まずはここからです。厳密さを求めず、むずかしい話は省略したので、気楽にお読みください。
最初に、テーブルからです。テーブルとは、データを行単位に保存したものです…、というとまったく意味不明なので、別の説明をしましょう。例えば、社員のデータを書類にまとめたいとき、どうしますか?たいていの人は表でまとめるでしょう。Excelでいうとこんな感じです。
<図1:Excelで社員の情報をまとめる>
この表に相当するのが、テーブルです。さらに複数のテーブルをまとめたのがデータベース(厳密にはリレーショナルデータベースと呼ばれる種類のもの)です。
<図2:データベースとはテーブルをまとめたもの>
ただし、データベースとは本来もっと広い意味を持つので、ここでは単にテーブルから見たデータベースの定義と思ってください。
エッセンス2:SQLとは何をするためのものか
では本命の話題、SQLとは何をするためのものでしょうか?
SQLとは、超シンプルにいうと以下のような操作をする言語です。
①テーブルを入れるデータベースを作る
②データを入れる器であるテーブルを作る
③データを編集(登録・更新・削除)する
④データを抽出する
<図3:SQLとは何をするものか>
もっとありますが、今のところはこの程度に理解できれば十分です。
エッセンス3:SQLができると何がうれしいのか
フレームワークにもよりますが、実はSQLをまったく知らなくてもアプリは組めてしまいます!
例として、RubyのWebフレームワークであるRuby on Railsを見てみましょう。usersというテーブルから全データを抽出したときのコマンドと実行結果です。
<図4:テーブルを一覧表示するときのコマンドと実行結果>
User.allという一文だけで、Select文(SQLの基本構文)が自動生成されているのが確認できます。たいていのフレームワークで、直接SQLを書かなくてもデータを編集できる機能や仕組みを持っています。
それならSQLって要らなくない?と思ってしまいますが、そうはいきません。この例ではカンタンだからよいのですが、実際はもっと複雑です。背後でどのようなSQLが生成されているかを目で見て確認しないと、解決できない問題も起こり得ます。
やはり冒頭にあったように、SQLは知っておく必要があるのです。
エッセンス4:SQLをどのように学習するか(ブラウザで)
SQLの学習環境をどうするか決めましょう。
プログラミング言語を学習するときは、自分のPCやクラウド上に環境を作ります。SQLも同じで、自分のPCに環境を作るか、SQLを学ぶWebサービスを使って学習するかのいずれかになります。
自分のPCに環境を作る方法は、このあとすぐ解説します。そうはいっても…、まずは環境づくりというよりもSQL文を書いてみたいですよね。環境づくりで挫折してSQLの学習をあきらめてしまっては意味がありません。
よって、まずは以下のようにブラウザにてSQLを実行できるサービスを利用することをオススメします。以下が代表例です。
- SQL攻略 (http://sql.main.jp/)
- paizaラーニング (https://paiza.jp/works/sql/primer/)
- progate (https://prog-8.com/)
その他にもありますので、「SQL ブラウザ」などのキーワードで調べてみてください。
エッセンス5:SQL実行環境を自分のPCに!
ブラウザでSQLの学習を一段落できたなら、次は自分のPCに環境を作りましょう!
Macで解説をしていますが、Windowsも同じ手順でOKです(2021/01現在)。ターミナルをコマンドプロンプト、ダウンロードしたファイルのパスをお使いのPCに合わせればWindowsでも大丈夫なことを確認済みです。
こちらのページ「 https://www.sqlite.org/download.html 」へアクセスしてください。
<図5:SQLiteダウンロード>
お使いのPCのOSに合ったものをダウンロードしてください。ダウンロードしたZIPファイルを解凍すると、図にあるような3ファイルができます。
<図6:zipファイルを解凍>
3ファイルができたら、次は以下の2つのコマンドを順に実行してください。Macの「ダウンロード」フォルダに「sqlite-tools-osx-x86-3340100」というフォルダで解凍された場合、このようになります。
cd /Users/xxxxx/Downloads/sqlite-tools-osx-x86-3340100/ (Enterキー) sqlite3 hoge.sqlite3 (Enterキー) |
すると、以下のようになります。
% sqlite3 hoge.sqlite3 |
はい!これでセットアップ完了です。
試しに以下のコマンドを順に実行してください。
① CREATE TABLE employee(id integer, name text, gender integer, age integer, address text, department integer); ② INSERT INTO employee values(1, '佐藤 一郎', 0, 25, '東京都千代田区飯田橋1丁目', 2); ③ INSERT INTO employee values(2, '田中 良子', 1, 30, '東京都足立区青井2丁目', 1); ④ INSERT INTO employee values(3, '鈴木 三郎', 0, 28, '東京都品川区荏原3丁目 ', 3); ⑤ INSERT INTO employee values(4, '山本 恵子', 1, 22, '東京都千代田区愛住町4丁目', 1); |
次に以下を実行してください。
select * from employee; |
これでデータが一覧表示されればOKです!あとは好きなようにSQLを変えて実行してみてください。使い終わったら、以下の通りに終了してください。
.exit; |
次からは先ほどの以下のコマンドでSQLへ入れます。
cd /Users/xxxxx/Downloads/sqlite-tools-osx-x86-3340100/ |
エッセンス6:SQLとは大きく分けてDMLとDDL
最初に述べた「エッセンス2:SQLとは何をするものかを知る」にて、SQLのもつ機能を解説しました。その理解をもとに、今まで実行したSQLを振り返りましょう。
端的にいうと、SQLは「中に入ったデータをあつかうもの」と、「データを格納する器そのものをあつかうもの」の2種類に分かれます。前者をDML(Data Manipulation Language)、後者をDDL(Data Definition Language)といいます。
出てきたSQLを順に丸覚えするのもよいのですが、上記のカテゴリで分けて覚える方がよいでしょう。テーブルを作りたい!それはDDLのCREATE、データを更新したい!それはDMLのUPDATE、といった具合です。
DMLやDDLといった単語はさておいて、そういった分け方があるということは覚えておきましょう。
エッセンス7:少しずつ複雑なSQLにチャレンジ!
ここまで来ると、ある程度複雑なSQLを組む下地ができています。そこでぜひ試してほしいことがあります。それは、書籍やネットに出ているSQLに、少し変更して結果がどう変わるかを見ることです。
例えば、従業員テーブル employeeから、年齢が25歳以上の人を抽出するにはこうなります。
SELECT * FROM employee WHERE 25 <= age; |
さらにここを男性かつ25歳以上に変えるとこうなります。
SELECT * FROM employee WHERE 25 <= age AND gender = 0; |
性別を抽出条件に含めました。このように、例えば○○を変えれば結果がどうなるか?をいろいろと試して、知識を広げていくのです。
エッセンス8:SQLの見た目にこだわる
SQLも立派なプログラミング言語の一つです。よって他言語のように、インデントやスペースはとても大事です。そして、デキるプログラマほどキレイなSQLを書きます。
SELECT name, age, gender, address, department FROM employee WHERE 25 < = age AND gender = 0; |
でもよいのですが、もう少し整形するとこんな感じになります。
SELECT |
初心者である今のうちから、見た目の形にもこだわりましょう。
エッセンス9:GUIツールを使ってみる
今まではコマンドライン操作でSQLを作成・実行してきましたが、この方法は現場ではあまり見ません。というのも、1つのSQLで項目数が100以上あったり、結合テーブルが多数あったりと相当複雑になり、コマンドライン操作では結果が見づらくなります。
したがって、SQLの作成と実行結果がグラフィカルに見えるGUIツールを使います。SQLiteでいうと、DB Browser for SQLiteのようなツールです。
<図7:DB Browser>
コマンドライン操作に慣れて、もっと複雑なSQLにチャレンジ!というタイミングで、ぜひ導入を検討してみてください。
エッセンス10:商用データベースにチャレンジ!
今までSQLiteを取り上げましたが、実はもっといろいろなデータベースエンジンがあります。例えば以下です。
・Oracle (Oracle社)
・SQLServer(Microsoft社)
・MySQL(Oracle社)
・PostgreSQL(OSS)
実は、SQLiteは取り扱いがシンプルなのはメリットですが、反面セキュリティや同時アクセスに弱いというデメリットがあります。ですのでWebサイトや社内システムでは使われていません。
大規模システムに使われるのは、大体上記のデータベースになります。そして上記は無償版も配布されています。今すぐ使う必要はありませんが、ぜひ一度は使ってみてください。
さいごに
本記事では、SQLを学ぶ10のエッセンスを解説しました。学ぶ前、学び始めた後も、ぜひ本記事を参考にしてください。
- カテゴリ: