MySQL

MySQLのUNIONでカラム名が統一される挙動のメモ

MySQL version 5.5.29 以下のような形式は似ているが、カラム名が違うテーブルを2つ以上用意する。 [sql] CREATE TABLE hoge_history ( id int unsigned NOT NULL, hoge_id int unsigned NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB; CREATE TABLE fuga_his…

MySQLを再起動したときのエラー

MySQLが死んでたので再起動しようとしたら、起動時にエラーになった。 [bash] [root@tnnsst35 ~]# /etc/rc.d/init.d/mysqld start MySQL Daemon failed to start. mysqld を起動中: [失敗] [/bash] なんだよーと思いつつ、とりあえずエラーログを確認する。 …

MySQLのSHOW TABLE STATUS

[sql] SHOW TABLE STATUS; [/sql] テーブルに関する情報がみれる。 LIKEでテーブル名を指定できる。 [sql] SHOW TABLE STATUS LIKE 'users'; [/sql] http://dev.mysql.com/doc/refman/4.1/ja/show-table-status.html

MySQLの CREATE TABLE ... LIKE ...

<div class="section"> 同じカラムで別テーブルをつくるときには CREATE TABLE to_table LIKE from_table; が便利。 ただし、データはコピーされないことに注意。 CREATE TABLE hoge_0 ( id int(10) unsigned NOT NULL auto_increment, PRIMARY KEY (id) ); CREATE TABLE hoge_1 L</div>…

MySQLでサブクエリ

<div class="section"> 動かないSQL DELETE FROM hoge WHERE id NOT IN (SELECT id FROM hoge); 動くSQL DELETE FROM hoge WHERE id NOT IN (SELECT id FROM (SELECT id FROM hoge) a); なにやらテンポラリテーブルを挟まないと動いてくれない模様。 そういや昔なんかでみたなー </div>…

MySQLでRENAME TABLE

<div class="section"> RENAME TABLE テーブル名を変更する。 RENAME TABLE 変更前のテーブル名 TO 変更後のテーブル名 普段使わないからすっかり忘れてた。 ユーザさんに公開してる環境で、必要ないテーブルをDROP TABLEすることになった。 いきなりDROP TABLEすると何か予期せぬ</div>…

MySQLでCREATE TABLE

<div class="section"> CREATE TABLEするときに、ASを使えることをはじめて知った。 CREATE TABLE user_using_accessories_0310 AS SELECT * FROM user_using_accessories; user_using_accessoriesテーブルの中身がuser_using_accessories_0310テーブルにそのままコピーされるみた</div>…

MySQLのDUPLICATE

<div class="section"> 例えばユーザーのプロフィール情報を保存しておくuser_profilesテーブルに対して、 ・新規登録ならばINSERT ・プロフィール更新ならばUPDATE するとしよう。 user_profiles id name intro 1 hoge こんにちは ①登録したいユーザーのデータがuser_profilesに</div>…

MySQLでTRUNCATE

<div class="section"> テーブルの中を空にする方法。 DELETE文を使う DELETE FROM テーブル名; TRUNCATE文を使う TRUNCATE TABLE テーブル名 DELETEは行を1行ずつ削除しているのに対して、 TRUNCATEはテーブルをDROPして、再作成しているらしいです。 行が多くなるとDELETEではア</div>…

MySQLでバルクインサート

<div class="section"> ひとつのINSERT文で複数のデータを一気にいれる方法。 INSERT INTO テーブル名 (num, created, updated) VALUE (1, NOW(), NOW()), (2, NOW(), NOW()), (3, NOW(), NOW()), ・・・ (10, NOW(), NOW()); データのセットをカンマ区切りで指定する。 機能自体</div>…

MySQLで日別集計

<div class="section"> 日別でデータが何件あるか?とか出す場面が最近よくある。 そんなときのSQL。 CREATE TABLE `histories` ( `id` int(10) NOT NULL AUTO_INCREMENT, `user_id` int(10) NOT NULL, `created` datetime NOT NULL, `updated` datetime NOT NULL, PRIMARY KEY (`</div>…