ポートフォリオ作成に向けて、1月中に基礎学習を終わらせます。
HTML/CSS、JavaScript、Rubyの復習を終わらせたので、
次にRDB/SQLの復習をProgate、ドットインストールを用いて行っていきます。
なお、記述する内容は自分が忘れがちな所、苦手な所です。
HTML/CSS編、JavaScript編、Ruby編同様、自分用の備忘録的に投稿していくので(箇条書きで)、
読みづらいor間違えていることを書いている可能性もあるので、悪しからず。
(できるだけ他の方が見てもためになれば良いなとは思って投稿しますが・・・)
箇条書きで書いたことに関して、新たな発見、学び、気づき等あれば、
それぞれ個々に詳細を記述していこうと思います。
データベース
テーブル・・・ 表
カラム・・・ 縦の列
レコード・・・ 横の行
SELECT
SELECTでデータを取得できる
SELECT name, price #複数のカラムからデータを取得する際には、コンマで区切る
SELECT * #全てのデータからデータを取得する際には、*を用いる
FROM
FROMでどのテーブルのカラムかを指定できるWHERE
どこのレコード(横の行)を取得するかをWHEREで指定するSELECT * #テーブル内の全てのデータから取得
FROM purchases #テーブルを指定
WHERE category = "食費"; #文字列の値はクォーテーションで囲む
データ型
LIKE演算子
ある文字を含むデータを取得する
SELECT *
FROM purchases
WHERE name LIKE データ;
ワイルドカード
%を用いる
(例)
%たこやき%・・・ 「たこやき」の前後のワイルドカード(%)により、
「たこやき」という文字を含むデータを取得できる (例)おいしいたこやき屋さん、大阪たこやき本店
たこやき%・・・ 前方一致
(例) たこやき屋さん、たこやき焼き器
%たこやき・・・ 後方一致
(例) チーズたこやき、美味しいたこやき
NOT演算子
SELECT *
FROM purchases
WHERE NOT price > 1000;
SELECT *
FROM purchases
WHERE NOT name LIKE "%たこやき%";
NULL
何のデータも保存されていない場合、NULLとなる
NULLのデータを取得する
SELECT *
FROM purchases
WHERE price IS NULL; #「~がNULLである」という意味になる
NULLではないデータを取得する
SELECT *
FROM purchases
WHERE price IS NOT NULL; #「~がNULLでない」という意味になる
AND演算子
WHEREに複数の条件を指定する際にはANDを用いる
WHERE 条件1 AND 条件2
SELECT *
FROM purchases
WHERE character_name = "たろう"
AND category = "食費";
OR演算子
WHERE 条件1 OR 条件2
# 条件1または条件2のどちらかを満たすデータを検索できる
SELECT *
FROM purchases
WHERE character_name = "たろう"
OR character_name = "はなこ";
ORDER BY
データを並び替えることができるORDER BY 並べ替えたいカラム名 並べ方
ASC・DESC
ASC・・・ 昇順
DESC・・・ 降順
SELECT *
FROM purchases
ORDER BY price DESC; #値段が大きい順に並べ替える
ORDER BYはWHEREと併用可能
SELECT *
FROM purchases
WHERE 条件
ORDER BY price DESC;
LIMIT
最大で何件のデータを取得するかを指定する
LIMIT データの件数
LIMITはWHEREと併用可能
SELECT *
FROM purchases
WHERE 条件
LIMIT 5; #条件に当てはまる上から5件を表示する
ORDER BYとLIMITの組み合わせ
SELECT *
FROM purchases
ORDER BY price DESC
LIMIT 5; #LIMITは末尾に記述する
DISTINCT
検索結果から重複するデータを除くことができる
DISTINCT(カラム名)
SELECT DISTINCT(name)
FROM purchases;
SUM関数
数値の合計を計算する
SUM(カラム名) #指定したカラムのデータの合計を取得する
SELECT SUM(price)
FROM purchases;
SUM関数とWHEREは併用可能
SELECT SUM(price)
FROM purchases
WHERE character_name = "たろう";
AVG関数
数値の平均を計算する
AVG(カラム名)
SELECT AVG(price)
FROM purchases;
AVG関数とWHEREは併用可能
SELECT AVG(price)
FROM purchases
WHERE character_name = "たろう";
COUNT関数
指定したカラムのデータの合計数を計算する
# NULLの数を含めてデータの数を数える
COUNT(カラム名)
SELECT COUNT(*)
FROM purchases;
COUNT関数とWHEREは併用可能
SELECT COUNT(*)
FROM purchases
WHERE character_name = "たろう";
MAX関数・MIN関数
MAX(カラム名) #指定したカラムのデータの中から最大のデータを取得
MIN(カラム名) #指定したカラムのデータの中から最小のデータを取得
SELECT MAX(price)
FROM purchases;
MAX関数・MIN関数とWHEREは併用可能
SELECT MAX(price)
FROM purchases
WHERE character_name = "たろう";
GROUP BY
データをグループ化できるGROUP BY カラム名
GROUP BYを用いる場合、SELECTで使えるのは、GROUP BYに指定しているカラム名と集計関数のみ
グループ化と集計
グループ化するには、今までの集計関数を取得するFROMの後ろに、
「GROUP BY カラム名」を追加する。
GROUP BYを用いる場合、SELECTで使えるのは、GROUP BYに指定しているカラム名と集計関数のみ
SELECT SUM(price), purchased_at ②集計する
FROM purchases
GROUP BY purchased_at; ①グループ化する
複数カラムのGROUP BYの書き方
GROUP BY カラム名1,カラム名2,... #コンマでつなげる
SELECT SUM(price), purchased_at, character_name
FROM purchases
GROUP BY purchased_at, character_name;
WHEREとGROUP BYは併用可能
SELECT 集計関数
FROM テーブル名
WHERE 条件
GROUP BY カラム名1, カラム名2; #WHERE文の後に書く
実行される順番
①レコードの検索 WHERE
②グループ化 GROUP BY
③集計関数で集計される 関数(COUNT,SUM,AVG,MAX,MIN)
SELECT SUM(price), purchased_at, character_name
FROM purchases
WHERE category = "食費" #レコードの検索
GROUP BY purchased_at, character_name; #日付とキャラクターでグループ化される
HAVING
GROUP BYでグループ化したデータをさらに絞り込む
GROUP BY カラム名
HAVING 条件;
HANINGとWHEREは併用可能
実行される順番
①レコードの検索 WHERE
②グループ化 GROUP BY
③集計関数で集計される 関数(COUNT,SUM,AVG,MAX,MIN)
④HAVING
WHEREとHAVINGの違い
WHERE・・・ グループ化される前のテーブル全体を検索対象とする
HAVING・・・ GROUP BYによってグループ化されたデータを検索対象とする
SELECT SUM(price), purchased_at
FROM purchases
GROUP BY purchased_at
HAVING SUM(price) > 1000; #グループ化された後のデータのカラムを使う