0
0

【Progate】SQLコースを終えての所感

Posted at

自己紹介

29歳。文系卒。新卒入社でWebディレクターを2年半経験。
その後は番組の字幕制作の仕事に従事。
現在はエンジニア転職を目指して勉強中。

SQLの印象

データベースを操作する言語で、SELECT文を使って情報を取得する。
そんなぼんやりとした記憶のまま臨みました。

覚えておきたいこと

今後の自分が役立ててくれることを信じて、学んだことをレッスンごとにまとめます。

レッスン1

式の末尾には必ずセミコロンが必要ですが、以降では省略します。

/* カラムの取得 */
SELECT カラム名,カラム名...
FROM テーブル名

/* 全カラムの取得 */
SELECT *
FROM テーブル名

/* 条件指定 */
/* 文字列は""で囲む */
/* 「=」以外にも「>=」などの演算子を使用可能 */
WHERE カラム名 = 条件

/* LIKE演算子 */
/* 指定した文字列を含むカラムを取得 */
/* 前後に「%(ワイルドカード)」を使用可能 */
WHERE カラム名 LIKE "文字列"

/* NOT演算子 */
/* 条件を満たさないデータを取得 */
WHERE NOT カラム名 = 条件

/* NULLの指定 */
WHERE カラム名 IS NULL

/* NULLではない指定 */
WHERE カラム名 IS NOT NULL

/* AND演算子 */
WHERE カラム名 = 条件
AND カラム名 = 条件

/* OR演算子 */
WHERE カラム名 = 条件
OR カラム名 = 条件

/* 並び替え */
/* 「ASC」 昇順*/
/* 「DESC」 降順*/
ORDER BY カラム名 並べ方

/* 必要な数だけ取得 */
LIMIT 

レッスン2

/* 重複する値を除外*/
SELECT DISTINCT(カラム名)
FROM テーブル名

/* カラム名には四則演算(+,-,*,/)が使用可能 */
SELECT カラム名-カラム名

/* 合計値 */
SELECT SUM(カラム名)

/* 平均値 */
SELECT AVG(カラム名)

/* レコードの数 */
/* NULLはカウントされない */
SELECT COUNT(カラム名)

/* 最大値 */
SELECT MAX(カラム名)

/* 最小値 */
SELECT MIN(カラム名)

/* データのグループ化 */
/* SELECTで使えるのは、GROUP BYに指定しているカラム名と、集計関数のみ */
GROUP BY カラム名,カラム名...

/* HAVING */
/* グループ化から更に絞り込む */
GROUP BY カラム名
HAVING 条件

※実行される順番

WHERE(取得条件)
GROUP BY(グループ化)
SUM...(関数)
HAVING(絞り込み)

レッスン3

/* サブクエリ */
/* 複数のクエリを一つにまとめる */
/* ()内にセミコロンは不要 */
WHERE カラム名 条件演算子 (
     クエリ
)

/* カラム名の付与 */
SELECT カラム名 AS "文字列"

/* テーブルを紐づける */
/* ONで結合条件を指定(主キー、外部キーを紐づける) */
/* 外部キーがNULLのレコードも取得するには「LEFT JOIN」を使用 */
SELECT *
FROM テーブルA
JOIN テーブルB
ON テーブルA.カラム名 = テーブルB.カラム名
JOIN... /* 3つ以上のテーブルを結合可能 */

/* 複数テーブルでのカラムの指定 */
SELECT テーブル名.カラム名

※実行される順番

FROM(テーブルの指定)
JOIN(テーブルの結合)
WHERE(取得条件)
GROUP BY(グループ化)
SUM...(関数)
HAVING(絞り込み)
SELECT(検索)
ORDER BY(順序)
LIMIT(件数)

レッスン4

/* レコードの挿入 */
/* idは自動で割り当てられる */
INSERT INTO テーブル名 (カラム名,カラム名...)
VALUES (,...)

/* データの更新 */
/* WHEREで更新するレコードを必ず指定する */
UPDATE テーブル名
SET カラム名 = ,カラム名 = ...
WHERE id = 

/* データの削除 */
/* WHEREで更新するレコードを必ず指定する */
DELETE FROM テーブル名
WHERE id = 

まとめ

SQLはそんなに難しくない…と思っていましたが、実際に問題を出されると手こずる部分がありました。
なんとか試行錯誤(+カンニング)して突破できましたが、基本的なことは一発でバシッと解けるようになりたいです。そのために、定期的に道場レッスンに挑戦しようと思います。DBなんてモロ丁寧に扱わないと危険な代物でしょうし、本番なら試行錯誤なんて絶対にNGですもんね。

間違いがあればご指摘いただけますと幸いです。

今後も継続して学習を続けていきたいと思います。

Progate

0
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
0
0