【mysql】すでにあるカラムにユニークキーやプライマルキーを追加する方法

すでにあるカラムにユニークキーやプライマルキーを追加するには次のSQL文を実行すればいい。

プライマルキーなら、

mysql> ALTER TABLE テーブル名 ADD PRIMARY KEY (カラム名);

ユニークキーなら、
mysql> ALTER TABLE テーブル名 ADD UNIQUE (カラム名);

もし、

ERROR 1170 (42000): BLOB/TEXT column 'text_field' used in key specification without a key length

のようなエラーが出たら、キーの長さを指定する必要があるので、

プライマルキーなら、

mysql> ALTER TABLE テーブル名 ADD PRIMARY KEY (カラム名(255以下のキーの長さ));

ユニークキーなら、
mysql> ALTER TABLE テーブル名 ADD UNIQUE (カラム名(255以下のキーの長さ));

こう記述するとエラーにならないはず。

【PHP】strposで検索文字に配列を使うための自作関数

自作関数名は strpos_array

strposと同じように使える。検索文字が配列であっても、なくても利用できる。

function strpos_array($haystack, $needles) {
if ( is_array($needles) ) {
foreach ($needles as $str) {
if ( is_array($str) ) {
$pos = strpos_array($haystack, $str);
} else {
$pos = strpos($haystack, $str);
}
if ($pos !== FALSE) {
return $pos;
} else {
return FALSE;
}
}
} else {
return strpos($haystack, $needles);
}
}

【mysql】3つのテーブルを結合する時の記述

mysqlで3つのテーブルをリレーションしたいときは次のように書く

SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id INNER JOIN table3 ON table1.id = table3.id;

条件で絞りたいなら最後にWHEREをつける

SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id INNER JOIN table3 ON table1.id = table3.id WHERE ~~;