【SQL】SQLの基本的な書き方についてまとめ
おつです。SQLのについてまとめる。
SQLの三つの言語
SQLには三種類の言語がある。
- データ定義言語(Data Definition Language)
- データ操作言語(Data Manipulation Language)
- データ制御言語(Data Control Language)
が、書いていく時にはそーんなに意識するところもないと思うのでここではまとめて扱うことにする。
基本的な書き方
SELECTで取得したいカラムを指定してFROMでどのテーブルから取得するのか指定するやつ。
SELECT カラム名 FROM テーブル名 WHERE 条件文 ORDER BY カラム名 ASC(または DESC) LIMIT 件数;
エクセルみたいな表を想像して欲しいんだが、カラム名ってのは列の名前のことで、テーブル名ってのが表についた名前のことだ。
条件文についてはいろんな書き方があって、WHERE カラム名 = 'やくざ';
とかWHERE カラム名 >= 100;
とかWHERE カラム名 LIKE '$¥%なまはげ%';
とか書ける。WHERE NOT カラム名 = 100;
やWHERE カラム名 IS NOT NULL
みたいにNOTを使うこともできる。
条件文で出てくるLIKEってのは、カラム名のうち特定の文字列を含むデータを取ってきてねという命令。%を使ってワイルドカード指定もできる。
ORDER BY は並び替え。ASCが昇順、DESCが降順だ。
LIMITは件数。5とかって書けば5件だけ出てくる。
ちな、文末の';'は絶対に忘れると思うので気をつけたい。
もうちょい発展系
重複を消す
SELECT DISTINCT(カラム名) FROM テーブル名;
取得したデータに足したり引いたり関数かけたり
SELECT カラム名 + 1 FROM テーブル名;
こんな感じでカラム名書くところに計算式を入れられる。また、SUM(カラム名
みたいな感じに組み込み関数を埋め込んだりもできる。まあでもSELECT文がめっちゃ長くなったりしたら困るから、多分個々に埋め込まなくっても良いみたいな書き方がそのうち出てくるんだと思う。
ちな、関数は他にもあって、AVG
やMIN
、MAX
、COUNT
などがある。
GROUP BY
また、ちょっと難しいもので、GROUP BY
ってのがある。
SELECT MAX(price), date FROM table WHERE category = 'ごま' GROUP BY date HAVING MAX(price) > 200;
こんな感じ。これは、tableってテーブルからcategoryがごまのもので、dateでグループ化して、priceの最大値とdateを表示したのち、MAX(price)が200を超過したものだけ表示するってこと。
新しく出てきたものについて解説すると、GROUP BY
ってのは文字通りグループ化するもので、これを使う時SELECT
にはGROUP BY
で使われたカラム名と集計関数としか書けない。
また、HAVING
はWHERE
と同じく条件文なのだが、違うのは条件をかけるタイミングだ。こいつはGROUP BY
されたあと、条件文を適用する。ので、集計結果に対して条件をかけられたりする。
ちな、SQLのコマンドには実行の優先度があって、下記のような順番らしい。
検索:WHERE
グループ化:GROUP BY
関数:MAXなど
HAVING:HAVING
ほーん。
JOIN - テーブルの結合
JOINを使うとテーブルの結合ができる。
SELECT カラム名 FROM テーブルA JOIN テーブルB ON テーブルA.カラム名 = テーブルB.カラム名
こんなもん。
以上!!!