SQL 基本操作メモ(データ取得編)
基本操作
■列を選択 SELECT
SELECT name, price
■テーブルを選択 FROM
SELECT name, price
テーブル sales_data から、
列 name, price を出力
SELECT name, price
FROM sales_data;
■全ての列を選択 SELECT *
SELECT *
FROM sales_data;
■条件を選択 WHERE
テーブル sales_data から、
列 name が apple の、全ての列を出力
SELECT *
FROM sales_data
WHERE name = "apple";
- テキスト → クオーテーションで囲む
- 数値 → クオーテーションで囲まない
- 日付 → クオーテーションで囲む
WHERE name = "apple"
WHERE price = 500
WHERE date = "2018-06-13"
比較演算子も使用可能
WHERE price >= 500
WHERE date < "2018-06-13"
■特定の文字を含むデータの取得 LIKE
nameカラムで「banana」を含むデータ
WHERE name LIKE "%banana%"
nameカラムで「banana」で始まるデータ
WHERE name LIKE "banana%"
nameカラムで「banana」で終わるデータ
WHERE name LIKE "%banana"
■否定の条件 WHERE NOT
priceカラムが 1000 でないデータ
WHERE NOT price = 1000
nameカラムで「banana」を含まないデータ
WHERE NOT name LIKE "%banana%"
■NULLの扱い IS NULL / IS NOT NULL
price が NULL のデータを抽出
WHERE price IS NULL
price が NULL でないデータを抽出
WHERE price IS NOT NULL
■WHERE文に複数の条件 AND / OR
両方の条件を満たすデータを抽出
WHERE category = "A" AND name = "orange"
どちらかの条件を満たすデータを抽出
WHERE category = "A" OR name = "orange"
■並べ替え ORDER BY
- ASC : 昇順
- DESC : 降順
テーブル sales_data の中で price 列を降順で抽出
SELECT *
FROM sales_data
ORDER BY price DESC;
■出力行数の制限 LIMIT
10件まで表示
SELECT *
FROM sales_data
WHERE price = 800
LIMIT 10;
■重複を省いたデータを取得 DISTINCT
SELECT DISTINCT (name)
FROM sales_data;
■四則計算
- 足し算:+
- 引き算:-
- 掛け算:*
- 割り算:/
price を税込金額に変更(1.08をかける)
SELECT price * 1.08
FROM sales_data;
■関数
- 合計:SUM()
- 平均:AVG()
- データ数:COUNT() 【NULLはカウントしない】
- 全行数:COUNT(*)
- 最大値:MAX()
- 最小値:MIN()
name が apple のデータの price の合計
SELECT SUM(price)
FROM sales_data
WHERE name = "apple";
■グループ化と集計 GROUP BY
name ごとの price の合計値を出力
SELECT name, SUM(price)
FROM sales_data
GROUP BY name;
【WHERE との併用も可能(WHEREから先に適用される)】
■グループ化したデータの絞り込み HAVING
SELECT name, SUM(price)
FROM sales_data
GROUP BY name
HAVING SUM(price) >= 500;
■サブクエリを使って複雑なデータを取得する
apple の価格より高い価格を持つ name を表示
SELECT name
FROM sales_data
WHERE price > (
SELECT price
FROM sales_data
WHERE name = "apple"
);
■カラムに別の名前をつける AS
SELECT price AS "appleの価格"
FROM sales_data
WHERE name = "apple";
SELECT name AS "priceが500より高い商品名"
FROM sales_data
WHERE price > 500;
■テーブルの結合 JOIN ON
別テーブル countries と country_id、idを基点に結合
SELECT *
FROM sales_data
JOIN countries
ON sales_data.country_id = countries.id;
複数テーブルでのカラムの指定(テーブル名.カラム名)
SELECT sales_data.name, countries.name
FROM sales_data
JOIN countries
ON sales_data.country_id = countries.id;
NULLのレコードも表示させる場合(LEFT JOIN)
SELECT sales_data.name, countries.name
FROM sales_data
LEFT JOIN countries
ON sales_data.country_id = countries.id;
テーブルをさらに結合
SELECT *
FROM sales_data
JOIN countries
ON sales_data.country_id = countries.id
LEFT JOIN suppliers
ON sales_data.supplier_id = suppliers.id;
処理の順番
テーブル指定(FROM)
↓
結合(JOIN ON)
↓
条件(WHERE)
↓
グループ化(GROUP BY)
↓
関数処理(SUM, AVG...)
↓
グループデータの絞り込み(HAVING)
↓
検索(SELECT)
↓
順序(ORDER BY)
↓
出力数調整(LIMIT)
Author And Source
この問題について(SQL 基本操作メモ(データ取得編)), 我々は、より多くの情報をここで見つけました https://qiita.com/ryo111/items/9be8eebe27e9d2d017bf著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .