MySQLの小技メモ
- 2007年05月17日
- category:DB/SQL
- Comment(0)
- Trackback(0)
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`)
)
赤字で示した部分がユニークになる条件を指定している部分です。nameとemailが両方重複しているデータが登録できなくなります。
select * from test_table;
+----+------+------------------+--------------+
| id | name | email | tel |
+----+------+------------------+--------------+
| 1 | hoka | hoka@example.com | 01-2345-6789 |
+----+------+------------------+--------------+
例えば上記のように入力されていたら、以下のようなSQLはエラーになるわけです。
INSERT INTO test_table (name,email,tel) VALUES("hoka","hoka@example.com","12-3456-7890");
下記のようにどちらか一方が異なるデータなら大丈夫です。
INSERT INTO test_table (name,email,tel) VALUES("hokamura“,”hoka@example.com”,”12-3456-7890″);
INSERT INTO test_table (name,email,tel) VALUES(”hoka”,”hokamura@example.com“,”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
参考:phpspot::mysqldumpでバックアップ&復元
order by rand() :: ランダムにレコードを取り出す
下記のSQLでランダムにソートしたデータを抽出できます。
SELECT * FROM table ORDER BY RAND()
その中から一つだけ取り出すにはlimitをつければいいだけです。
select id from entry order by rand() limit1;
ただ、データ量がたくさんあるテーブルだと遅くなるようです。
参考:Hatena::Diary::naoya::MySQL の order by rand()
CREATE … SELECT :: 既存のテーブルをデータごと別名でコピーする
テーブルをカラムのデータごとコピーするには下記SQLを実行します。
CREATE TABLE new_table SELECT * FROM original_table;
マニュアルに下記のようあります。
インデックスは新しいテーブルに持ち越されません。また、一部のカラム型の変換が行われる場合があります。たとえば、AUTO_INCREMENT 属性は維持されず、VARCHAR 型のカラムは CHAR 型のカラムになることがあります。
インデックスは持ち越されないようです。それはわかりました。データ型変わってしまうこともある、とありますがどんな条件で変わるかはちょっとわかりませんでした。
参考:MySQL 4.1 リファレンスマニュアル::6.5.3. CREATE TABLE 構文
おまけ。MySQLの文字化けを直す
MySQLの文字化けで悩んでる人は結構いると思いますが(僕だけかもしれないがorz)そんなMySQL文字化け問題を解決できそうなページを見つけました。こちらは元記事よりうまく説明できる自信が無いのでリンクだけ貼っておきます。
- Prev Entry
- twitter関連で役立つサイトあれこれ
- Next Entry
- IE6のバグのまとめ
トラックバックURL
http://webtech-walker.com/archive/2007/05/17130450.html/trackback
※トラックバックを受け付けてから表示するまでにしばらく時間がかかる場合があります。
