だれでもエンジニアさんの動画で、SQLのSELECTを学ぶ
はじめに
SQLは、企業のデータを扱うのに使われるから、身につけておいて損はない。
以下の動画の5:28に飛んでいただきたい。
SQLは大事
複雑になると分からないが、コツを理解すると一気にわかるようになるそうだ。
アジェンダ
全部、基礎中の基礎である。
基礎ができていないと応用が効かないということで、早速見ていこう。
SELECT FROM
kimetsuテーブルからnameとfeatureを取得したい場合を考える。
以下のSQLで実現可能だ。
SELECT name, feature FROM kimetsu;
データベースでは、表形式でデータを保存していて、表のことをテーブルと呼ぶ。列をカラム、行をレコードと呼ぶので、押さえておいて欲しい。
先ほどのデータの取得イメージはこちら。
ASを使用するとカラム名を変更できる。
*で全カラムを指定できる。
SQLを理解するコツ
元の表をどうやって加工したいかをイメージすること。
DISTINCTで重複を防ぐ
kokyuカラムには、水の呼吸が2つある。この重複なしで呼吸の一覧を取得するにはどうすればいいのか?
以下のSQLで、それを実現できる。
SELECT DISTINCT(kokyu) FROM kimetsu;
コードの実行イメージはこちら。
WHEREで条件を指定する
evaテーブルに、kawaiiというカラムがある。kawaiiが5より大きいという条件を指定するにはどうすればいいのか?
以下のSQL文でそれを実現できる。
SELECT name, kawaii FROM eva WHERE kawaii > 5;
コードの実行イメージはこちら。
WHEREは、条件にあったレコードを取得したいときに使う。
複数の条件を指定したいときはどうするか?
ANDを使用する。
SELECT * FROM eva WHERE kawaii > 5 AND role = "パイロット";
コードの実行イメージはこちら。
またはという場合。
ORを使用する。
SELECT * FROM eva WHERE kawaii > 5 OR role = "パイロット";
SQLの実行イメージはこちら。
範囲指定をしたい場合。
以下のSQLを書こう。
SELECT * FROM eva WHERE kawaii BETWEEN 4 AND 6;
コードの実行イメージはこちら。
ORを使っても書けるが、冗長になってしまうので、INを使う。
コードはこちら。
SELECT * FROM eva WHERE role IN("パイロット", "作戦部長");
コードの実行イメージ。まとめて指定したいときに、INを使う。NOT INは、まとめて否定したいときに使う。
nameが「ア」から始まるレコードを取得したいとき。
LIKEを使用して、以下のように書く。
SELECT * FROM eva WHERE name LIKE 'ア%';
コードの実行イメージはこちら。
続いて、空のレコードを取得したいとき。
以下のように書く。
SELECT * FROM eva WHERE role IS NULL;
コードの実行イメージはこちら。空ではないときは、IS NOT NULLを使用する。
レコードを2行というように制限を加えてデータを取得したい場合。
以下のように書く。
SELECT * FROM eva LIMIT 2;
コードの実行イメージはこちら。データ数が多すぎると、フリーズすることがあるので、この行数指定をすることがあるそうだ。
続いては、並び替え。
ORDER BYを使用する。
SELET * FROM eva ORDER BY kawaii;
実行イメージはこちら。
最後にDESCをつけると降順になる。
SQLを書く上での秘訣
SELECTやWHEREなどを予約語と呼ぶ。それを大文字にしましょう。
予約語の文の後は改行する。
データが10,000件とかになってくるとサーバーに負担がかかる。それを防ぐために、SELECTで列名指定とLIMITを行う。
*で、すべてのデータを持ってくると負荷がかかってしまうが、列名を指定すれば負荷が減らせる。
LIMITで行数を制限するのもいい。
コメントを残す