11件中 1-5件目     [ 1 2 3 ]

MySQLではUPDATE文にLIMITを付けることで、あるテーブルから指定した件数のレコードを更新することができる。 これを応用することで、テーブルからランダムに選んだレコードを更新することもできる。


MySQLにはランダムな数値を取り出すRAND関数があり、これを使うことにより、テーブルからランダムにデータを取り出すことができる。


MySQLとPostgreSQLではnullを含んだカラムでソートするときのnullの扱いが違う。 MySQLでnullは、nullでない値よりも小さな値としてソートされ、PostgreSQLでは、nullでない値よりも大きな値としてソートされる。

そのnullの扱いが自分の意図したものと異なる場合や、データベースを変更する場合などに困ったことになることもある。


SQLの基本であるINSERTの説明は多くのサイトで書かれているが、MySQLでは2つの書き方ができる点や、複数行の挿入ができる点、SELECTの結果を挿入できる点などにも触れているサイトは少ない。


AUTO_INCREMENTの値をリセットするには以下のようにALTER TABLEでできる。

ALTER TABLE <テーブル名> AUTO_INCREMENT = 1;
ALTER TABLE test AUTO_INCREMENT = 1;
ALTER TABLE sample AUTO_INCREMENT = 1;

このとき、AUTO_INCREMENTの付いたカラムに1以上の値を持ったレコードが存在すると、その値以下には設定できない。 例えば、以下のようなデータがあると5以下には設定できないが、6以上には設定できる。

> select * from newspaper;
+----+--------+
| id | name   |
+----+--------+
|  1 | 毎日   |
|  2 | 読売   |
|  3 | 毎日   |
|  5 | 日経   |
+----+--------+

設定できない値を設定しようとすると、MyISAMでは最大値+1に変更され、InnoDBでは変更されない。 また、テーブルを作り直したり、AUTO_INCREMENTが付いたカラムを作り直したりすることでもAUTO_INREMENTの値はリセットされる。 ただし、古いMySQLのTRUNCATE TABLEでは全レコードが削除されるだけでAUTO_INCREMENTがリセットされない。


11件中 1-5件目     [ 1 2 3 ]