もくじ
- MariaDB基本操作
- データベースの基本操作
- テーブルの基本操作
- 主なフィールドの型
- 主なフィールドの属性
- 論理演算子
- 比較演算子
- テーブルを作成するSQLコマンド
- テーブル一覧を表示するSQLコマンド
- フィールドの詳細を表示するSQLコマンド
- レコードを追加するSQLコマンド
- 指定したフィールドのデータを取得するSQLコマンド
- 全てのフィールドのデータを取得するSQLコマンド
- 指定したデータを変更するSQLコマンド
- 既存のテーブルにフィールドを追加するSQLコマンド
- フィールドのデータ型を変更するSQLコマンド
- フィールドのデータ型を強制的に変更するSQLコマンド
- フィールド名とデータ型を変更するSQLコマンド
- フィールドを削除するSQLコマンド
- テーブル名を変更するSQLコマンド
- 指定したデータを削除するSQLコマンド
- テーブルを削除するSQLコマンド
- テーブルの結合
- 集計関数
- ユーザの設定
- データベースのバックアップ
- データの検索
- データの並び替え
- その他
よく使用するSQL構文をコピペで使用できるようまとめました。
MariaDBのパスワード設定についてはこちらの記事を参照してください。
MariaDBにSQLコマンドを貼り付ける場合は、「右クリック」 ⇒ 「貼り付け」で貼り付けることができます。
MariaDB基本操作
MariaDBのパスワード設定についてはこちらの記事を参照してください。
MariaDB(クライアントプログラム)を起動(ログイン)するSQLコマンド
mysql -u ユーザ名 -p
MariaDB(クライアントプログラム)を終了するSQLコマンド
quit
exit
データベースの基本操作
データベース一覧を表示するSQLコマンド
SHOW DATABASES;
データベースを作成するSQLコマンド
CREATE DATABASE データベース名;
使用するデータベースを選択するSQLコマンド
USE データベース名
現在使用しているデータベースを確認するSQLコマンド
SELECT database();
データベースを削除するSQLコマンド
DROP DATABASE データベース名;
テーブルの基本操作
主なフィールドの型
データ型 | 説明 |
---|---|
TYNYINT | 1バイト整数型(-128 ~ 127) |
SMALLINT | 2バイト整数型(-32768 ~ 32767) |
INT | 4バイト整数型(-2147483648 ~ 2147483647)) |
BIGINT | 8バイト整数型(-9223372036854775808 ~ 9223372036854775807) |
FLOAT | 単精度の浮動小数点型(3.402823466E+38 ~ 3.402823466E+38) |
DOUBLE | 倍精度の浮動小数点型(-1.7976931348623157E+308 ~ 1.7976931348623157E+308) |
CHAR | 固定長文字型(0~255文字) |
VARCHAR | 可変長文字型(0~65535バイト) |
TEXT | 可変長文字型(0~65535バイト) |
DATE | 日付型(YYYY-MM-DD) |
DATETIME | 日付時刻型(YYYY-MM-DD HH:MM:SS) |
TIMESTAMP | 日付時刻型(YYYY-MM-DD HH:MM:SS) |
BLOB | バイナリデータ |
主なフィールドの属性
属性 | 説明 |
---|---|
PRIMARY KEY(主キー) | ユニーク値で値が必ず入るようにします。 |
AUTO_INCREMENT | レコードを追加するごとに自動で昇順の連番が入ります。 |
NOT NULL | 値を必ず入れる必要があります。 |
UNIQUE | レコード内で同じ値を入れることはできません。 |
DEFAULT | 値が入ってない場合、指定した値が入ります。 |
ON UPDATE | データの更新が行われた時に指定した値が入ります。 |
論理演算子
論理演算子 | 説明 |
---|---|
AND | 条件を全て満たす |
OR | 条件のいずれかを満たす |
NOT | 条件を反転させる |
比較演算子
比較演算子 | 説明 |
---|---|
= | 等しい |
> | ~より大きい |
>= | 以上 |
< | ~より小さい |
<= | 以下 |
<> | 等しくない |
!= | 等しくない |
Between~And~ | ~から~まで |
IN(値1,値2,値3) | いずれかの値を含む |
IS NULL | NULLである |
IS NOT NULL | NULLでない |
テーブルを作成するSQLコマンド
最後の行の「,」は、エラーが発生するため付ける必要がありません。
CREATE TABLE テーブル名 (
フィールド名1 フィールド型1 属性1,
フィールド名2 フィールド型2 属性2,
フィールド名X フィールド型X 属性X
);
テーブル一覧を表示するSQLコマンド
SHOW TABLES;
フィールドの詳細を表示するSQLコマンド
SHOW COLUMNS FROM テーブル名;
DESC テーブル名;
レコードを追加するSQLコマンド
INSERT INTO テーブル名
(フィールド名1, フィールド名2, フィールド名X) VALUES
(値1, 値2, 値X);
INSERT INTO テーブル名
SET フィールド名1=値1, フィールド名2=値2, フィールド名X=値X;
指定したフィールドのデータを取得するSQLコマンド
SELECT フィールド名1, フィールド名2, フィールド名X FROM テーブル名 WHERE 条件文;
全てのフィールドのデータを取得するSQLコマンド
SELECT * FROM テーブル名;
指定したデータを変更するSQLコマンド
「WHERE」を指定しないと、指定したフィールドの全ての値が更新されるので注意してください。
UPDATE テーブル名
SET フィールド名1=値1, フィールド名2=値2, フィールド名X=値X
WHERE 条件文;
既存のテーブルにフィールドを追加するSQLコマンド
ALTER TABLE テーブル名 ADD フィールド名 データ型 DEFAULT 値;
フィールドのデータ型を変更するSQLコマンド
種類が異なるデータ型(文字列型から整数型)でも変更可能な場合もあります。
エラーが発生する場合は、「IGNORE」を使用することで強制的にデータ型を変更することができます。
ALTER TABLE テーブル名 MODIFY フィールド名 データ型;
フィールドのデータ型を強制的に変更するSQLコマンド
新しいデータ型のフィールドに格納出来ない場合は、「Warning:」としてカウントされます。
ALTER IGNORE TABLE テーブル名 MODIFY フィールド名 データ型;
フィールド名とデータ型を変更するSQLコマンド
フィールド名だけを変更する場合は、「新しいデータ型」の部分で既存のデータ型を指定してください。
ALTER TABLE テーブル名 CHANGE 旧フィールド名 新しいフィールド名 新しいデータ型;
フィールドを削除するSQLコマンド
ALTER TABLE テーブル名 DROP フィールド名;
テーブル名を変更するSQLコマンド
ALTER TABLE 旧テーブル名 RENAME AS 新しいテーブル名;
指定したデータを削除するSQLコマンド
「WHERE」を指定しないと、テーブルのデータがすべて削除されるので注意してください。
DELETE FROM テーブル名
WHERE 条件文;
テーブルを削除するSQLコマンド
DROP TABLE テーブル名;
テーブルの結合
内部結合と外部結合について
内部結合を使用した場合、照合できるレコードだけ表示されます。
照合できないレコードを表示させたい場合は、外部結合を使用します。
内部結合SQLコマンド
「表示したいフィールド名1, 表示したいフィールド名X」を「*」にすると全てのフィールドを表示できます。
SELECT テーブル名.表示したいフィールド名1, テーブル名.表示したいフィールド名2 FROM テーブル名1 JOIN テーブル名2
ON テーブル名1.照合用フィールド名=テーブル名2.照合用フィールド名;
SELECT * FROM テーブル名1 JOIN テーブル名2
ON テーブル名1.照合用フィールド名=テーブル名2.照合用フィールド名;
3つ以上のテーブルの内部結合SQLコマンド
FROMの後に結合したいテーブル名を「,」の後に指定することで複数のテーブルを結合することができます。
「表示したいフィールド名1, 表示したいフィールド名X」を「*」にすると全てのフィールドを表示できます。
SELECT テーブル名.表示したいフィールド名1, テーブル名.表示したいフィールド名2, テーブル名.表示したいフィールド名X FROM テーブル名1, テーブル名2, テーブル名X
WHERE テーブル名1.照合用フィールド名=テーブル名2.照合用フィールド名 AND テーブル名1.照合用フィールド名=テーブル名X.照合用フィールド名;
SELECT * FROM テーブル名1, テーブル名2, テーブル名X
WHERE テーブル名1.照合用フィールド名=テーブル名2.照合用フィールド名 AND テーブル名1.照合用フィールド名=テーブル名X.照合用フィールド名;
左外部結合SQLコマンド
「表示したいフィールド名1, 表示したいフィールド名X」を「*」にすると全てのフィールドを表示できます。
SELECT テーブル名.表示したいフィールド名1, テーブル名.表示したいフィールド名2 FROM テーブル名1 RIGHT JOIN テーブル名2
ON テーブル名1.照合用フィールド名=テーブル名2.照合用フィールド名;
SELECT * FROM テーブル名1 RIGHT JOIN テーブル名2
ON テーブル名1.照合用フィールド名=テーブル名2.照合用フィールド名;
右外部結合SQLコマンド
「表示したいフィールド名1, 表示したいフィールド名X」を「*」にすると全てのフィールドを表示できます。
SELECT テーブル名.表示したいフィールド名1, テーブル名.表示したいフィールド名2 FROM テーブル名1 LEFT JOIN テーブル名2
ON テーブル名1.照合用フィールド名=テーブル名2.照合用フィールド名;
SELECT * FROM テーブル名1 LEFT JOIN テーブル名2
ON テーブル名1.照合用フィールド名=テーブル名2.照合用フィールド名;
集計関数
合計値を取得するSQLコマンド
SELECT SUM(フィールド名) FROM テーブル名;
平均値を取得するSQLコマンド
SELECT AVG(フィールド名) FROM テーブル名;
最大値を取得するSQLコマンド
SELECT MAX(フィールド名) FROM テーブル名;
最小値を取得するSQLコマンド
SELECT MIN(フィールド名) FROM テーブル名;
データ件数を取得するSQLコマンド
SELECT COUNT(フィールド名) FROM テーブル名;
集計関数で取得したフィールドに指定したフィールド名を付けるSQLコマンド
SELECT 集計関数 AS 指定のフィールド名 FROM テーブル名;
ユーザの設定
主なユーザ権限
設定値 | 権限 |
---|---|
ALL PRIVILEGES | 全ての権限 |
CLEATE | データベースの作成・テーブルの作成 |
DROP | データベースの削除・テーブルの削除 |
SELECT | テーブルの参照 |
INSERT | テーブルのレコード追加 |
UPDATE | テーブルのレコード変更 |
DELETE | テーブルのレコード削除 |
CLEATE USER | ユーザ作成 |
新規ユーザ(権限も含む)を追加するSQLコマンド
「.(ドット)」と「*」の間に半角スペースを入れないように注意してください。
GRANT 権限1, 権限2, 権限X
ON データベース名.*
TO ユーザ名@ホスト名 IDENTIFIED BY 'パスワード';
ユーザ情報を表示するSQLコマンド
「mysql.user」の後に「¥G」を付けることで、フィールドの並びを縦にすることができます。
SELECT * FROM mysql.user;
SELECT * FROM mysql.user ¥G;
ユーザ権限を表示するSQLコマンド
SHOW GRANTS FOR ユーザ名@ホスト名;
ユーザを削除するSQLコマンド
DROP USER ユーザ名@ホスト名;
データベースのバックアップ
データベースの情報をコマンドプロンプトに表示するSQLコマンド
コマンドプロンプトでログインしてない状態で行ってください。
passwordの入力が求められるので入力してください。
日本語が文字化けしている場合は、「日本語が文字化けしている場合の対策」のコードを実行することで解決する場合があります。
mysqldump -u ユーザ名 -p データベース名
日本語が文字化けしている場合の対策
mysqldump --default-character-set=binary -u ユーザ名 -p データベース名
バックアップファイルを出力するSQLコマンド
コマンドプロンプトでログインしてない状態で行ってください。
ファイルの出力先は、コマンドプロンプトが参照中のフォルダです。
passwordの入力が求められるので入力してください。
mysqldump --default-character-set=binary -u ユーザ名 -p データベース名 > 任意のファイル名.dmp
データベースをダンプファイルから復元するSQLコマンド
コマンドプロンプトでログインしてない状態で行ってください。
復元を行う場合、コマンドプロンプトがダンプファイルがあるフォルダを参照している必要があります。
事前にデータベースを作成しておく必要があります。
passwordの入力が求められるので入力してください。
mysql --default-character-set=binary -u ユーザ名 -p データベース名 < ダンプファイル名.dmp
データの検索
検索件数を指定して検索するSQLコマンド
「表示したいフィールド名1, 表示したいフィールド名X」を「*」にすると全てのフィールドを表示できます。
SELECT 表示したいフィールド名1, 表示したいフィールド名X FROM テーブル名 LIMIT 検索件数;
SELECT * FROM テーブル名 LIMIT 検索件数;
開始行と検索件数を指定して検索するSQLコマンド
「表示したいフィールド名1, 表示したいフィールド名X」を「*」にすると全てのフィールドを表示できます。
SELECT 表示したいフィールド名1, 表示したいフィールド名X FROM テーブル名 LIMIT 開始位置,検索件数;
SELECT * FROM テーブル名 LIMIT 開始位置,検索件数;
範囲を指定して検索するSQLコマンド
「表示したいフィールド名1, 表示したいフィールド名X」を「*」にすると全てのフィールドを表示できます。
SELECT 表示したいフィールド名1, 表示したいフィールド名X FROM テーブル名 WHERE フィールド名 BETWEEN 値 AND 値;
SELECT * FROM テーブル名 WHERE フィールド名 BETWEEN 値 AND 値;
MariaDBで使える主な正規表現
正規表現 | 説明 |
---|---|
. | 任意の1文字に一致 |
^ | 前方一致 |
$ | 後方一致 |
[abc] | aまたはbまたはcの1文字に一致 |
[a-z] | aからz(大文字、小文字)のアルファベットのいずれかに一致 |
[^a-z] | aからz以外の文字 |
[0-9] | 0から9の数字に一致 |
? | 直前の文字の0回または1回に一致 |
* | 直前の文字の0回以上の繰り返しに一致 |
+ | 直前の文字の1回以上の繰り返しに一致 |
{n} | 直前の文字のn回に一致 |
{m,n} | 直前の文字のm回以上n回以上に一致 |
() | グループ化を意味する |
(X|Y) | XまたはY |
¥ | 検索条件に特殊記号を含める場合にエスケープ文字として使います |
正規表現を使用した検索SQLコマンド
「表示したいフィールド名1, 表示したいフィールド名X」を「*」にすると全てのフィールドを表示できます。
SELECT 表示したいフィールド名1, 表示したいフィールド名X FROM テーブル名 WHERE フィールド名 REGEXP '正規表現のパターン';
SELECT * FROM テーブル名 WHERE フィールド名 REGEXP '正規表現のパターン';
データの並び替え
昇順に並び替えるSQLコマンド
SELECT * FROM テーブル名 ORDER BY フィールド名;
降順に並び替えるSQLコマンド
SELECT * FROM テーブル名 ORDER BY フィールド名 DESC;
その他
データをグループ化するSQLコマンド
SELECT * FROM テーブル名 GROUP BY フィールド名;
MariaDBでスクリプトファイルを実行するSQLコマンド
コマンドプロンプトに「円記号」「ドット」「半角スペース」と入力して、スクリプトファイルをドラッグ&ドロップすることでファイルパスが自動的に入力されます。
¥. ファイルパスとスクリプトファイル名
【初級者向け】SQL入門におすすめの1冊
もみじ
私もこの本でSQLを学習し、実務でも活かすことができています。
丁寧で分かりやすい解説と実際にSQLを実行しながら学習できるため、初級者でも安心して取り組むことができます。