これからSQLを学びたい初学者の方、基礎を学んだけど忘れたから復習したい方へ
本記事では「SQL」の基礎であるコマンドから使い方について詳しく解説。
約10分ほどでSQLの基礎をマスター、復習用にも活用できます。
・SELECT
・FROM
・WHERE
・比較演算子
・LIKE
・NOT
・NULL
・AND
・OR
・ORDER BY
・LIMIT
SQL用語解説
SQLはデータベースに対して命令(クエリ)を書くための言語です。
言語自体そこまで複雑ではないので、データベースの名前「テーブル」「カラム」「レコード」を理解しましょう。
テーブル
「テーブル」はデータベースの表全体を指します。
データベースは一つとは限らないので複数の表を管理する場合など、テーブル名として管理します。
カラム/レコード
「カラム」は表の縦列を指し、「レコード」は表の横列を指します。
以下の図の通りです。
まとめ
・カラム:表の縦列
・レコード:表の横列
SELECT
「SELECT」はデータベースからデータを取得するために使います。
SELECT カラム名
SELECT name
たとえば、2つ以上のカラムを選択したい場合は「カンマ」で区切って指定することも出来ます。
SELECT name,price
また、すべてのカラムを指定したい場合は「*(アスタリスク)」を使えばすべてを指定できます。
SELECT *
まとめ
FROM
「FROM」はテーブルを指定するために使います。
書き方は「SELECT」の次に書くのが基本、以下のような書き方です。
FROM テーブル名
SELECT name
FROM table;
この「SELECT」と「FROM」はセットで「;(セミコロン)」までがクエリです。
ちなみにSQLは大文字小文字の区別が無いので、すべて小文字で書いても問題ありません。
まとめ
WHERE
「WHERE」はレコードのデータを取得する時に使います。
ここまで解説した「SELECT」と「FROM」で、「○○テーブルの○○カラム」を指定出来ているので、
「WHERE」のレコードを指定することで、細かなデータ取得が可能になります。
WHERE カラム名=値
WHERE price=400
たとえば以下のようなクエリなら、
SELECT *
FROM table
WHERE price =400;
すべてのカラムの中の、「price」が「400」のデータを取得するクエリになります。
ちなみに今回は数字を指定しているのでそのまま書いてますが、
「テキストデータ」と「日付データ」はクォーテーションで囲む必要があります。
SELECT *
FROM table
WHERE name =”モカ”;
まとめ
比較演算子
SQLも比較演算子を使ったデータ取得が出来ます。
比較演算子の種類は以下の通り。
比較演算子の種類 | |
a<b | aがbより小さいデータを検索 |
a<=b | aがbより小さい、または等しいデータを検索 |
a>b | aがbより大きいデータを検索 |
a>=b | aがbより大きい、または等しいデータを検索 |
WHERE price >400;
この場合、priceが400以上のデータ、つまり「モカ」と「ラテ」のデータを取得することになります。
LIKE
これまでの「WHERE」の検索では完全一致のデータしか取得出来ません。
それでは使い勝手が悪いので、活躍するのが「LIKE」です。
LIKEを使うことで「○○を含むデータ」を検索して取得することが出来ます。
書き方は以下の通り。
WHERE カラム名 LIKE %○○%;
%はワイルドカードの意味合いとなり、「○○」を含むすべてのデータを取得する意味となります。
また前後どちらかに%をつけることで、「前方一致」「後方一致」も出来ます。
「○○%」:前方一致、先に○○が含まれるすべてのデータ
たとえば以下のデータベースがあったとして
id | name | price |
1 | チキンカレー | 750 |
2 | カレー | 600 |
3 | カレーピラフ | 650 |
4 | カツカレー | 850 |
WHERE name LIKE %カレー%;
結果はすべてのデータを取得
WHERE name LIKE %カレー;
結果はすべての「チキンカレー」「カレー」「カツカレー」のデータを取得
WHERE name LIKE カレー%;
結果はすべての「カレー」「カレーピラフ」のデータを取得となります。
まとめ
NOT
「NOT」は否定の意味合いで、「○○の条件を満たさないもの」「一致しないデータ」を指定して取得します。
これまでのWHEREや比較演算子、LIKEも同じように使うことが出来ます。
WHERE NOT カラム名 = ○○;
参考例
SELECT *
FROM table
WHERE NOT price =400;
これはpriceが400以外のデータを取得となります。
SELECT *
FROM table
WHERE NOT name LIKE "%カレー";
これはnameが○○カレー以外なので、カレー○○のデータを取得となります。
まとめ
NULL
データベースで中身が無い(データが保存されていない)場合は、「NULL」と示します。
そのため、中身が無いデータを検索して取得する場合に「NULL」を使います。
WHERE カラム名 IS NULL;
SELECT *
FROM table
WHERE price IS NULL;
上記の書き方をすると、中身がNULLであるid4の「エスプレッソ」が取得される。
また、先述した「NOT」を使うことで「NULL以外のすべてのデータを取得」といった操作も可能。
SELECT *
FROM table
WHERE price IS NOT NULL;
FROM table
WHERE price = NULL;
FROM table
WHERE NOT price NULL;
まとめ
AND
「AND」は複数の条件を指定することが出来ます。
「条件1と条件2」や「条件1かつ条件2」といったイメージ、
書き方は「WHERE 条件1 AND 条件2」といった感じで、2つの条件が一致するものを取得します。
AND カラム名 = "○○";
SELECT*
FROM table
WHERE name = "コーヒー"
AND price = 400;
まとめ
OR
「OR」も「AND」同様に複数の条件を指定することが出来ますが、
「条件1か条件2」や「条件1または条件2」といったイメージで、どちらかが一致する場合を指定できます。
書き方は「WHERE 条件1 OR 条件2」となります。
OR カラム名 = "○○";
SELECT*
FROM table
WHERE name = "コーヒー"
OR price = 400;
まとめ
ORDER BY
「ORDER BY」は取得したデータの並び替えを指定出来ます。
並び替えは「数字データ」のみで、以下の2通りで並び替えが出来ます。
・DESC(降順):100…3、2、1
ORDER BY 並び変えたいカラム名 並び方;
SELECT*
FROM table
ORDER BY price DESC;
「DESC」の場合は降順なので数字が大きいものが先に並び替えされます。
もちろん、「WHERE」とも併用が出来ます。
まとめ
LIMIT
「LIMIT」は最大表示数の指定が出来ます。
データベースでデータを取得する際に、上位10件のみ知りたいなど絞った検索をすることがあります。
そういった場合に100件、1000件のデータを取ると時間も掛かってしまうので「LIMIT」を使います。
LIMIT データ件数;
SELECT *
FROM table
LIMIT 3;
上記のLIMIT3で取得すると上位の3件のみ取得されます。
こちらも「WHERE」との併用が可能です。
SELECT *
FROM table
WHERE 条件
LIMIT 5;
まとめ
SQLの基礎操作を解説「初学者向け」についてまとめました。
プログラミングほど複雑ではなく、単語も分かり易いので覚えやすいと思います。
以下まとめです。
言語 | 説明 |
SELECT | カラムの指定 |
FROM | テーブルの指定 |
WHERE | レコードの指定(条件の指定) |
比較演算子 | ○○より大きい、○○より小さいの指定 |
LIKE | ○○を含むの指定 |
NOT | ○○を含まない、条件が一致しないの指定(否定) |
NULL | 中身が保存されていない |
AND | 条件1かつ条件2の指定 |
OR | 条件1または条件2の指定 |
ORDER BY | 取得した数字データの昇順、降順の並び替え |
LIMIT | 最大表示件数の指定 |
基本の操作は紹介したクエリで完璧だと思うので、ぜひ参考にしてみてください。
最後までお読みいただきありがとうございました。