MySQLよく見る一般的なコマンド集

MySQLの一般的によく見る(よく使われるであろう)コマンドの一覧です

コマンド一覧

データベース作成

CREATE DATABASE [IF NOT EXISTS] [データベース名] [オプション];
例)
CREATE DATABASE hogedb DEFAULT CHARACTER SET utf8mb4;

IF NOT EXISTSを指定して作成する場合は、既に同じ名前のデータベースがあった場合は作成しません。

例)
CREATE DATABASE IF NOT EXISTS hogedb DEFAULT CHARACTER SET utf8mb4;

もしhogedbが既にあった場合は作成せず警告を表示します。

オプションに照合順序を指定するのもよく見かけます。

照合順序はCollationと呼ばれています。

例)
CREATE DATABASE hogedb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

照合順序があってないデータベースをJOINしようとするとエラーとなります。

記述方法は以下ですが、指定できる照合順序は決まっています。

[文字コード]_[言語]_[ci, cs, bin]

文字コード
  utf8、utf16、latin1などの文字コード
言語
  spanish、swedishなどの言語名
  unicode、generalは複数言語ということ
_ci, _cs, _bin
  _ci:大文字と小文字が区別されない
  _cs:大文字と小文字が区別される
  _bin:バイナリ

utf8とutf8mb4の違い
MySQLのutf8は文字の中でも4バイトを使って変換する文字は扱えません。
絵文字などで4バイト使っている文字がいくつかあります。
それを補完するためにutf8mb4という文字コードを追加して扱えるようにしています。
つまりutf8mb4を使えばutf8の全ての文字が扱えます。

データベースに設定済みの文字コードを変更

ALTER DATABASE [データベース名] CHARACTER SET utf8

利用するデータベースを指定する

USE [データベース名];

目的のデータベースを操作するときは必ずこのコマンドを実行

データベース一覧

SHOW DATABASES;

データベース作成時の情報

SHOW CREATE DATABASE [データベース名];

データベース削除

DROP DATABASE [データベース名];

テーブル作成

CREATE TABLE [テーブル名] (
  [フィールド名] [型] [制約]
) DEFAULT CHARACTER SET [文字コード];

例)
CREATE TABLE users (
  id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
  name VARCHAR(255) NOT NULL,
  password VARCHAR(255) NOT NULL
) DEFAULT CHARACTER SET utf8mb4;

テーブル一覧

SHOW TABLES;

テーブルに設定済みの文字コードを変更

ALTER TABLE [テーブル名] CHARACTER SET utf8

テーブルのフィールド一覧

DESC [テーブル名];

テーブル作成時の情報

SHOW CREATE TABLE [テーブル名];

テーブル削除

DROP TABLE [テーブル名];

列を追加する

ALTER TABLE [テーブル名] ADD [列名] [型] [制約];

列名を変更する

ALTER TABLE [テーブル名] RENAME COLUMN [列名] TO [変更名];

列を削除する

ALTER TABLE [テーブル名] DROP [列名];

PRIMARY KEYの追加

ALTER TABLE [テーブル名] ADD PRIMARY KEY ([列名]);

例)
ALTER TABLE footable ADD PRIMARY KEY (userid); 

PEIMARY KEYは複数のフィールドに追加できます。

例)
ALTER TABLE footable ADD PRIMARY KEY (userid, mail);

ただし既に設定されているときに他のフィールドに追加しようとしたときや、テーブル作成時に複数指定するとエラーとなります。

PRIMARY KEYの削除

ALTER TABLE [テーブル名] DROP PRIMARY KEY;

列の型を変更する

ALTER TABLE [テーブル名] MODIFY [列名] [型];

AUTO_INCREMENT属性を設定

ALTER TABLE [テーブル名] MODIFY [列名] INT AUTO_INCREMENT;

KEYが設定されていないフィールドではエラーとなります。

テーブルに存在するデータを取得する

SELECT [列名],... FROM [テーブル名]
SELECT [列名],... FROM [テーブル名] WHERE
SELECT * FROM [テーブル名]

テーブルにデータを入力

INSERT INTO [テーブル名] (列名, ...) VALUES (値, ...)

デーブルに存在するデータを書き換える

UPDATE [テーブル名] SET [列名]=[値], ...
UPDATE [テーブル名] SET [列名]=[値], ... WHERE

テーブルに存在するデータを削除する

DELETE FROM [テーブル名]
DELETE FROM [テーブル名] WHERE

このままこのコマンドを実行するとすべてのデータを削除するので、通常はWHERE句を使って条件付きで削除します。(例:DELETE FROM users WHERE name=’yamada’;)

ユーザー作成

CREATE USER 'user_name'@'host_name' IDENTIFIED BY 'user_password';

例)
CREATE USER 'foouser'@'localhost' IDENTIFIED BY 'password';

ユーザーにデータベースの操作権限を付与

GRANT ALL PRIVILEGES ON [データベース名].[テーブル名] TO 'user_name'@'host_name';

例)
GRANT ALL PRIVILEGES ON hogedb.* TO 'foouser'@'localhost';

もしGRANT文で指定したユーザーが存在しないときは、そのユーザーを作成します。

なので、このコマンドを使ってユーザーを作成することもできます。

例)
GRANT ALL PRIVILEGES ON hogedb.* TO 'foouser'@'localhost' IDENTIFIED BY 'user_password';

これで、パスワードを設定してユーザーを作成できます。

そして、ユーザー作成と権限の付与は以下のコマンドを実行しないと反映されません。

コマンドの反映

FLUSH PRIVILEGES;

FLUSH文は必ず実行してください。

ユーザー一覧

SELECT USER FROM mysql.user;

ホスト名も同時に表示することができます。

SELECT USER, HOST FROM mysql.user;

ユーザー削除

DROP USER 'user_name'@'host_name';

ユーザー削除は複数ユーザーを指定することもできます。

ユーザー名変更

RENAME USER 'user_name'@'host_name' TO 'new_name'@'new_host';

登録しているユーザーのパスワード変更

SET PASSWORD FOR 'user_name'@'host_name' = PASSWORD('new_password')

MySQLバージョン確認

SELECT version();

現在の状態を確認

STATUS