Запрос UPDATE не может создать новую строку, поэтому, возможно, примерно так:
UPDATE stocks SET marketcap = 300000000000 WHERE symbol = '$MMM'
Ваша сноска «если она не существует» означает, что вам, вероятно, потребуется проверить, сколько строк было изменено, и если 0, то запустите:
INSERT INTO stocks(marketcap, symbol) VALUES(300000000000, '$MMM')
На самом деле не имеет значения, в каком направлении вы это делаете; если у вас есть ключ на символе, вы не получите дубликатов, вы получите ошибку при вставке, которую затем можете использовать для запуска обновления. Хотя в идеале вы должны посмотреть на вероятность отказа каждого из них и go с возможностью поставить на первое место наименее часто сбойный вариант. Если вы будете обновлять 10000 символов по 100 раз в день каждый, но вставлять только 100 новых символов в день, то сначала установите обновление. Если вы будете создавать 10000 новых символов в день и обновлять их раз в год, вставьте вставку на первое место. Это гарантирует, что наименьшее количество времени будет потрачено на операции, которые не влияют / используют ресурсы, потому что они вызывают ошибку