MySQLの小技メモ
MySQLで忘れがちなコマンドとかメモです。
UNIQUE KEY :: 複数のカラムでユニークになる条件を指定する
CREATE TABLE `test_table` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` text NOT NULL default '',
`email` text NOT NULL default '',
`tel` text NOT NULL default '',
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`,`email`)
)
UNIQUE KEYの部分でユニークになる条件を指定しています。nameとemailが両方重複しているデータが登録できなくなります。
select * from test_table;
+----+------+------------------+--------------+
| id | name | email | tel |
+----+------+------------------+--------------+
| 1 | hoka | [email protected] | 01-2345-6789 |
+----+------+------------------+--------------+
例えば上記のように入力されていたら、以下のようなSQLはエラーになるわけです。
INSERT INTO test_table (name,email,tel) VALUES("hoka","[email protected]","12-3456-7890");
INSERT INTO test_table (name,email,tel) VALUES("hokamura“,”[email protected]”,”12-3456-7890″);
INSERT INTO test_table (name,email,tel) VALUES("hoka","[email protected]","12-3456-7890");
mysqldump :: データベースのバックアップを取る
mysqldumpでデータベースのバックアップを取ることが出来ます。詳細は以下の通りです。
すべてのデータベースのバックアップ
$ mysqldump -u root -x --all-databases > dump.sql
特定のデータベースのみのバックアップ
$ mysqldump -u root データベース名 > dump.sql
mysqldumpのすべてのデータベースのバックアップを復元
$ mysql -u root -p < dump.sql
特定データベースのみの復元
$ mysql -u root データベース名 < dump.sql
order by rand() :: ランダムにレコードを取り出す
下記のSQLでランダムにソートしたデータを抽出できます。
SELECT * FROM table ORDER BY RAND();
その中から一つだけ取り出すにはlimitをつければいいだけです。
SELECT id FROM entry ORDER BY rand() LIMIT 1;
ただ、データ量がたくさんあるテーブルだと遅くなるようです。
MySQL の order by rand() - naoyaのはてなダイアリー
CREATE ... SELECT :: 既存のテーブルをデータごと別名でコピーする
テーブルをカラムのデータごとコピーするには下記SQLを実行します。
CREATE TABLE new_table SELECT * FROM original_table;
マニュアルに下記のようあります。
インデックスは新しいテーブルに持ち越されません。また、一部のカラム型の変換が行われる場合があります。たとえば、AUTO_INCREMENT 属性は維持されず、VARCHAR 型のカラムは CHAR 型のカラムになることがあります。
インデックスは持ち越されないようです。それはわかりました。データ型変わってしまうこともある、とありますがどんな条件で変わるかはちょっとわかりませんでした。
文字化けを直す
MySQLの文字化けで悩んでる人は結構いると思いますが(僕だけかもしれないがorz)そんなMySQL文字化け問題を解決できそうなページを見つけました。こちらは元記事よりうまく説明できる自信が無いのでリンクだけ貼っておきます。
ヽ( ・∀・)ノくまくまー(2006-10-11)::[MySQL] 文字化け問題を本気で直す
- Prev Entry:PHPのユーザーエージェントを変更する方法
- Next Entry:IE6のバグのまとめ