1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SQLクエリ文をまとめてみた

Last updated at Posted at 2021-04-18

プロゲートでSQLクエリ文を学んだので自分なりに簡単にまとめてみる

RailsではSQL文を自動で発行してくれていたので、基本的なSQL知識をつけるために学びました。
参考程度にお願いします。誤字等あったらすみません。

**題目一覧 これを全文検索(Macならcommand+F)すれば早いかもです!!** ⭐️データ取得系⭐️ データの取得 取得したデータのカラム名を別名にする データの取得 複数 データの取得 カラム全部 条件付き 条件付き NOT 複数条件付き 複数条件付き どちらかを満たす場合 "なまえ"を含むデータの取得 前方一致 後方一致 NULLデータの取得 NULLじゃないデータの取得 取得データの並び替え ASC(昇順):小さい順 DESC(降順):大きい順 重複を省く カラムの四則演算 カラムの合計取得 SUM関数 カラムの平均取得 AVG関数 カラムの合計"数"取得 COUNT関数 カラムの最小値取得 MIN関数 カラムの最大値取得 MAX関数 グループ化 複数カラムのグループ化 WHEREとGROUP BY グループ化したデータの更なる絞り込み  サブクエリの追加 ⭐️テーブル同士の紐つけ と テーブルを分けるメリット⭐️ テーブルの結合 複数テーブルでのカラムの指定 複数テーブルでのカラムの指定 WHERE NULLの取得をする LEFT JOIN  3つ以上のJOIN ⭐️データの追加編集削除系⭐️ データの追加 データの変更 データの削除 

(作成終わり後の私)
↑あ…画面右側にメニューが出来るんですね…。そっちのがいいかもです。苦笑

SQL文の処理順番 

SQL文にも処理順序があるそうなのでイメージしながらやるとやりやすいです。

実行内容 SQL文
テーブル指定 FROM
結合 ON・JOIN
取得条件 WHERE
グループ化 GROUP BY
関数 COUNT・SUM・AVG・MAX・MIN
更に絞り込み HAVING
検索 SELECT・DISTINCT
順序 ORDER BY
取得数指定 LIMIT

##⭐️データ取得系⭐️

データの取得

SELECT カラム名
FROM テーブル名
; 

取得したデータのカラム名を別名にする

SELECT カラム名 AS "別名"
FROM テーブル名
; 

データの取得 複数

SELECT カラム名①, カラム名② 
FROM テーブル名
;

データの取得 カラム全部

SELECT * 
FROM テーブル名
;

条件付き

SELECT カラム名 
FROM テーブル名
WHERE 条件 細かい演算子は本記事では書きません。
;

条件付き NOT

SELECT カラム名 
FROM テーブル名
WHERE NOT 条件 細かい演算子は本記事では書きません。
;

複数条件付き

SELECT カラム名 
FROM テーブル名
WHERE 条件 細かい演算子は本記事では書きません。
AND 条件②
;

複数条件付き どちらかを満たす場合

SELECT カラム名 
FROM テーブル名
WHERE 条件 細かい演算子は本記事では書きません。
OR 条件②
;

"なまえ"を含むデータの取得

SELECT カラム名
FROM テーブル名
WHERE カラム名 LIKE "%なまえ%"

前方一致

WHERE カラム名 LIKE "名前%"

後方一致

WHERE カラム名 LIKE "%名前"

###NULLデータの取得

SELECT カラム名
FROM テーブル名
WHERE カラム名 IS NULL
;

###NULLじゃないデータの取得

SELECT カラム名
FROM テーブル名
WHERE カラム名 IS NOT NULL
;

###取得データの並び替え ASC(昇順):小さい順 DESC(降順):大きい順

SELECT カラム名
FROM テーブル名
ORDER BY カラム名 DESC or ASC
;

必要な分のデータの取得

SELECT カラム名
FROM テーブル名
LIMIT 数
; 

重複を省く

SELECT DISTINCT(カラム名)
FROM テーブル名
;

カラムの四則演算

SELECT カラム名 * 1.08 など
FROM テーブル名
;

カラムの合計取得 SUM関数

SELECT SUM(カラム名)
FROM テーブル名
;

カラムの平均取得 AVG関数

SELECT AVG(カラム名)
FROM テーブル名
;

カラムの合計"数"取得 COUNT関数

SELECT COUNT(カラム名)
FROM テーブル名
;

カラムの最小値取得 MIN関数

SELECT MIN(カラム名)
FROM テーブル名
;

カラムの最大値取得 MAX関数

SELECT MAX(カラム名)
FROM テーブル名
;

グループ化 ※SELECTで使えるのはGROUP BY に指定しているカラム名と集計関数のみ

SELECT カラム名
FROM テーブル名
GROUP BY カラム名
; 

複数カラムのグループ化

SELECT カラム名①, カラム名②
FROM テーブル名
GROUP BY カラム名①, カラム名②
; 

WHEREとGROUP BY  ※WHERE→GROUP BY の順で書く事

SELECT カラム名
FROM テーブル名
WHERE 条件
GROUP BY カラム名
; 

グループ化したデータの更なる絞り込み ※WHERE→GROUP BY→HAVING の順で書く事

SELECT カラム名
FROM テーブル名
WHERE 条件
GROUP BY カラム名
HAVING 条件
; 

サブクエリの追加 ※追加されたサブクエリが実行されてからクエリが実行されるそうです

SELECT カラム名
FROM テーブル名
WHERE 条件 (
 SELECT カラム名
 FROM テーブル名
 WHERE 条件
); 

⭐️テーブル同士の紐つけ と テーブルを分けるメリット⭐️

テーブルA

id 名前 別テーブルのid(外部キー)
1 あいつ 2
2 こいつ 1
3 そいつ 3
4 どいつ 1

テーブルB

id(主キー) 名前 寒さランキング
1 南極 1
2 北極 2?
3 栃木 3

2つのテーブルを繋ぐための主キー外部キー
DBの正規化で重要ですね。

テーブルを分けるとデータの管理がしやすくなります。

例えば、上のテーブルBの寒さランキング(笑)がテーブルAに全部まとまっているとしましょう。
①「こいつ」さんと「どいつ」さんは「南極」に住んでる
②もし「南極」の「寒さランキング」が変わったら2箇所のデータを変更しないといけない

これが2つのテーブルに分かれていることにより、「寒さランキング」が変わっても1箇所のデータ変更で済みます。

テーブルの結合 ※結合した場合のクエリの実行順序 FROM→JOIN→ON→SELECT ※NULLは取得しない

SELECT カラム名
FROM テーブルA
JOIN テーブルB
ON テーブルA.カラム名(外部キー) = テーブルB.カラム名(主キー)
; 

複数テーブルでのカラムの指定

SELECT テーブル名A.カラム名, テーブル名B.カラム名
FROM テーブルA
JOIN テーブルB
ON テーブルA.カラム名(外部キー) = テーブルB.カラム名(主キー)
; 

複数テーブルでのカラムの指定 WHERE

SELECT テーブル名A.カラム名, テーブル名B.カラム名
FROM テーブルA
JOIN テーブルB
ON テーブルA.カラム名(外部キー) = テーブルB.カラム名(主キー)
WHERE テーブル名A.カラム名 条件式など
; 

NULLの取得をする LEFT JOIN 

SELECT テーブル名A.カラム名, テーブル名B.カラム名
FROM テーブルA
LEFT JOIN テーブルB
ON テーブルA.カラム名(外部キー) = テーブルB.カラム名(主キー)
; 

3つ以上のJOIN

SELECT テーブル名A.カラム名, テーブル名B.カラム名, テーブル名.カラム名
FROM テーブルA
JOIN テーブルB
ON テーブルA.カラム名(外部キー) = テーブルB.カラム名(主キー)
LEFT JOIN テーブルC
ON テーブルA.カラム名(外部キー) = テーブルC.カラム名(主キー)
; 

##⭐️データの追加編集削除系⭐️

データの追加 ※idカラムはAUTO INCREMENT機能で自動で値が割り当てられるらしい

INSERT INTO テーブル名(カラム名A、カラム名B,カラム名C)
VALUE(カラムAにはいる値、 カラムBにはいる値、 カラムCにはいる値)

select * from テーブル名;

データの変更 ※WHEREのid指定を忘れると全て変わってしまいます。

UPDATE テーブル名
SET カラム名=変更したい値, カラム名B=変更したい値
WHERE id = 削除したいレコードのID
;

データの削除 ※WHEREのid指定を忘れると全て消えてしまいます。

DELETE FROM テーブル名
WHERE id = 削除したいレコードのID
;

以上です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?