MySQLクエリチートシート TECH

MySQLとは

MySQLはC、C++で書かれた特にPHPなどと相性の良いオープンソースなリレーショナルデータベース管理システムのこと

MySQL公式サイト 公式ドキュメント

データ定義クエリ (DDL)

DDLはData Definition Languageの略で、データ定義言語ともいう。

主にデータベースやユーザー、テーブルの作成・変更・削除に使う。

CREATE DATABASE

新しいデータベースを作成

SQL
CREATE DATABASE IF NOT EXISTS データベース名;

DROP DATABASE

データベースを削除

SQL
DROP DATABASE データベース名;

CREATE USER

新しいユーザを作成

SQL
CREATE USER ユーザ名 IDENTIFIED BY 'パスワード';

RENAME USER

ユーザ名を変更

SQL
RENAME USER 旧ユーザ名 TO 新ユーザ名;

DROP USER

ユーザを削除

SQL
DROP USER ユーザ名;

CREATE TABLE

新しいテーブルを作成

SQL
CREATE TABLE IF NOT EXISTS データベース名.テーブル名(型 カラム名1, 型 カラム名2);

ALTER TABLE

テーブル名を変更

SQL
ALTER TABLE 旧テーブル名 RENAME 新テーブル名;

DROP TABLE

テーブルを削除

SQL
DROP TABLE IF EXISTS テーブル名;

TRUNCATE TABLE

テーブルのデータを全て削除 (テーブルは削除されない)

SQL
TRUNCATE TABLE テーブル名;

データ操作クエリ (DML)

DMLはData Manipulation Languageの略で、データ操作言語ともいう。

主にデータの追加・取得・変更・削除に使う

INSERT INTO

テーブルにデータを追加

SQL
INSERT INTO テーブル名(カラム名1, カラム名2) VALUES(カラム値1, カラム値2);

SELECT

テーブルのデータを取得

SQL
SELECT カラム名1, カラム名2 FROM テーブル名;

UPDATE

テーブルのデータを変更

SQL
UPDATE テーブル名 SET カラム名 = 'カラム値';

DELETE FROM

テーブルのデータを削除

SQL
DELETE FROM テーブル名;

抽出条件

WHERE =

カラムの値が指定した値に一致するデータ

SQL
SELECT * FROM テーブル名 WHERE カラム名 = '値';

WHERE BETWEEN

カラムの値が指定した範囲に一致するデータ

SQL
SELECT * FROM テーブル名 WHERE カラム名 BETWEEN 最小数値 AND 最大数値;

WHERE IN

カラムの値が指定した値のリストの中の内1つ以上に一致するデータ

SQL
SELECT * FROM テーブル名 WHERE カラム名 IN ('値1', '値2');

WHERE LIKE

カラムの値が指定した値の文字を含むデータ

SQL
SELECT * FROM テーブル名 WHERE カラム名 LIKE '値';

WHERE REGEXP

カラムの値が指定した値(正規表現)に一致するデータ

SQL
SELECT * FROM テーブル名 WHERE カラム名 REGEXP '正規表現';

GROUP BY

同一のカラムの値を1つに集計したデータ

SQL
SELECT * FROM テーブル名 GROUP BY カラム名;

HAVING

GROUP BY句の集計したデータを絞り込んだデータ

SQL
SELECT * FROM テーブル名 GROUP BY カラム名 HAVING 条件;

ORDER BY

カラムの値を対象に並び替えたデータ (ASC: 昇順, DESC: 降順)

SQL
SELECT * FROM テーブル名 ORDER BY カラム名 ASC;

LIMIT

指定した行数の範囲のデータ

SQL
SELECT * FROM テーブル名 LIMIT 開始行, 上限行;

DISTINCT

重複したデータを除外したデータ

SQL
SELECT DISTINCT * FROM テーブル名;

サブクエリ

サブクエリ内で取得したデータに一致するデータ

SQL
SELECT * FROM テーブル名 WHERE カラム名 = (SELECT カラム名 FROM テーブル名 抽出条件);

テーブル結合

INNER JOIN

2つのテーブルの共通のデータを抽出

SQL
SELECT * FROM テーブル名1 INNER JOIN テーブル名2 ON テーブル名1.カラム名 = テーブル名2.カラム名;

LEFT JOIN

テーブル1を基準として、2つのテーブルの共通のデータを抽出 (テーブル1にしかないデータも抽出)

SQL
SELECT * FROM テーブル名1 LEFT JOIN テーブル名2 ON テーブル名1.カラム名 = テーブル名2.カラム名;

RIGHT JOIN

テーブル2を基準として、2つのテーブルの共通のデータを抽出 (テーブル2にしかないデータも抽出)

SQL
SELECT * FROM テーブル名1 RIGHT JOIN テーブル名2 ON テーブル名1.カラム名 = テーブル名2.カラム名;

CROSS JOIN

2つのテーブルの全ての組み合わせのデータを抽出

SQL
SELECT * FROM テーブル名1 CROSS JOIN テーブル名2;

INNER JOIN AS

1つのテーブルの共通のデータを抽出 (自己結合)

SQL
SELECT * FROM テーブル名1 AS 新テーブル名1 INNER JOIN テーブル名2 AS 新テーブル名2 ON 新テーブル名1.カラム名 = 新テーブル名2.カラム名;

UNION

2つの抽出したデータの共通のデータを抽出 (UNIONの後ろにALLをつけると重複は削除される)

SQL
SELECT * FROM テーブル名1 UNION SELECT * FROM テーブル名2;

データ制御クエリ (DCL)

DCLはData Control Languageの略で、データ制御言語ともいう。

主にデータへのアクセス権の付与・削除に使う

GRANT

ユーザに対して権限を設定

SQL
GRANT ALLSELECTなど カラム名 ON データベース名.テーブル名 TO ユーザ名;

REVOKE

ユーザに対して設定した権限を削除

SQL
REVOKE ALLSELECTなど ON データベース名.テーブル名 FROM ユーザ名;