Существуют определенные стандарты, которые согласуются между системами баз данных. Во многих случаях это базовая линия для реализации. Затем каждая отдельная система строит эти стандарты по-своему.
Абсолютно страшно даже думать о том, чтобы пытаться придумать что-то совместимое во всех системах. Лучший способ сделать это - убедиться, что вы ограничиваете то, что делаете, тем, что указано в этих стандартах. Ничего более. Если вы выйдете за рамки этого, например, с помощью агрегатных функций, вы будете самостоятельно.
Несколько недель назад я подумал, что попробую внедрить систему, в которой я использовал PostgreSQL в dev / test и SQLite для своих модульных тестов. Я думал, что наличие базы данных SQLite в памяти поможет мне ускорить интеграционные тесты. Хотя эта часть была правдой, несоответствие в функциональности между PostgreSQL и SQLite вызвало ряд головных болей. Пройдя через несколько разных вещей (я тоже использовал NHibernate), я сдался и оставил эту мысль.
Мораль этой истории? Портативность / стандартизация мало что значат. Будьте последовательны в том, что вы используете во всем, что вы делаете. Вы спасете себя от горя.