MySQLクエリチートシート
MySQLとは
MySQLはC、C++で書かれた特にPHPなどと相性の良いオープンソースなリレーショナルデータベース管理システムのこと
データ定義クエリ (DDL)
DDLはData Definition Languageの略で、データ定義言語ともいう。
主にデータベースやユーザー、テーブルの作成・変更・削除に使う
CREATE DATABASE
新しいデータベースを作成
CREATE DATABASE IF NOT EXISTS データベース名;
DROP DATABASE
データベースを削除
DROP DATABASE データベース名;
CREATE USER
新しいユーザを作成
CREATE USER ユーザ名 IDENTIFIED BY 'パスワード';
RENAME USER
ユーザ名を変更
RENAME USER 旧ユーザ名 TO 新ユーザ名;
DROP USER
ユーザを削除
DROP USER ユーザ名;
CREATE TABLE
新しいテーブルを作成
CREATE TABLE IF NOT EXISTS データベース名.テーブル名(型 カラム名1, 型 カラム名2);
ALTER TABLE
テーブル名を変更
ALTER TABLE 旧テーブル名 RENAME 新テーブル名;
DROP TABLE
テーブルを削除
DROP TABLE IF EXISTS テーブル名;
TRUNCATE TABLE
テーブルのデータを全て削除 (テーブルは削除されない)
TRUNCATE TABLE テーブル名;
データ操作クエリ (DML)
DMLはData Manipulation Languageの略で、データ操作言語ともいう。
主にデータの追加・取得・変更・削除に使う
INSERT INTO
テーブルにデータを追加
INSERT INTO テーブル名(カラム名1, カラム名2) VALUES(カラム値1, カラム値2);
SELECT
テーブルのデータを取得
SELECT カラム名1, カラム名2 FROM テーブル名;
UPDATE
テーブルのデータを変更
UPDATE テーブル名 SET カラム名 = 'カラム値';
DELETE FROM
テーブルのデータを削除
DELETE FROM テーブル名;
抽出条件
WHERE =
カラムの値が指定した値に一致するデータ
SELECT * FROM テーブル名 WHERE カラム名 = '値';
WHERE BETWEEN
カラムの値が指定した範囲に一致するデータ
SELECT * FROM テーブル名 WHERE カラム名 BETWEEN 最小数値 AND 最大数値;
WHERE IN
カラムの値が指定した値のリストの中の内1つ以上に一致するデータ
SELECT * FROM テーブル名 WHERE カラム名 IN ('値1', '値2');
WHERE LIKE
カラムの値が指定した値の文字を含むデータ
SELECT * FROM テーブル名 WHERE カラム名 LIKE '値';
WHERE REGEXP
カラムの値が指定した値(正規表現)に一致するデータ
SELECT * FROM テーブル名 WHERE カラム名 REGEXP '正規表現';
GROUP BY
同一のカラムの値を1つに集計したデータ
SELECT * FROM テーブル名 GROUP BY カラム名;
HAVING
GROUP BY句の集計したデータを絞り込んだデータ
SELECT * FROM テーブル名 GROUP BY カラム名 HAVING 条件;
ORDER BY
カラムの値を対象に並び替えたデータ (ASC: 昇順, DESC: 降順)
SELECT * FROM テーブル名 ORDER BY カラム名 ASC;
LIMIT
指定した行数の範囲のデータ
SELECT * FROM テーブル名 LIMIT 開始行, 上限行;
DISTINCT
重複したデータを除外したデータ
SELECT DISTINCT * FROM テーブル名;
サブクエリ
サブクエリ内で取得したデータに一致するデータ
SELECT * FROM テーブル名 WHERE カラム名 = (SELECT カラム名 FROM テーブル名 抽出条件);
テーブル結合
INNER JOIN
2つのテーブルの共通のデータを抽出
SELECT * FROM テーブル名1 INNER JOIN テーブル名2 ON テーブル名1.カラム名 = テーブル名2.カラム名;
LEFT JOIN
テーブル1を基準として、2つのテーブルの共通のデータを抽出 (テーブル1にしかないデータも抽出)
SELECT * FROM テーブル名1 LEFT JOIN テーブル名2 ON テーブル名1.カラム名 = テーブル名2.カラム名;
RIGHT JOIN
テーブル2を基準として、2つのテーブルの共通のデータを抽出 (テーブル2にしかないデータも抽出)
SELECT * FROM テーブル名1 RIGHT JOIN テーブル名2 ON テーブル名1.カラム名 = テーブル名2.カラム名;
CROSS JOIN
2つのテーブルの全ての組み合わせのデータを抽出
SELECT * FROM テーブル名1 CROSS JOIN テーブル名2;
INNER JOIN AS
1つのテーブルの共通のデータを抽出 (自己結合)
SELECT * FROM テーブル名1 AS 新テーブル名1 INNER JOIN テーブル名2 AS 新テーブル名2 ON 新テーブル名1.カラム名 = 新テーブル名2.カラム名;
UNION
2つの抽出したデータの共通のデータを抽出 (UNIONの後ろにALLをつけると重複は削除される)
SELECT * FROM テーブル名1 UNION SELECT * FROM テーブル名2;
データ制御クエリ (DCL)
DCLはData Control Languageの略で、データ制御言語ともいう。
主にデータへのアクセス権の付与・削除に使う
GRANT
ユーザに対して権限を設定
GRANT ALLかSELECTなど カラム名 ON データベース名.テーブル名 TO ユーザ名;
REVOKE
ユーザに対して設定した権限を削除
REVOKE ALLかSELECTなど ON データベース名.テーブル名 FROM ユーザ名;