仕事でも安心して使えるMysqlの備忘録です。
「データベース名」などの日本語表記の部分を任意のものに変えてください。
コマンドプロンプト、シェルから実行するものは command> と記載してあります。 また、ここで紹介しているオプションパラメータはよく使う一部だけです。詳細はMysqlの公式サイト(4.1)でご確認下さい。 2008/06
「データベース名」などの日本語表記の部分を任意のものに変えてください。
コマンドプロンプト、シェルから実行するものは 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を実行しておくことで、結果出力時の日本語が文字化けしないようになります。