MySQLの基礎コマンドをまとめてみた

すぐ忘れるからまとめてみた。
 

データベース

データベース作成

データベース「testdb」を作成。

CREATE DATABASE testdb;

 

データベース削除

データベース「testdb」を削除。

DROP DATABASE testdb;

 

データベース一覧
SHOW DATABASES;

 

データベースの作成情報
SHOW CREATE DATABASE testdb;

 

ユーザ・権限

ユーザ作成

何の権限も持たないユーザ「testuser」作成。

CREATE USER testuser;

 
パスワードも一緒に設定。

CREATE USER testuser IDENTIFIED BY 'password';

 

ユーザ作成・権限追加

全ての権限を持つユーザ「testuser」を作成。

GRANT ALL PRIVILEGES ON *.* TO testuser@localhost;

 
データベース「testdb」に対して全ての権限を持つユーザ「testuser」を作成。

GRANT ALL PRIVILEGES ON testdb.* TO testuser@localhost;

 
データベース「testdb」に対してSELECTをする権限を持つユーザ「testuser」を作成。

GRANT SELECT ON testdb.* TO testuser@localhost;

 
何の権限も持たないユーザ「testuser」を作成。

GRANT USAGE ON *.* TO testuser@localhost;

 
パスワードも一緒に設定。

GRANT ALL PRIVILEGES ON *.* TO testuser@localhost IDENTIFIED BY 'password';

 

パスワード設定

パスワードを「password」に設定する。

SET PASSWORD FOR testuser@localhost=PASSWORD('password');

 

ユーザ削除

ユーザ「testuser」を削除。

DELETE FROM mysql.user WHERE user='testuser' AND host='localhost';

 
ホストが「localhost」のユーザを削除。

DELETE FROM mysql.user WHERE host='localhost';

 

ユーザの権限削除
REVOKE ALL PRIVILEGES ON *.* FROM testuser@localhost;

 

ユーザ確認
SELECT user, host, password FROM mysql.user;

 

ユーザの権限確認
SHOW GRANTS FOR testuser@localhost;

 

テーブル

テーブル作成
CREATE TABLE testtable (
    id serial,
    data varchar(255)
);

 

ストレージエンジンを指定してテーブル作成
CREATE TABLE testtable (
    id SERIAL,
    data VARCHAR(255)
) ENGINE=InnoDB;

 

テーブル削除
DROP TABLE testtable;

 
テーブルが存在すれば削除。

DROP TABLE IF EXISTS testtable;

 

テーブル一覧
SHOW TABLES;

 

テーブルの作成情報
SHOW CREATE TABLE testtable;

 

カラム

カラム確認
DESC testtable;

 

カラム追加
ALTER TABLE testtable ADD newcolumn INTEGER;

 
追加場所を指定。

ALTER TABLE testtable ADD newcolumn INTEGER AFTER id;

 
先頭に追加。

ALTER TABLE testtable ADD newcolumn INTEGER FIRST;

 

カラム削除
ALTER TABLE testtable DROP newcolumn;

 

NotNull制約追加
ALTER TABLE testtable MODIFY newcolumn INTEGER NOT NULL;

 

NotNull制約削除
ALTER TABLE testtable MODIFY newcolumn INTEGER;

 

Default追加
ALTER TABLE testtable ALTER COLUMN newcolumn SET DEFAULT 0;

 

Default削除
ALTER TABLE testtable ALTER COLUMN newcolumn DROP DEFAULT;

 

インデックス

デフォルトで作られるインデックスは、インデックス名とカラム名が一緒になってるみたいだから、それに合わせとく。
 

インデックス確認
SHOW INDEX FROM testtable;

 

インデックス作成

CREATE INDEX インデックス名 ON テーブル名 (カラム名);

CREATE INDEX newcolumn ON testtable (newcolumn);

 
ALTER TABLE テーブル名 ADD INDEX インデックス名 (カラム名);

ALTER TABLE testtable ADD INDEX newcolumn (newcolumn);

 

インデックス削除

DROP INDEX インデックス名 ON テーブル名;

DROP INDEX newcolumn ON testtable;

 
ALTER TABLE テーブル名 DROP INDEX インデックス名;

ALTER TABLE testtable DROP INDEX newcolumn;

 

確認環境

# cat /etc/redhat-release 
CentOS release 5.4 (Final)

# mysql --version
mysql  Ver 14.12 Distrib 5.0.77, for redhat-linux-gnu (i686) using readline 5.1

# rpm -aq | grep ^mysql
mysql-5.0.77-4.el5_4.2
mysql-server-5.0.77-4.el5_4.2