ProgateでSQLを学ぶコース1は【SQLの基本的な命令文】

ProgateでSQLを学ぶコース1


この記事ではProgateのSQLコース1の内容をまとめています。Progateはプログラミングの学習サービスです。今回はデータベース言語のSQLについて学んだ内容を書いていきたいと思います。この勉強をはじめる前にまずひとつ疑問なのはデータベースとはなにかということ。

データベースはとりあえずデータが入っている箱だと思っておけばよいでしょう。

データベース テーブル

データベースのデータはテーブルで表されていて縦の列はカラムといわれていて項目を書きます。
横の列はレコードといい項目のデータを書くような感じです。

またこのデータベースからデータを取得する命令のことをSQLというそうです。

SQL命令にはどんなものがある?

SQLの命令はたくさんあると思いますがとりあえず書いていきます。

選択

  • SELECT カラム名 → カラム名を選択する
  • SELECT * → すべてのカラムを選択する
  • FROM テーブル → どのテーブルから?

SQLは最後の命令にセミコロンをつけるきまりがあるようです。それと命令は大文字で行うようです。

SELECT price
FROM purchases;

複数のカラムを選択するにはカラム名をカンマ区切りで記述します。全てのカラムを指定したい場合は【 * 】アスタリスクを使います。

SELECT price,name -- 複数のカラムを選択
FROM purchases;
SELECT * -- 全てのカラムを選択
FROM purchases;

絞り込み

データの絞りこみは【 WHERE 】を使います。具体的にはカラム名を指定してレコードを指定します。

【 WHERE カラム名 = “レコード” 】のように記述します。ダブルクォーテーションを使っているのがポイントですね.

SELECT * -- 全てのカラムを指定
FROM purchases -- purchasesはただのテーブル名
WHERE category = "食費" -- categoryのカラムから食費のレコードを指定

この構文で食費のデータが抽出されるわけですがデモがないのでわかりにくいかもしれません。

データ型

カラムにはデータ型が指定されているので、WHERE文で絞り込みを行うときにデータ型の違いによって””ダブルクォーテーションをつけたりつけなかったりするので注意が必要ですね。

テキスト “こんにちは” ダブルクォーテーションをつける
数値 1000 ダブルクォーテーションをつけない
日付 “2018-10-10” ダブルクォーテーションをつける

以下のはWHEREで数値を取得する例と日付を取得する例です

SELECT *
FROM purchases
WHERE price = 1000;
SELECT *
FROM purchases
WHERE purchased_at = "2017-07-01";

比較演算子

SQLはWHEREでデータを絞り込むときに比較演算子が使えます。比較演算子はより大きいより小さいを判定するためのものですね。

  • < → 〇〇より大きい
  • > → 〇〇より小さい
  • <= → 〇〇以上
  • >= → 〇〇以下

以下のコードは比較演算子を使って数値や日付を取り出すものです。日付の場合は以前、以降という考え方になります。

SELECT *
FROM purchases
WHERE price >= 1000;
SELECT *
FROM purchases
WHERE purchased_at <= "2017-08-01";

演算子

SQLには比較演算子のほかにSQL特有の演算子があります。

  • LIKE → 〇〇を含む文字(ワイルドカードを使って指定)
  • NOT → 条件を満たさないデータを取得
  • IS NULL → NULLのデータを取得する
  • IS NOT NULL → NULLじゃないデータを取得する

LIKE文とワイルドカード

LIKE文を使うことによって〇〇を含む文字を検索できるようです。そのさいにワイルドカード(%記号)を使います。

具体庭訓は 【 WHERE カラム名 LIKE “%レコード%” 】のように書きます。LIKEを使った場合はイコールがいらない点に注意です。ややこしいですね。これはなぜかというとLIKEは演算子だからだそうです。

以下のコードは文字列”プリン”が含まれるレコードを抽出します。

SELECT *
FROM purchases
WHERE name LIKE "%プリン%";

さきほどのコードはプリンの前後にワイルドカードをつかったわけですがどちらか一方にワイルドカードを用いることによって前方一致や後方一致させることができます。

SELECT *
FROM purchases
WHERE name LIKE "%プリン";

NOTで条件を含まないデータを抽出

NOT演算子を使うと条件を満たさないデータを取得することができます。

以下のコードは文字列”プリン”を含まないデータを抽出します。

SELECT *
FROM purchases
WHERE NOT name LIKE = "%プリン%";

IS NULLとIS NOT NULL

IS NULLはNULLのデータを取得します。IS NOT NULLはNULLでないデータを取得します。NULLとはなにかというと。データがないことをNULLと言います。

以下はNULLのデータを抽出する例です。

SELECT *
FROM purchases
WHERE price IS NULL;

論理演算子

論理演算子は複数の条件を指定するときに使うものです。

  • AND → 〇〇かつ
  • OR → 〇〇または

論理演算子はWHEREの条件式のあとに書きます。

SELECT *
FROM purchases
WHERE category = "食費" OR character_name = "にんじゃわんこ";

ORDER BY(昇順と降順)

SQLのORDER BYを使うとデータを昇順や降順に並べ替えることができます。ASCは昇順 DESCは降順。アセンディングとディセンディングですね。

  • ORDER BY カラム名 ASC → カラムのデータを昇順に並べ替える
  • ORDER BY カラム名 DESC → カラムのデータを降順に並べ替える

ORDER BYは大体SQL文の末尾に記述すればよいようです。WHERE文と併用も可能です。以下は昇順に並べ替える例ですね。

SELECT *
FROM purchases
WHERE character_name = "にんじゃわんこ"
ORDER BY price ASC;

LIMIT – 必要な数だけ取得する

SQL文のLIMIT文を使用することによって必要な数だけデータを取得することができるようです。以下のコードはWHEREとLIMITを併用した例です。

SELECT *
FROM purchases
WHERE character_name = "にんじゃわんこ"
LIMIT 10;

Progate SQLコース1まとめ

ProgateのSQLコース1はこれで終わりです。SQLはおぼえることはあまり多くないですが結構ややこしいですね。ちょっとまとめたいと思います。
SQL命令文
WHEREのところがちょっと小難しい程度でしょうか。命令文はもっとたくさんあるとは思いますが、基本的なところはこんな感じのようですね。

以上です。