Часто возникает задача проверить наличие сущности в бд и далее, либо добавить в бд новую сущность, либо же проапдейтить существующую :)

как в таком случае поступает среднестатистический программист? делает выборку нужной сущности и потом, в зависимости от результата, делает апдейт или инсерт. Используя данный вариант мы имеем 2 mysql запроса + обработка php. Но можно поступить более оптимально используя разновидность апдейта с ON DUPLICATE KEY, для этого у нас в структуре таблицы должен быть ключ или уникальное значение и тогда мы можем поступить следующим образом

1 INSERT INTO `data` (`id_graph`, `date`, `value`)
2 VALUES (1, NOW(), 4444)
3 ON DUPLICATE KEY UPDATE `value`=4444;

чтобы 2 раза не повторять наши значения с инсерта мы можем использовать их напрямую, вот немного измененная конструкция

1 INSERT INTO `data` (`id_graph`, `date`, `value`)
2 VALUES (1, NOW(), 4444)
3 ON DUPLICATE KEY UPDATE `value`=VALUES(`value`);

з.ы. материал был подсмотрен на developers.org.ua :)