仕事でも安心して使えるMysqlの備忘録です。
「データベース名」などの日本語表記の部分を任意のものに変えてください。

コマンドプロンプト、シェルから実行するものは command> と記載してあります。 また、ここで紹介しているオプションパラメータはよく使う一部だけです。詳細はMysqlの公式サイト(4.1)でご確認下さい。 2008/06 

データベース操作

データベース作成

create database データベース名

CREATE DATABASE `データベース名` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

下の文はデフォルトの文字コードを設定する。指定しないとlatain1になる。

データベース削除

drop database データベース名

データベース削除

drop database データベース名

データベースのバックアップ

command> mysqldump データベース名 > 出力ファイル名

データベースのインポート

command> mysql -u ユーザー名 -p データベース名 < バックアップで出力したファイル名

▲ページトップへ

ユーザー操作

データベースへアクセス可能なユーザーの追加

grant 権限 on データベース名.テーブル名 to ユーザー名@ホスト名 INDENTIFIED BY 'パスワード'

grant 権限 on データベース名.テーブル名 to ユーザー名@ホスト名 INDENTIFIED BY 'パスワード'

データベース名とテーブル名はワイルドカード(*)を利用可能。例えば *.* とすると全データベースの全テーブルが操作可能になる。

付与できる権限は下記の通り

all全ての権限を与える。
usage全ての権限を与えない。
createテーブルを作成する権限を与える。
alterテーブルを変更する権限を与える。
dropテーブルを削除する権限を与える。
indexインデックスを作成/削除する権限を与える。
insertレコードを追加する権限を与える。
selectレコードを参照する権限を与える。
updateレコードを更新する権限を与える。
deleteレコードを削除する権限を与える。
select,insert,update,delete のように,(カンマ)で区切ることで、複数指定可能

ホスト名はワイルドカード(%)が利用可能。例えば ユーザー名@"%" で、すべてのホストから利用可能。他に ユーザー名@"202.218.35.%" 等。 サーバー内で利用する場合は、ユーザー名@localhost

ユーザーの削除

DELETE FROM mysql.user WHERE user='ユーザ名' and host='ホスト名'

FLUSH PRIVILEGES

上記2文を実行することで、削除可能。2行目は反映させるために必要。Mysqlの再起動でも可。

ユーザーの確認

command> mysqlaccess localhost ユーザ名 データベース名

select * from mysql.user WHERE User='ユーザ名'

コマンドプロンプトで上のmysqlaccessを実行するか、mysqlにログインして下のselect文を実行。

▲ページトップへ

table操作

テーブルの追加

create table テーブル名 ( 項目 ) オプション;

下記に例を示す。

create table test (
	sys_id integer unsigned NOT NULL auto_increment,
	fk_category_id integer unsigned,
	chr_name varchar(100),
	int_order integer,
	is_display boolean,
	fk_staff_id integer unsigned,
	chr_staffname varchar(100),
	datm_last datetime,
	PRIMARY KEY  (sys_id),
	FOREIGN KEY (fk_category_id) REFERENCES category(sys_id)
	 ON DELETE CASCADE ON UPDATE CASCADE,
	FOREIGN KEY (fk_staff_id) REFERENCES staff(sys_id)
	 ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;

テーブルの削除

drop table テーブル名;

項目の追加

alter table テーブル名 add 項目 オプション;

下記に例を示す。

alter table test add int_test integer after int_order;

テーブルの参照

show create table テーブル名;

下記に結果を示す。

+-------+-----------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
------------------------------------------------------------------------+
| Table | Create Table


                                                                        |
+-------+-----------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
------------------------------------------------------------------------+
| test | CREATE TABLE `test` (
  `sys_id` int(10) unsigned NOT NULL auto_increment,
  `chr_login` varchar(32) default NULL,
  `chr_password` varchar(32) default NULL,
  `chr_name` varchar(100) default NULL,
  `is_display` tinyint(1) default NULL,
  PRIMARY KEY  (`sys_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-----------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
------------------------------------------------------------------------+

▲ページトップへ

select文

レコードの取得

select文の例示

忘れやすい構文を実際の使用例で表示します。

IN句

select A.* from staff S, accept A where A.sys_id = S.fk_accept_id AND S.sys_id IN (1,2,3)

staffのID 1,2,3と一致するacceptを抽出する。

▲ページトップへ

insert文

▲ページトップへ

update文

▲ページトップへ

delete文

▲ページトップへ

その他

文字コード

クライアントでの表示用文字コードの設定

set names 文字コード

文字コードには、sjis ujis utf8があります。windowsのコマンドプロンプトならset names sjis、linuxのクライアントならset names ujisを実行しておくことで、結果出力時の日本語が文字化けしないようになります。

▲ページトップへ