MySQLにログイン
mysql -u <ユーザー名> -p端末からログインする際にはユーザー名とパスワードを指定してログインします。
Enter password: <パスワード>
データベースの操作
データベースの一覧表示
show databases;すべてのデータベースが表示されますが、自身の権限が及んでいる範囲のデータベース名が表示されます。rootの場合はすべてのデータベース表示となります。
データベースの作成
create database <データベース名>※文字コードを指定してデータベースを作成する場合は、
create database <データベース名> default character set <文字コード>;
- utf8: UTF-8を指定するとき。
- sjis: Shift JIS を指定するとき。
- ujis: EUC JP を指定するとき。
※データベースの有効な文字コードを調べるには、
show variables like 'character_set%';
※文字化けについては別項参照
データベースの削除
drop database <データベース名>やり直しが効かないので要注意!
データベースの選択
use <データベース名>;テーブルの操作を行う際はデータベースを選択しなくてはなりません。
データベースの文字コードを確認する
show create database <データベース名>;デフォルトの文字コードが表示されるので文字コードの確認ができます。
+----------------+-------------------------------------------------------------------------+
| Database | Create Database |
+----------------+-------------------------------------------------------------------------+
| <データベース名> | CREATE DATABASE `<データベース名>` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------------+-------------------------------------------------------------------------+
1 row in set (0.00 sec)
テーブルの表示
show tables;選択したデータベース内にあるすべてのテーブル名を表示します。他のデータベース内のテーブルは表示されません。
テーブルの作成
create table <テーブル名> (<カラム名1> [データ型],<カラム名2> [データ型], ...);(例)create table user_information ( family_name VARCHAR(32), first_name VARCHAR(32));
テーブルの作成時には少なくとも一つのカラムとそのデータ型を指定します。そうじゃないとテーブルが作成できません。
テーブル名の変更
alter table <旧テーブル名> rename <新テーブル名>;
カラム(Field)の表示(属性の表示)
desc <テーブル名>;カラム(Field)のデータ型やkeyなどの属性を表示します。データが上手く挿入されない場合などはここで確認します。
カラムのデータ型を変更する
alter table <テーブル名> modify <カラム名> <新しいデータ型>;(例)alter table mytable modify name varchar(128);
既存のデータ型は失われて新しく設定したデータ型になります。
各カラムにデータの挿入
insert into <テーブル名> set <カラム名>='<文字列>', <カラム名>=<数値>,...;この時文字コードを設定していないと挿入したデータが日本語の場合文字化けします。
テーブル内のすべてのカラムとデータを表示する
select * from <テーブル名>;テーブル内のすべてのカラムのデータを表示するにはselectに*(アスタリスク)を指定してすべてのカラムを指定します。アスタリスクの代わりにカラム名を指定すると指定したカラムのデータのみを表示します。
テーブルの文字コードを変更する
alter table <テーブル名> charset=utf8;
MySQLを触っていてINSERTがうまく行かなくてデバックしてみると「Duplicate entry '<何らかの文字列>' for key 'PRIMARY'」なるエラーが出ることがあります。これは主キー(PRIMARY key)に対して複数の同文字列をインサートしようとしているからです。
MySQLではレコードの値をユニークに保つために主キーなるものを設定できます。これがないと同一のレコードが複数登録されてしまってどちらがオリジナルか(正しいか)を区別できなくなってしまいます。そのため通常はオートインクリメントなどで設定した先頭のカラムなんかに主キーを設定し(オートインクリメントなので)新しいレコードが登録されるたびに1が加算されてゆくオリジナルの番号を振ってくれるのでそのレコードのユニーク性が保たれるというわけです。
テーブルの設定ではどこか1つのカラムに主キーを設定するのがいわゆる常識です。しかしごった煮のなんでもかんでも登録して保存しておくというような場合には特に主キーは必要ないというわけです。
INDERTする際にはこの主キーがダブって実行されると何もしてくれません。代わりに「Duplicate entry '<何らかの文字列>' for key 'PRIMARY'」というエラーが返ってきます。
$sql = "INSERT INTO <table> set ID='xxxx'";こんな風にしてデバックするといいみたいです。
$result = mysql_query($sql) or die (mysql_error());



