データベース関連
データベースのフォーマット
・my.iniの #Path to the database root で指定したフォルダに、
データベースが格納される。
※デフォルトでは、C:/Program Files/...ではなく、C:/ProgramData/...になっているので注意
(インストールフォルダと違うフォルダに格納されるので見つけづらい)
・データベースごとにフォルダになっている
※ただし、information_schemaというデータベースは
他のすべてのデータベースに関する情報を保存しており、
フォルダを持っていない
・データベースをdropすると、フォルダも削除される
・フォルダの中のdb.optは、文字コードや照合順序などの
データベースに関するオプションが記述されている
MyISAMのテーブル
・テーブルは、MyISAM型の場合、以下のように保存される
table_name.frm テーブル定義の保存 table_nam.MYD テーブルデータの保存 table_nam.MYI インデックスの保存
で保存されているが、中身は暗号化されているようだ
テーブルを削除すると、これらはすべて削除される
InnoDBのテーブル
・テーブルは、InnoDBの場合は、以下のように保存される
table_name.frm テーブル定義の保存
上記に加えて、データディレクトリ(データベース毎のフォルダではなく、
それらのフォルダの上のフォルダ)に以下のデータが作成される。
ibdata1 テーブルデータやインデックスの保存 ib_logfile0 トランザクションログファイル ib_logfile1 トランザクションログファイル
つまり、InnoDBでは、テーブル毎に作成されるテーブル定義ファイル以外は
InnoDB型のテーブルのデータは共通のファイルを使って管理される。
トランザクションファイルの数は上記では2つで、ローテーションして使用される。
テーブルを削除すると、table_name.frmは削除されるが、それ以外の、データは残ったままになる。
(InnoDBで共有して使っているため)
データベースの作成
CREATE DATABASE db_name;
※db_nameにコーテーションはいらない
※Windowsの場合、大文字と小文字は区別されない
※データベース名は64バイトまで
既存のデータベースと同名を入れるとエラーになる。
エラーを出さないためには以下のようにする。
CREATE DATABASE IF NOT EXISTS db_name;
※結果に違いは生じないが、show warnings;でキャッチできるようになる
文字セットと照合順序を指定してデータベースを作成する方法
CREATE DATABASE db_name CHARACTER SET charset_name COLLATE collation_name;
※文字セットと照合順序はどちらか片方のみ指定してもOK
データベースの一覧取得
SHOW DATABASES;
※
SHOW CREATE DATABASE db_name;
とすると、既存のdb_nameの文字コードを調べることができる
(既存のデータベースになければエラーとなる)
※
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA;
とすると、各データベースの情報を得ることができる
#「DB名.テーブル名」は、useでDB名を指定していないときにテーブルにアクセスするときの記法
データベースへの接続
USE db_name;
※接続というのは、DB名を省略したときに使われる
デフォルトのDB名を設定するということ
※
mysql -u root -p db_name
のように起動時にDB名を指定することも可能
※
mysql> select database();
で現在、接続中のDB名を知ることが可能
データベースの削除
DROP DATABASE db_name;
※
DROP DATABASE IF EXISTS db_name;
とすれば、db_nameが存在していなくてもエラーにならない
(show warnings;でキャッチできる)
データベースの属性変更
※属性とは、文字セットと照合順序のこと
ALTER DATABASE db_name CHARACTER SET charset_name COLLATE collation_name;
※ただし、挿入済みのデータに関しての文字セットに関しては変更されない(あくまで変更後に挿入したデータが対象)
※文字セットと照合順序はどちらか片方のみ指定してもOK