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.

RDB/SQL復習①

Last updated at Posted at 2021-01-30

ポートフォリオ作成に向けて、1月中に基礎学習を終わらせます。
HTML/CSS、JavaScript、Rubyの復習を終わらせたので、
次にRDB/SQLの復習をProgate、ドットインストールを用いて行っていきます。
なお、記述する内容は自分が忘れがちな所、苦手な所です。
HTML/CSS編、JavaScript編、Ruby編同様、自分用の備忘録的に投稿していくので(箇条書きで)、
読みづらいor間違えていることを書いている可能性もあるので、悪しからず。
(できるだけ他の方が見てもためになれば良いなとは思って投稿しますが・・・)
箇条書きで書いたことに関して、新たな発見、学び、気づき等あれば、
それぞれ個々に詳細を記述していこうと思います。

データベース

テーブル・・・ 表
カラム・・・ 縦の列
レコード・・・ 横の行

SELECT

SELECTでデータを取得できる

SQL
SELECT name, price #複数のカラムからデータを取得する際には、コンマで区切る
SELECT * #全てのデータからデータを取得する際には、*を用いる

FROM

FROMでどのテーブルのカラムかを指定できる

WHERE

どこのレコード(横の行)を取得するかをWHEREで指定する
SQL
SELECT * #テーブル内の全てのデータから取得
FROM purchases #テーブルを指定
WHERE category = "食費"; #文字列の値はクォーテーションで囲む

データ型

図2.png

LIKE演算子

ある文字を含むデータを取得する

SQL
SELECT *
FROM purchases
WHERE name LIKE データ;

ワイルドカード

%を用いる

(例)
%たこやき%・・・ 「たこやき」の前後のワイルドカード(%)により、
「たこやき」という文字を含むデータを取得できる (例)おいしいたこやき屋さん、大阪たこやき本店

たこやき%・・・ 前方一致
(例) たこやき屋さん、たこやき焼き器

%たこやき・・・ 後方一致
(例) チーズたこやき、美味しいたこやき

NOT演算子

SQL
SELECT *
FROM purchases
WHERE NOT price > 1000;
SQL
SELECT *
FROM purchases
WHERE NOT name LIKE "%たこやき%";

NULL

何のデータも保存されていない場合、NULLとなる

NULLのデータを取得する

SQL
SELECT *
FROM purchases
WHERE price IS NULL; #~NULLである」という意味になる

NULLではないデータを取得する

SQL
SELECT *
FROM purchases
WHERE price IS NOT NULL; #~NULLでない」という意味になる

AND演算子

WHEREに複数の条件を指定する際にはANDを用いる

SQL
WHERE 条件1 AND 条件2
SQL
SELECT *
FROM purchases
WHERE character_name = "たろう"
AND category = "食費";

OR演算子

SQL
WHERE 条件1 OR 条件2
# 条件1または条件2のどちらかを満たすデータを検索できる
SQL
SELECT *
FROM purchases
WHERE character_name = "たろう"
OR character_name = "はなこ";

ORDER BY

データを並び替えることができる
SQL
ORDER BY 並べ替えたいカラム名 並べ方

ASC・DESC

ASC・・・ 昇順
DESC・・・ 降順

SQL
SELECT *
FROM purchases
ORDER BY price DESC; #値段が大きい順に並べ替える

ORDER BYはWHEREと併用可能

SQL
SELECT *
FROM purchases
WHERE 条件
ORDER BY price DESC; 

LIMIT

最大で何件のデータを取得するかを指定する

SQL
LIMIT データの件数

LIMITはWHEREと併用可能

SQL
SELECT *
FROM purchases
WHERE 条件
LIMIT 5; #条件に当てはまる上から5件を表示する

ORDER BYとLIMITの組み合わせ

SQL
SELECT *
FROM purchases
ORDER BY price DESC
LIMIT 5; #LIMITは末尾に記述する

DISTINCT

検索結果から重複するデータを除くことができる

SQL
DISTINCT(カラム名)
SQL
SELECT DISTINCT(name)
FROM purchases;

SUM関数

数値の合計を計算する

SQL
SUM(カラム名) #指定したカラムのデータの合計を取得する
SQL
SELECT SUM(price)
FROM purchases;

SUM関数とWHEREは併用可能

SQL
SELECT SUM(price)
FROM purchases
WHERE character_name = "たろう";

AVG関数

数値の平均を計算する

SQL
AVG(カラム名) 
SQL
SELECT AVG(price)
FROM purchases;

AVG関数とWHEREは併用可能

SQL
SELECT AVG(price)
FROM purchases
WHERE character_name = "たろう";

COUNT関数

指定したカラムのデータの合計数を計算する

SQL
# NULLの数を含めてデータの数を数える
COUNT(カラム名) 
SELECT COUNT(*)
FROM purchases;

COUNT関数とWHEREは併用可能

SQL
SELECT COUNT(*)
FROM purchases
WHERE character_name = "たろう";

MAX関数・MIN関数

SQL
MAX(カラム名) #指定したカラムのデータの中から最大のデータを取得
MIN(カラム名) #指定したカラムのデータの中から最小のデータを取得
SQL
SELECT MAX(price)
FROM purchases;

MAX関数・MIN関数とWHEREは併用可能

SQL
SELECT MAX(price)
FROM purchases
WHERE character_name = "たろう";

GROUP BY

データをグループ化できる
SQL
GROUP BY カラム名

GROUP BYを用いる場合、SELECTで使えるのは、GROUP BYに指定しているカラム名と集計関数のみ

グループ化と集計

グループ化するには、今までの集計関数を取得するFROMの後ろに、
「GROUP BY カラム名」を追加する。

GROUP BYを用いる場合、SELECTで使えるのは、GROUP BYに指定しているカラム名と集計関数のみ

SQL
SELECT SUM(price), purchased_at ②集計する
FROM purchases
GROUP BY purchased_at; ①グループ化する

複数カラムのGROUP BYの書き方

SQL
GROUP BY カラム名1,カラム名2,... #コンマでつなげる
SQL
SELECT SUM(price), purchased_at, character_name
FROM purchases
GROUP BY purchased_at, character_name;

WHEREとGROUP BYは併用可能

SQL
SELECT 集計関数
FROM テーブル名
WHERE 条件
GROUP BY カラム名1, カラム名2; #WHERE文の後に書く

実行される順番

①レコードの検索 WHERE
②グループ化 GROUP BY
③集計関数で集計される 関数(COUNT,SUM,AVG,MAX,MIN)

SQL
SELECT SUM(price), purchased_at, character_name
FROM purchases
WHERE category = "食費" #レコードの検索
GROUP BY purchased_at, character_name; #日付とキャラクターでグループ化される

HAVING

GROUP BYでグループ化したデータをさらに絞り込む

SQL
GROUP BY カラム名
HAVING 条件;

HANINGとWHEREは併用可能

実行される順番

①レコードの検索 WHERE
②グループ化 GROUP BY
③集計関数で集計される 関数(COUNT,SUM,AVG,MAX,MIN)
④HAVING

WHEREとHAVINGの違い

WHERE・・・ グループ化される前のテーブル全体を検索対象とする
HAVING・・・ GROUP BYによってグループ化されたデータを検索対象とする

SQL
SELECT SUM(price), purchased_at
FROM purchases
GROUP BY purchased_at
HAVING SUM(price) > 1000; #グループ化された後のデータのカラムを使う
続きはRDB/SQL復習②
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?