だれでもエンジニアさんの動画で、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で条件を指定する

WHEREは、条件にあったレコードを取得したいときに使う。

【WHEREで条件指定】〜より大きい

evaテーブルに、kawaiiというカラムがある。kawaiiが5より大きいという条件を指定するにはどうすればいいのか?

以下のSQL文でそれを実現できる。

SELECT name, kawaii FROM eva WHERE kawaii > 5;

コードの実行イメージはこちら。

【WHEREで条件指定】複数 AND

複数の条件を指定したいときはどうするか?

ANDを使用する。

SELECT * FROM eva WHERE kawaii > 5 AND role = "パイロット";

コードの実行イメージはこちら。

【WHEREで条件指定】複数 OR

またはという場合。

ORを使用する。

SELECT * FROM eva WHERE kawaii > 5 OR role = "パイロット";

SQLの実行イメージはこちら。

【WHEREで条件指定】範囲指定

範囲指定をしたい場合。

以下のSQLを書こう。

SELECT * FROM eva WHERE kawaii BETWEEN 4 AND 6;

コードの実行イメージはこちら。

【WHEREで条件指定】まとめて指定

ORを使っても書けるが、冗長になってしまうので、INを使う。

コードはこちら。

SELECT * FROM eva WHERE role IN("パイロット", "作戦部長");

コードの実行イメージ。まとめて指定したいときに、INを使う。NOT INは、まとめて否定したいときに使う。

【WHEREで条件指定】曖昧検索

nameが「ア」から始まるレコードを取得したいとき。こちらは、曖昧検索と呼ばれている。

LIKEを使用して、以下のように書く。

SELECT * FROM eva WHERE name LIKE 'ア%';

コードの実行イメージはこちら。

否定する時は、NOT LIKEと書く。

詳しくはこちら。

曖昧検索と否定を組み合わせたSQL文

【WHEREで条件指定】空のレコード取得

続いて、空のレコードを取得したいとき。

以下のように書く。

SELECT * FROM eva WHERE role IS NULL;

コードの実行イメージはこちら。空ではないときは、IS NOT NULLを使用する。

【WHEREで条件指定】件数の指定

レコードを2行というように制限を加えてデータを取得したい場合。

以下のように書く。

SELECT * FROM eva LIMIT 2;

コードの実行イメージはこちら。データ数が多すぎると、フリーズすることがあるので、この行数指定をすることがあるそうだ。

【WHEREで条件指定】並べ替え

続いては、並び替え。

ORDER BYを使用する。

SELET * FROM eva ORDER BY kawaii;

実行イメージはこちら。

最後にDESCをつけると降順になる。

SQLを書く上での秘訣

SELECTやWHEREなどを予約語と呼ぶ。それを大文字にしましょう。

予約語の文の後は改行する。

データが10,000件とかになってくるとサーバーに負担がかかる。それを防ぐために、SELECTで列名指定とLIMITを行う。

*で、すべてのデータを持ってくると負荷がかかってしまうが、列名を指定すれば負荷が減らせる。

LIMITで行数を制限するのもいい。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

投稿ID : 20108