SQLは楽し

  • 投稿日:
  • by
  • カテゴリ:
  • ハッシュタグ:

最初は SELECT、INSERT、UPDATEの3つしか知りませんでしたが、少しずつ覚えてきました。

SELECT文では、INNER JOIN で複数のテーブルを連結することを覚えました。 AS 略称 で、クエリの長さを短縮したり。
INSERT文は、リロードした時に上書きエラーになってしまうので、REPLACE文や INSERT IGNORE を使うようになりました。

勤怠管理のテーブルは、在籍人数×365日分のレコードをあらかじめ生成しておくのですが、PHPのfor ループで回していると一度に5人分生成しただけで、「Maximum execution time of 60 seconds exceeded」エラーが出てしまいました。
php.ini の max_execution_time や max_input_time を修正するといいそうですが、INSERT文は1つのクエリで複数のレコードを生成できることを知りました。 365日分のレコードを1つのクエリにまとめたところ、実行速度が劇的に上がって、全員分のレコードを生成してもタイムアウトすることはなくなりました。

ENUM型やSET型の定義情報を取得する方法を探していたのですが、SHOW COLUMNS FROM (テーブル名) LIKE "(フィールド名)" で、$row["Type"]($rowは選択したレコード)すれば、「enum('日本','北中米','南米','欧州','中国','アジア大洋州') 」てな感じで取得できました。
これを分解してフォームのselect要素に入れれば、プルダウンメニューが出来ますね。

RDBMSって取っ付きづらいけど、操作方法を覚えてくると面白いですね。 まだまだ新しいことを覚えられそうです。