Я недавно читал, чтобы попытаться понять и понять, какая разница между SQL и MySQL, и я столкнулся с полезной цитатой из другой публикации. "В основном, MySQL - одна из многих книг, в которой есть все, а SQL - это то, как вы читаете, что книга." ,
В зависимости от используемого бэкэнда, то есть MySQL против PostgreSQL. Может ли SQL-запрос внезапно не стать действительным?
В частности, реляционная СУБД против нереляционной СУБД?
Каждая база данных реализует собственный диалект языка SQL. Диалекты могут различаться простыми способами и фундаментальными способами. Например:
len()
vs length()
).row_number()
).full outer join
.Список действительно продолжается. Вы должны думать о SQL как о наборе диалектов. Они значительно перекрывают друг друга, но у каждого есть различия - что-то вроде диалектов английского языка во всем мире.
Да, диалекты могут различаться.
Есть две причины:
Стандарт ISO SQL не требует реализации всех функций, которые он определяет. Большинство функций, определенных в стандарте SQL, являются так называемыми дополнительными функциями.
Некоторые базы данных даже не реализуют обязательные функции или не предлагают собственный синтаксис для функций, где стандарт SQL предусматривает другое решение (возможно, для блокировки поставщика).
Я запускаю веб-сайт, целью которого является пролить свет на эти джунгли: https://modern-sql.com/
Например, одна из самых основных функций, которая уже присутствовала в SQL-92 (но по-прежнему является необязательной функцией), является предложением VALUES
. Вы можете видеть, как это (не) поддерживается здесь:
Надеюсь, все становится лучше. Например, MariaDB (еще не упомянутый на моем сайте) представил предложение VALUES
в недавнем выпуске 10.3.