この記事ではMySQLのテーブル操作をまとめています。
1. 列の取得
SELECT id,name FROM user;
2. 列を取得し、列名を変更する
SELECT id AS 番号,name AS 名前 FROM user;
3. 列を演算して取得
- 掛け算
SELECT name AS 名前, price AS 価格, price * 1.08 AS 税込価格 FROM producs;
- Round(数値、丸め込み桁数
SELECT *,ROUND(price * 1.08, 2) AS 税込価格 FROM products;
- 文字列連結Concat(文字列、文字列、…)
SELECT CONCAT(last_name,' ',first_name, 'さん') FROM users;
4. 条件を指定するして値を取得する
SELECT name,price FROM products WHERE price >= 9800;
演算子 | 意味 |
---|---|
IN | 含まれている |
NOT IN | 含まれていない |
IS NULL | 値がある |
IS NOT NULL | 値がない(==NULL) |
LIKE | パターンマッチング |
BETWEEN … AND … | 値が範囲内にある,andでも書ける |
- idが1or2or3の行を取得
SELECT * FROM products WHERE id IN(1,2,3);
- like
%
・・・0文字以上の任意の文字列
_
・・・任意の一文字
ワイルドカード | パターン |
---|---|
'A%' | Aで始まる文字列 |
'%A%' | Aを含む文字列 |
'%A' | Aで終わる文字列 |
'__A' | 任意の二文字で始まり、Aで終わる文字列 |
5. 集約関数
関数 | 意味 |
---|---|
SUM(e) | 合計 |
AVG(e) | 平均 |
MIN(e) | 最小値 |
MAX(e) | 最大値 |
COUNT(e) | 行数カウント |
- 例
SELECT SUM(AMOUNT) AS 合計 FROM orders WHERE time >= '2020-03';
- 重複を排除した集約
COUNT (DISTINCT e)
6. グループ化
SELECT id,name,COUNT(*) FROM users GROUP BY id;
- 集約結果を更に絞り込むhaving
- 記述順序
- SELECT
- FROM
- 結合処理
- WHERE
- GROUP BY
- HAVING
- ORDER BY
- LIMIT
7. 並び替え
DESC・・・降順
ASC・・・昇順
8. 日付と時刻の演算
- 現在の日付
SELECT CURRENT_DATE();
- 現在の時刻
SELECT CURRENT_TIMESTAMP();
- n日後の日付
SELECT CURRENT_DATE() + INTERVAL 3 DAY;
- n時間前の時刻
SELECT CURRENT_TIMESTAMP() - INTERVAL 6 HOUR;
- extract
日付や時刻の特定の部分までを取り出す
SELECT * FROM weddings WHERE EXTRACT(year_month FROM time) = 202202;