雑
コマンド羅列
create
CREATE TABLE テーブル名 (カラム名 型(桁数) オプション, カラム名 型(桁数) オプション...);
mysql> CREATE TABLE user (
-> id INT AUTO_INCREMENT PRIMARY KEY,
-> name VARCHAR(20) NOT NULL,
-> email VARCHAR(255) UNIQUE,
-> age INT,
-> gender TINYINT COMMENT '1が男、2が女',
-> created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-> updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
alter
mysql> ALTER TABLE (テーブル名) MODIFY (カラム名) (変更後);
insert
INSERT INTO テーブル名 (カラム1, カラム2, ...カラムn) VALUES (カラム1の値, カラム2の値, ...カラムnの値);
valuesはカンマ区切りで複数レコードを1クエリで挿入できる
delete
select
SELECT (カラム名) FROM (テーブル名) WHERE (条件);
論理演算子
- AND(&&)
- OR (||)
- NOT
不等号
- =
- !=
- >, >=
- <. <=
- BETWEEN a AND b (a < b)
LIKE
%
をワイルドカードとして部分一致検索に使える
mysql> SELECT * FROM people WHERE name LIKE '%こ';
IN
リストで検索
WHERE カラム名 IN (値1, 値2, 値3...値N);
DISTINCT
SELECT DISTINCTで重複カラムを削除して取得できる。
order by
asc, desc 昇順、降順に並び替えできる
JOIN
join文の種類によって対応する値がない場合の扱いが異なる
INNNER JOIN
部分集合
LEFT JOIN
左側のテーブルは全て表示(対応する値がないセルはNULLになる)
RIGHT JOIN
LEFT JOINの右版
集計関数
- 基本的に
GROUP BY
と組み合わせて集計を行う。 -
select
できるのはGROUP BY
したカラムのみ。 - カラムみたいな扱いができる。
MIN(), MAX()
最大値。最小値
AVG()
平均
SUM()
総和
細かいところ
- テーブル名・カラム名が予約語とかぶるときはバッククォート( ` )を使う
- NULLを検索したいときは
=
ではなくIS
を使う