⚡ スマートサマリー
このSQLチートシートは、実務に携わる開発者が日常的に使用するコマンドをタスク別にまとめたものです。各セクションでは、データベースの作成、データ型、クエリ、フィルタリング、結合、インデックス作成など、正確な構文と分かりやすい説明を併記しています。
- 🗄️ 構造コマンド: CREATE DATABASE、CREATE TABLE、ALTER、RENAME、DROPはスキーマを定義し、再構築します。
- 🔢 データ型: 数値型、テキスト型、日付型、バイナリ型は、各列のストレージサイズと有効範囲を設定します。
- 🔎 取得コマンド: WHERE、IN、LIKE、REGEXP を使用した SELECT は、結果セットを重要な行に絞り込みます。
- ✍️ 変更コマンド: INSERT、UPDATE、DELETEは保存されている行を変更する操作であり、それぞれオプションの条件を指定できます。
- 📊 集計コマンド: COUNT、MIN、MAX、SUMでグループ化し、 AVG データを要約し、HAVING句でグループをフィルタリングします。
- 🔗 組み合わせコマンド: JOINはテーブルを横に並べて結合するのに対し、UNIONは2つのクエリの結果を積み重ねます。

データベースとテーブルの作成コマンド
すべてのSQLセッションは、データベースと、行を格納するための少なくとも1つのテーブルから始まります。
| Command |
詳細説明 |
CREATE DATABASE database1; |
データベースを作成する |
CREATE DATABASE IF NOT EXISTS database1; |
IF NOT EXISTS を使用すると、指示を出すことができます MySQL サーバーは、データベースを作成する前に、類似の名前のデータベースが存在するかどうかを確認する。 |
CREATE DATABASE IF NOT EXISTS database1 CHARACTER SET latin1 COLLATE latin1_swedish_ci; |
latin1文字セットは、スウェーデン語の大文字小文字を区別しない順序であるlatin1_swedish_ci照合順序を使用します。 |
SHOW DATABASES; |
このSQLコマンドを実行すると、既存のデータベースの一覧が表示されます。 |
CREATE TABLE [IF NOT EXISTS] TableName (fieldname dataType [optional parameters]) ENGINE = storage Engine; |
テーブルの作成構文 |
SQL データ型のチートシート
列のデータ型によって、格納できるデータ量と各行が消費する容量が決まります。
数値データ型
| Command |
詳細説明 |
TINYINT( ) |
-128~127は通常値、0~255は符号なし整数。 |
SMALLINT( ) |
-32768~32767ノーマル
0 ~ 65535 符号なし。 |
MEDIUMINT( ) |
-8388608~8388607ノーマル
0 ~ 16777215 符号なし。 |
INT( ) |
-2147483648~2147483647ノーマル
0 ~ 4294967295 符号なし。 |
BIGINT( ) |
-9223372036854775808~9223372036854775807ノーマル
0 ~ 18446744073709551615 符号なし。 |
FLOAT |
浮動小数点を含む小さな概数。 |
DOUBLE( , ) |
小数点以下が変動する大きな概数。 |
DECIMAL( , ) |
正確な固定小数点数。通貨値を格納するのに最適な選択肢です。 |
テキストデータ型
| Command |
詳細説明 |
CHAR( ) |
0~255文字の固定長セクション。 |
VARCHAR( ) |
長さが0~65535文字の可変長セクション。 |
TINYTEXT |
最大長が 255 文字の文字列。 |
TEXT |
最大長が 65535 文字の文字列。 |
BLOB |
最大長65535バイトのバイナリデータ。 |
MEDIUMTEXT |
最大長が 16777215 文字の文字列。 |
MEDIUMBLOB |
最大長16777215バイトのバイナリデータ。 |
LONGTEXT |
最大長が 4294967295 文字の文字列。 |
LONGBLOB |
最大長4294967295バイトのバイナリデータ。 |
日付/時刻のデータ型
| Command |
詳細説明 |
DATE |
YYYY-MM-DD |
DATETIME |
YYYY-MM-DD HH:MM:SS |
TIMESTAMP |
YYYY-MM-DD HH:MM:SS 形式で、UTC で保存され、セッションのタイムゾーンに変換されます。 |
TIME |
HH:MM:SS |
他のデータ型
| Command |
詳細説明 |
ENUM |
定義済みのテキスト値のリストから選択した1つのテキスト値を保存します。 |
SET |
これは、あらかじめ定義されたテキスト値のリストから選択されたテキスト値を格納するためにも使用されます。複数の値を保持できます。 |
BOOL |
TINYINT(1) の同義語で、ブール値を格納するために使用されます。 |
BINARY |
CHAR型と似ていますが、違いはテキストがバイナリ形式で保存される点です。 |
VARBINARY |
VARCHARと似ていますが、違いはテキストがバイナリ形式で格納される点です。 |
SQL SELECT ステートメント コマンド
SELECTは、テーブルから行を読み込むために使用されるコマンドです。
| Command |
詳細説明 |
SELECT * FROM table1; |
テーブルからすべての列を選択してください |
SELECT t1, t2, t3, t4 FROM table1; |
我々はt1、t2、t3、t4フィールドのみを取得することに関心がある。 |
SELECT CONCAT(t1, ' (', t3, ')'), t4 FROM table2; |
列の値を結合して単一の出力列にする |
SELECT column_name | value | expression [AS] alias_name; |
エイリアスフィールド名の構文 |
AND、OR、IN、NOT IN コマンドを使用した SQL WHERE 句
WHERE句は行をフィルタリングし、以下の演算子をその中に組み合わせることができます。
| Command |
詳細説明 |
SELECT * FROM tableName WHERE condition; |
WHERE句の構文 |
SELECT * FROM table1 WHERE t1 = 2 AND t2 = 2008; |
WHERE句とAND論理演算子の組み合わせ |
SELECT * FROM table1 WHERE t1 = 1 OR t1 = 2; |
WHERE句とOR論理演算子の組み合わせ |
SELECT * FROM table2 WHERE t1 IN (1,2,3); |
WHERE句とINキーワードの組み合わせ |
SELECT * FROM table2 WHERE t1 NOT IN (1,2,3); |
WHERE句とNOT INキーワードの組み合わせ |
SELECT * FROM table2 WHERE t3 = 'Female'; |
WHERE句と等号(=)比較演算子の組み合わせ |
SELECT * FROM table3 WHERE t3 > 2000; |
WHERE句と大なり比較演算子(>)の組み合わせ |
SELECT * FROM table1 WHERE t1 <> 1; |
WHERE句と不等号(<>)比較演算子の組み合わせ |
SQL コマンド INSERT INTO テーブル
| Command |
詳細説明 |
INSERT INTO table_name(column_1, column_2, ...) VALUES (value_1, value_2, ...); |
SQL INSERTコマンドの基本的な構文 |
INSERT INTO table1 (t1,t2,t3,t4) VALUES (X1,X2,X3,X4); |
テーブルにデータを挿入する |
INSERT INTO table_1 SELECT * FROM table_2; |
別のテーブルからテーブルに挿入する |
SQL DELETEコマンド
| Command |
詳細説明 |
DELETE FROM table_name [WHERE condition]; |
の行を削除 MySQL |
SQL更新コマンド
| Command |
詳細説明 |
UPDATE table_name SET column_name = new_value [WHERE condition]; |
更新コマンドの構文 |
SQL の ORDER BY: DESC および ASC コマンド
| Command |
詳細説明 |
SELECT statement... [WHERE condition | GROUP BY field_name(s) HAVING condition] ORDER BY field_name(s) [ASC | DESC]; |
ORDER BY句の基本構文 |
SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC | DESC [LIMIT N]; |
DESC および ASC 構文 |
SQL GROUP BY および HAVING 句コマンド
グループ化 HAVING句は行をグループにまとめ、グループが形成された後にそれらのグループをフィルタリングします。
グループ化する
| Command |
詳細説明 |
SELECT statements... GROUP BY column_name1[, column_name2, ...] [HAVING condition]; |
GROUP BY構文 |
グロウping 集計関数
| Command |
詳細説明 |
SELECT t2, COUNT(t1) FROM table1 GROUP BY t2; |
データベース内の t2 列値の合計数が必要だとします。 |
HAVING 句
| Command |
詳細説明 |
SELECT * FROM table2 GROUP BY t1_id, t4 HAVING t1_id = x1; |
t1_idがx1であるtable2の行に対応するすべてのt4値を返します。 |
Like、NOT Like、Escape、( % )、( _ ) の SQL ワイルドカード コマンド
ワイルドカードを使用すると、LIKE は部分的な文字列に一致させることができます。
% パーセンテージワイルドカードコマンド MySQL
| Command |
詳細説明 |
SELECT statements... WHERE fieldname LIKE 'xxx%'; |
任意の数の文字に一致するパーセントワイルドカードの基本的な構文 |
_ アンダースコアワイルドカードコマンド
| Command |
詳細説明 |
SELECT * FROM table1 WHERE t3 LIKE 'x2_'; |
アンダースコアは、正確に1文字と一致します。 |
ワイルドカード コマンドとは異なります
| Command |
詳細説明 |
SELECT * FROM table1 WHERE t3 NOT LIKE 'x2_'; |
t3の値がパターンに一致しないtable1の行を取得したいとします。 |
エスケープキーワードワイルドカードコマンド
| Command |
詳細説明 |
LIKE '67#%' ESCAPE '#'; |
# はワイルドカードをエスケープするため、文字列「67%」そのものをチェックします。 |
SQL 正規表現 (REGEXP)
| Command |
詳細説明 |
SELECT statements... WHERE fieldname REGEXP 'pattern'; |
正規表現のマッチの基本構文 |
正規表現のメタ文字
| Command |
詳細説明 |
* |
アスタリスク (*) メタ文字は、その直前の文字列の 0 回以上の出現に一致します。 |
+ |
プラス記号(+)は、その直前の文字列の1つ以上のインスタンスに一致します。 |
? |
疑問符(?)メタ文字は、その直前の文字列に0回または1回出現するのと一致します。 |
. |
ドット(.)メタ文字は、改行を除く任意の1文字に一致します。 |
[abc] |
文字リスト[abc]は、囲まれた文字のいずれかに一致します。 |
[^abc] |
文字リスト [^abc] は、囲まれた文字を除く任意の文字に一致します。 |
[A-Z] |
[AZ] の範囲は、任意の大文字に一致します。 |
[a-z] |
[az] の範囲は、任意の小文字に一致します。 |
[0-9] |
[0-9]の範囲は、0から9までの任意の数字に一致します。 |
^ |
キャレット(^)は、マッチの開始位置を固定します。 |
| |
縦棒(|)は選択肢を分離します。 |
[[:<:]] |
[[:<:]] マーカーは単語の先頭に一致します。 |
[[:>:]] |
[[:>:]] マーカーは単語の末尾に一致します。 |
[:class:] |
[:class:] マーカーは文字クラスに対応します。たとえば、[:alpha:] は文字、[:space:] は空白、[:punct:] は句読点、[:upper:] は大文字に対応します。 |
SQL関数コマンド
文字列関数
| Command |
詳細説明 |
SELECT t1_id, t2, UCASE(t2) FROM table1; |
UCASE関数は文字列を引数として受け取り、その文字列内のすべての文字を大文字に変換します。 |
数値関数
| Command |
詳細説明 |
例: |
DIV |
整数除算 |
SELECT 23 DIV 6; |
/ |
ディビジョン |
SELECT 23 / 6; |
- |
サブtrac生産 |
SELECT 23 - 6; |
+ |
追加 |
SELECT 23 + 6; |
* |
乗算 |
SELECT 23 * 6 AS multiplication_result; |
% or MOD |
モジュラス |
SELECT 23 % 6; or SELECT 23 MOD 6; |
FLOOR |
数値から小数点以下の桁を削除し、最も近い整数に切り捨てます。 |
SELECT FLOOR(23 / 6) AS floor_result; |
ROUND |
小数点以下の桁数を持つ数値を、最も近い整数に丸めます。 |
SELECT ROUND(23 / 6) AS round_result; |
格納された関数
| Command |
詳細説明 |
CREATE FUNCTION sf_name ([parameter(s)]) |
必須。 MySQL サーバーは、括弧内に定義されたオプションパラメータを持つ sf_name という名前の関数を作成します。 |
RETURNS data type |
必須。関数が返すデータ型を指定します。 |
DETERMINISTIC |
この関数は、同じ引数が渡された場合は常に同じ値を返します。 |
STATEMENTS |
関数が実行するプロシージャ コード。 |
SQL集計関数コマンド
| Command |
詳細説明 |
SELECT COUNT(t1_id) FROM table1 WHERE t1_id = 2; |
COUNT関数 |
SELECT MIN(t3) FROM table2; |
MIN機能 |
SELECT MAX(t3) FROM table2; |
マックス機能 |
SELECT SUM(t4) FROM table3; |
SUM機能 |
SELECT AVG(t4) FROM table3; |
AVG function |
SQL IS NULL および IS NOT NULL コマンド
A NULL は存在しない値なので、等号演算子ではなく IS NULL を使用してテストする必要があります。
| Command |
詳細説明 |
SELECT COUNT(t3) FROM table1; |
COUNT関数は、列内のNULL値を無視します。 |
CREATE TABLE table2(
t1_number int NOT NULL,
t2_names varchar(255),
t3 varchar(6)
); |
NOT NULLは、列に空の値を入れることを禁止します。 |
column_name IS NULL
column_name IS NOT NULL |
NULLキーワードの基本構文 |
SELECT * FROM table1 WHERE t2_number IS NULL; |
IS NULL の例 |
SELECT * FROM table1 WHERE t2_number IS NOT NULL; |
IS NOT NULL の例 |
SQL AUTO_INCREMENT コマンド
| Command |
詳細説明 |
CREATE TABLE table1 (
t1_id int(11) AUTO_INCREMENT,
t2_name varchar(150) DEFAULT NULL,
t3 varchar(500) DEFAULT NULL,
PRIMARY KEY (t1_id)
); |
自動インクリメント構文 |
SQL – ALTER、DROP、RENAME、MODIFY
これらのコマンドは、既にデータが含まれているテーブルを変更します。
| Command |
詳細説明 |
ALTER TABLE table_name ADD COLUMN column_name data_type; |
ALTER構文 |
DROP TABLE sample_table; |
DROP TABLE 構文 |
RENAME TABLE current_table_name TO new_table_name; |
RENAMEコマンドの構文 |
ALTER TABLE table1 CHANGE COLUMN t1_names t1name char(250) NOT NULL; |
キーワードを変更する |
ALTER TABLE table1 MODIFY t1name char(50) NOT NULL; |
キーワードの変更 |
ALTER TABLE table1 ADD t4 date NULL AFTER t3; |
AFTERキーワード |
SQL の制限とオフセット
| Command |
詳細説明 |
SELECT {fieldname(s) | *} FROM tableName(s) [WHERE condition] LIMIT N; |
LIMIT キーワード構文 |
SELECT * FROM table1 LIMIT 1, 2; |
LIMITクエリのオフセット: 1行スキップしてから2を返します。 |
SQLサブクエリコマンド
| Command |
詳細説明 |
SELECT t1_name FROM table1 WHERE category_id = (SELECT MIN(t1_id) FROM table2); |
サブクエリ |
SQL JOINS コマンド
参加する 2つのテーブルの列を結合して、1つの結果セットを作成します。
| Command |
詳細説明 |
SELECT * FROM table1 CROSS JOIN table2; |
クロス結合 |
SELECT table1.t1, table1.t2, table2.t1
FROM table1, table2
WHERE table2.id = table1.table2_id; |
INNER JOINは |
SELECT A.t1, B.t2, B.t3
FROM table2 AS A
LEFT JOIN table1 AS B
ON B.table2_id = A.id; |
左結合します |
SELECT A.t1, A.t2, B.t3
FROM table1 AS A
RIGHT JOIN table2 AS B
ON B.id = A.table2_id; |
正しい参加 |
SELECT A.t1, B.t2, B.t3
FROM table2 AS A
LEFT JOIN table1 AS B
USING (table2_id); |
「ON」句と「USING」句 |
SQL UNION コマンド
UNIONは2つのクエリの行を積み重ねるのに対し、JOINはそれらをより多くの列に広げます。
| Command |
詳細説明 |
SELECT column1, column2 FROM table1
UNION
SELECT column1, column2 FROM table2; |
UNION構文。重複する行は削除されます。 |
SELECT column1, column2 FROM table1
UNION ALL
SELECT column1, column2 FROM table2; |
UNION ALLは重複する行を保持します。 |
ビュー内の SQL コマンド
ビュー クエリをテーブルのように再利用できるように、名前を付けて保存する。
| Command |
詳細説明 |
CREATE VIEW view_name AS SELECT statement; |
ビューの構文 |
DROP VIEW general_v_movie_rentals; |
ドロップping ビュー |
SQL インデックスコマンド
インデックスとは、列に対する検索をはるかに高速化するルックアップ構造のことです。
| Command |
詳細説明 |
CREATE INDEX id_index ON table_name(column_name); |
インデックスの基本構文を追加する |
DROP INDEX index_id ON table_name; |
インデックスの削除の基本構文 |
よくあるご質問