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 ユーザ名;