いろいろな条件でデータを抽出する – mysql

カラムの順番を入れ替えて表示する
SELECT カラム名,カラム名,カラム名 FROM テーブル名;

エイリアスを付けて表示する(ニックネーム)
SELECT カラム名 AS エイリアス FROM テーブル名;
SELECT カラム名 AS エイリアス,カラム名 AS エイリアス… FROM テーブル名;

カラムの値を計算して表示する
SELECT uria*10000 AS “売上” FROM tb;

関数を使って計算する
SELECT AVG(uria) FROM tb;
SELECT SUM(uria)*10000 AS “売上” FROM tb;
SELECT COUNT(uria) FROM tb;

文字列の結合
SELECT CONCAT(bang,nama,”さん”) FROM tb1;

右から取り出す
SELECT RIGHT(bang,2) FROM tb1;
右から2文字を表示する

左から取り出す
SELECT LEFT(bang,3) FROM tb1;
左から3文字を表示する

〇番目~×個取り出す
SELECT SUBSTRING(bang,2,3) FROM tb1;

繰り返して表示:REPEAT
SELECT REPEAT(“♪”,tosi) FROM tb1;

逆から表示:REVERSE
SELECT REVERSE(nama) FROM tb1;

現在の日付と時刻の値を返す関数:NOW
SELECT NOW();
INSERT INTO テーブル名 (カラム名) VALUES(NOW());

指定した数のレコードを表示する
SELECT カラム名 FROM テーブル名 LIMIT 表示するレコード数;

WHEREを使った抽出
SELECT カラム名 FROM テーブル名 WHERE 条件;

比較演算子

比較演算子意味
=等しい
>より大きい
>=以上
<より小さい
<=以下
<>とは異なる
〇 IN ××のリストの中に〇がある
〇 NOT IN ××のリストの中に〇がない
〇 BETWEEN × AND ×××から××の間に〇がある
〇 NOT BETWEEN × AND ×××から××の間に〇がない

あいまい検索:LIKE
SELECT * FROM テーブル名 WHERE カラム名 LIKE 〇 ;
〇の文字列を含むものを抽出する

% 任意の文字列が該当
_ 任意の1文字が該当

文字列を含まないものを抽出:NOT LIKE
SELECT * FROM tb1 WHERE nama NOT LIKE “%田”;

NULLのレコードを抽出:IS NULL
SELECT * FROM tb1 WHERE tosi IS NULL;

NULLじゃないレコードを抽出:IS NOT NULL
SELECT * FROM tb1 WHERE tosi IS NOT NULL;

重複したデータは表示しない:DISTINCT
SELECT DISTINCT bang FROM tb;

複数の条件を指定して選択:AND
WHERE 〇 AND ×
〇かつ×の場合抽出する

〇または×の場合:OR
WHERE 〇 OR ×

AND と OR は複数使うことが可能
ただ両方ある場合はANDが優先して処理される

条件によって入力する値を変化させる:CASE WHEN
CASE
WHEN 条件1 THEN 表示する値
WHEN 条件2 THEN 表示する値
WHEN 条件3 THEN 表示する値

ELSE すべての条件に当てはまらない時の値
END


SELECT bang AS “番号”,uria AS “売上”,
CASE
WHEN uria>=100 THEN “多い”
WHEN uria>=50 THEN “中くらい”
ELSE “少ない”
END AS “評価”
FROM tb;

並べ替え
昇順に並べ替えて表示する
SELECT カラム名 FROM テーブル名 ORDER BY キーとなるカラム名;
キーとなるカラムの小さいものから順番に並ぶようになる

昇順:ASC
降順:DESC

SELECT * FROM tb ORDER BY uria ASC;

SELECT * FROM tb ORDER BY uria DESC LIMIT 5;
→降順で上位5つのレコードのみ表示

表示するレコードの範囲を決める:OFFSET
SELECT カラム名 FROM テーブル名 LIMIT 表示するレコード数 OFFSET 表示開始レコードのシフト数;
表示開始のレコードのシフト数を3にした場合、本来なら1個目から表示するのを3つ後ろに移すので、4っつめのレコードから表示するという処理になります。

グループごとに表示する:GROUP BY
SELECT カラム名 FROM テーブル名 GROUP BY グループ化するカラム名;

グループごとの数を数えてみる
SELECT COUNT(*) FROM tb GROUP BY bang;

SELECT
bang AS “社員番号”,SUM(uria) AS “合計売上”
FROM tb
GROUP BY bang;

SELECT
bang AS “社員番号”,AVG(uria) AS “平均売上”
FROM tb
GROUP BY bang;

条件付きグループで表示:HAVING
SELECT 集計したカラム FROM テーブル名 GROUP BY グループ化するカラム HAVING 条件;

SELECT
bang AS “社員番号”,SUM(uria) AS “合計売上”
FROM tb
GROUP BY bang
HAVING SUM(uria)>=200;

↑グループ化してからの抽出

SELECT
bang AS “番号”,AVG(uria) AS “平均売上”
FROM tb
WHERE uria>=50
GROUP BY bang;
↑グループ化する前に条件をつけているので、uriaが50以上のものを抽出してからグループ化している

グループ化してから並べ替える

SELECT
bang AS “番号”,SUM(uria) AS “合計売上”
FROM tb
GROUP BY bang
ORDER BY SUM(uria);

グループ化してから降順で並べ替える

SELECT
bang AS “番号”,SUM(uria) AS “合計売上”
FROM tb
GROUP BY bang
ORDER BY SUM(uria) DESC;

WHERE条件
GROUP BY 〇〇
ORDER BY △△

SELECT
bang AS “社員番号”,AVG(uria) AS “平均売上”
FROM tb
WHERE uria>=50
GROUP BY bang
HAVING AVG(uria)>=120
ORDER BY AVG(uria) DESC;



タイトルとURLをコピーしました