LoginSignup
1
2

More than 1 year has passed since last update.

SQLの基本

Posted at

データベース

表のことを「テーブル」、行を「レコード」、列を「カラム」という
カラムごとにデータ型を設定する
数値データはクォーテーションで囲わない
日付データはクォーテーションで囲う

データを取得する

sample.sql
SELECT name,price #(カラム名)
FROM purchases; #(テーブル名)
#クエリ終了は;

#全てのカラムを取得する
SELECT *
FROM purchases;

#特定のデータを取得する
SELECT *
FROM purchases
WHERE category = '食費';
#比較演算子が利用できる(日付データでも利用可)

#LIKE演算子
SELECT *
FROM purchases
WHERE category LIKE = '%税%';
#文字列の中に税を含むデータを取得する
#税で始まる文字列'税%'、税で終わる文字列'%税'

#NOT演算子
SELECT *
FROM purchases
WHERE NOT category LIKE = '%税%';
#税を含まないデータを取得する

#NULLデータを取得する
SELECT *
FROM purchases
WHERE category IS NULL;

#NULLではないデータを取得する
SELECT *
FROM purchases
WHERE category IS NOT NULL;

#AND演算子
SELECT *
FROM purchases
WHERE category = '食費'
AND name = '外食';

#OR演算子
SELECT *
FROM purchases
WHERE name = '食料品'
OR name = '外食';

データを並び替える

sample.sql
#ORDER BY
SELECT *
FROM purchases
WHERE category = '食費'
ORDER BY price DESC;
#ASC:ascend(昇順)、DESC:descend(降順)

特定範囲のデータを取得する

sample.sql
#LIMIT
SELECT *
FROM purchases
WHERE category = '食費'
ORDER BY price DESC
LIMIT 10;

#MAXとMIN
SELECT MAX(price)
FROM purchases
WHERE category = '食費';
#一番高額な食費のpriceを取得する

特定のデータを取り除く

sample.sql
#DISTINCT
SELECT DISTINCT(name)
FROM purchases;
#重複したデータを取り除く

データを使って計算する

sample.sql
#四則演算
SELECT name,price,price*1.08
FROM purchases;
#priceに1.08をかける

#SUM関数
SELECT SUM(price)
FROM purchases
WHERE category = '食費';
#食費のpriceを合計する

#AVG関数
SELECT AVG(price)
FROM purchases
WHERE category = '食費';
#食費のpriceの平均値を計算する

#COUNT関数
SELECT COUNT(price)
FROM purchases
WHERE category = '外食';
#外食の回数を計算する
#priceが空欄(NULL)の場合はCOUNTされない
#COUNT(*)の場合はNULLもCOUNTされる

データをグループ化する

sample.sql
#GROUP BY
SELECT SUM(price),purchased_at
FROM purchases
GROUP BY purchased_at;
#日付ごとにpriceの合計を計算する(1日の支出がわかる)
#GROUP BYを使えるのは、GROUP BYに指定しているカラム名と集計関数のみ
#WHEREの後にGROUP BYを記述する

#複数のカラムをグループ化する
SELECT COUNT(price),purchased_at,category
FROM purchases
GROUP BY purchased_at,category;
#日付ごとに、categoryごとの買い物回数をまとめる

#HAVING
SELECT SUM(price),purchased_at
FROM purchases
WHERE category = '食費'
GROUP BY purchased_at
HAVING SUM(price) >= 1000;
#グループ化したデータを絞り込む

サブクエリ(入れ子)

sample.sql
#サブクエリ()
SELECT name
FROM purchases
WHERE price >(
  SELECT price
  FROM purchases
  WHERE name = '焼肉'
);
#焼肉よりも高額な支出を抽出する

カラム名を変更する

sample.sql
#AS
SELECT price AS '焼肉料金'
FROM purchases
WHERE name = '焼肉';
#カラム名をpriceから焼肉料金に変更

複数のテーブルからデータを取得する

主キーと外部キーでテーブルを紐づける

sample.sql
#JOIN,LEFT JOIN
SELECT shops.name
FROM purchases
JOIN shops
ON purchases.shop_id = shops.id
WHERE purchases.name = '焼肉';
#purchasesテーブルの外部キーをshopsテーブルの主キーと紐づける
#焼肉のお店が一覧表示される
#LEFT JOINにすればidがNULLのデータも取得できる
#JOIN ONを使えば、複数のテーブルを結合できる

タスクの順序

テーブルの指定(FROM)→結合(ON,JOIN)→取得条件(WHERE)→グループ化(GROUP BY)→関数(COUNT,SUM,AVG,MAX,MIN)→HAVING→検索(SELECT,DISTINCT)→順序(ORDER BY)→LIMIT

データを追加する

sample.sql
#INSERT
INSERT INTO purchases(name,price)
VALUES('焼肉',1000);
#AUTO INCREMENTによって、idとid番号は自動で挿入される

データを更新する

sample.sql
#UPDATE
UPDATE purchases
SET name = 'ハンバーグ',price = 800
WHERE id = 5;

データを削除する

sample.sql
#DELETE
DELETE FROM purchases
WHERE id = 5;

取得・追加・更新・削除

取得:SELECT カラム名 FROM テーブル名;
追加:INSERT INTO テーブル名(カラムA,カラムB) VALUES(値1,値2);
更新:UPDATE テーブル名 SET カラムA = 値1,カラムB = 値2 WHERE 条件;
削除:DELETE FROM テーブル名 WHERE 条件;

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