初心者必見!SQLを学習するための10コのエッセンス

 2021.03.04  株式会社システムインテグレータ

プログラミング言語やフレームワークを問わず、データベースを使うときには何かしらの形でSQLにかかわることになるでしょう。言い方を変えれば、SQLをマスターしておけば今後いろんな場面でメリットがあるともいえますね。

本記事では、SQLを学ぶ上で知っておくと、学習がスムーズになる10個のエッセンスをお教えします。これからSQLを学習する方だけでなく、学習を始めて間もない方でも参考になる内容です。

「SQLの教科書」資料を無料公開中(全23ページ)
SQLの基本を解説した資料です。本記事と合わせてご活用ください。
(ダウンロードは無料ですが、メールアドレスの入力が必要です。)
「SQLの教科書」ダウンロードページ

教養としてのプログラミング入門BOOK

エッセンス1:データベースとテーブルを理解する

SQLを学習するには、最低でもデータベースやテーブルとは何かを知る必要があります。まずはここからです。厳密さを求めず、むずかしい話は省略したので、気楽にお読みください。

最初に、テーブルからです。テーブルとは、データを行単位に保存したものです…、というとまったく意味不明なので、別の説明をしましょう。例えば、社員のデータを書類にまとめたいとき、どうしますか?たいていの人は表でまとめるでしょう。Excelでいうとこんな感じです。

<図1:Excelで社員の情報をまとめる>
初心者必見!SQLを学習するための10コのエッセンス01

この表に相当するのが、テーブルです。さらに複数のテーブルをまとめたのがデータベース(厳密にはリレーショナルデータベースと呼ばれる種類のもの)です。

<図2:データベースとはテーブルをまとめたもの>
初心者必見!SQLを学習するための10コのエッセンス02

ただし、データベースとは本来もっと広い意味を持つので、ここでは単にテーブルから見たデータベースの定義と思ってください。

ビッグデータ時代の必須科目 SQLの教科書
教養としてのプログラミング入門BOOK

エッセンス2:SQLとは何をするためのものか

では本命の話題、SQLとは何をするためのものでしょうか?
SQLとは、超シンプルにいうと以下のような操作をする言語です。

①テーブルを入れるデータベースを作る
②データを入れる器であるテーブルを作る
③データを編集(登録・更新・削除)する
④データを抽出する

<図3:SQLとは何をするものか>
初心者必見!SQLを学習するための10コのエッセンス03

もっとありますが、今のところはこの程度に理解できれば十分です。

エッセンス3:SQLができると何がうれしいのか

フレームワークにもよりますが、実はSQLをまったく知らなくてもアプリは組めてしまいます!

例として、RubyWebフレームワークであるRuby on Railsを見てみましょう。usersというテーブルから全データを抽出したときのコマンドと実行結果です。

<図4:テーブルを一覧表示するときのコマンドと実行結果>
初心者必見!SQLを学習するための10コのエッセンス04

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ダウンロード>
初心者必見!SQLを学習するための10コのエッセンス05

お使いのPCOSに合ったものをダウンロードしてください。ダウンロードしたZIPファイルを解凍すると、図にあるような3ファイルができます。

<図6:zipファイルを解凍>
初心者必見!SQLを学習するための10コのエッセンス06

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
SQLite version 3.28.0 2019-04-15 14:49:49
Enter ".help" for usage hints.
sqlite>

はい!これでセットアップ完了です。
試しに以下のコマンドを順に実行してください。

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/
sqlite3 hoge.sqlite3

エッセンス6:SQLとは大きく分けてDMLDDL

最初に述べた「エッセンス2:SQLとは何をするものかを知る」にて、SQLのもつ機能を解説しました。その理解をもとに、今まで実行したSQLを振り返りましょう。

端的にいうと、SQLは「中に入ったデータをあつかうもの」と、「データを格納する器そのものをあつかうもの」の2種類に分かれます。前者をDMLData Manipulation Language)、後者をDDLData Definition Language)といいます。

出てきたSQLを順に丸覚えするのもよいのですが、上記のカテゴリで分けて覚える方がよいでしょう。テーブルを作りたい!それはDDLCREATE、データを更新したい!それはDMLUPDATE、といった具合です。

DMLDDLといった単語はさておいて、そういった分け方があるということは覚えておきましょう。

エッセンス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
    name,
    age,
    gender,
   
department
FROM
   
employee
WHERE
   
25 <= age AND gender = 0;

 初心者である今のうちから、見た目の形にもこだわりましょう。

エッセンス9:GUIツールを使ってみる

今まではコマンドライン操作でSQLを作成・実行してきましたが、この方法は現場ではあまり見ません。というのも、1つのSQLで項目数が100以上あったり、結合テーブルが多数あったりと相当複雑になり、コマンドライン操作では結果が見づらくなります。

したがって、SQLの作成と実行結果がグラフィカルに見えるGUIツールを使います。SQLiteでいうと、DB Browser for SQLiteのようなツールです。

<図7:DB Browser
初心者必見!SQLを学習するための10コのエッセンス07

コマンドライン操作に慣れて、もっと複雑なSQLにチャレンジ!というタイミングで、ぜひ導入を検討してみてください。

エッセンス10:商用データベースにチャレンジ!

今までSQLiteを取り上げましたが、実はもっといろいろなデータベースエンジンがあります。例えば以下です。

Oracle Oracle社)
SQLServerMicrosoft社)
MySQLOracle社)
PostgreSQLOSS

実は、SQLiteは取り扱いがシンプルなのはメリットですが、反面セキュリティや同時アクセスに弱いというデメリットがあります。ですのでWebサイトや社内システムでは使われていません。

大規模システムに使われるのは、大体上記のデータベースになります。そして上記は無償版も配布されています。今すぐ使う必要はありませんが、ぜひ一度は使ってみてください。

さいごに

本記事では、SQLを学ぶ10のエッセンスを解説しました。学ぶ前、学び始めた後も、ぜひ本記事を参考にしてください。

TSC

ビッグデータ時代の必須科目 SQLの教科書(初級編)

RELATED POST関連記事


RECENT POST「SQL」の最新記事


SQL

JSON.parse()、JSON.stringify()の使い方|間違えやすいポイントも解説します!

SQL

SQLの整形:具体的な進め方、ツール活用についても解説します。

SQL

JSONの整形・構文チェック|3つの方法とツール、具体例を解説

SQL

SQLインジェクションとは?実例とその対策についてわかりやすく解説

初心者必見!SQLを学習するための10コのエッセンス

TOPSIC TOPへ

新規CTA

TOPSIC-SQL4コマ漫画

RANKING人気資料ランキング

RANKING人気記事ランキング

RECENT POST 最新記事