1
5

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 5 years have passed since last update.

【SQL】基本のまとめ2

Last updated at Posted at 2019-01-31

#内容
SQLを勉強し始めたので、これまでに学んだ知識をまとめます。
長くなったので【SQL】基本のまとめ1とこの記事に分けました。

この記事の内容

  • 便利なコマンド
    • AND, GROUP BY, HAVING, DISTINCT
  • 結果を見やすくするコマンド
    • ORDER BY, LIKE, LIMIT, AS
  • より多くのデータを使うためのコマンド
    • サブクエリ, JOIN

以下の内容を知りたい方は【SQL】基本のまとめ1

  • SQLとは
  • データベース内の名称
  • 基本のコマンド
    • SELECT, FROM, WHERE, NOT
  • 四則演算や集計のコマンド
    • AVG, SUM, COUNT, MIN, MAX

##下の例で用いるデータのテーブル
cakes

id type name price cost
1 ケーキ ショートケーキ 300 100
2 ケーキ モンブラン 400 200
3 ケーキ チーズケーキ 200 50
4 タルト フルーツタルト 400 300
5 ゼリー コーヒーゼリー 200 50
6 タルト チョコレートタルト 300 70

sales_january

cake_id total
1 56
2 80
3 35
4 67
5 98
6 23

##便利なコマンド
条件を複数入れる

  • かつAND またはOR
    : 300円以下のケーキを知りたい
SELECT name
FROM cakes
WHERE type = "ケーキ" AND price <= 300;

グループ別にデータを見る

  • GROUP BY
    : 商品の種類別の合計金額を知りたい
SELECT type, SUM(price)
FROM cakes
GROUP BY type;

グループ別に条件にあったデータを見る

  • HAVING
    : 平均コストが150円以下の商品タイプを知りたい
SELECT type, AVG(cost)
FROM cakes
GROUP BY type
HAVING AVG(cost) <= 150;

重複なくデータを取り出す

  • DISTINCT(カラム名)
    : どんな種類の商品があるか知りたい
SELECT DISTINCT(type)
FROM cakes;

##結果を見やすくするコマンド

データの並び順を決める

  • 降順 DESC 昇順 ASC
    : 値段が高い商品から順に並べる
SELECT name, price
FROM cakes
ORDER BY price DESC;

一定のキーワードを含むデータを取り出す

  • LIKE %%はSQLにおけるワイルドカード。どの文字列にも一致することを指す)
    : 名前に「ケーキ」を含む商品を知りたい
SELECT name
FROM cakes
WHERE name LIKE "%ケーキ%";

取り出す件数を制限する

  • LIMIT
    : 値段が安い上位5商品を知りたい
SELECT name, price
FROM cakes
ORDER BY price ASC
LIMIT 5;

カラムの名前を変更して出力する

  • AS
    : price-costを利益という名前で出力する
SELECT name, price - cost AS "利益"
FROM cakes

##より多くのデータを使うためのコマンド
サブクエリを用いて条件を指定する

  • ()
    : チョコレートタルトよりも安い商品の名前と値段を知りたい
SELECT name, price
FROM cakes
WHERE price < (
  SELECT price
  FROM cakes
  WHERE name = "チョコレートタルト"
)
;

複数のテーブルを用いて分析を行う

  • JOIN テーブル名 ON 結合の条件 テーブル名.カラム名
  • 複数のテーブルに同じカラム名がある場合は、SELECTの後もテーブル名.カラム名で指定する
    : sales_januaryにある、商品が売れた個数を並べて出力したい
SELECT name, total
FROM cakes
JOIN sales_january
ON cakes.id = sales_january.cake_id;

#まとめ
SQLの最初に学ぶ基本をまとめました。
コマンドを組み合わせることで、例に出したよりもさらに色々な分析ができます:thumbsup:

1
5
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
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?