Новичок в этом всё поэтому хотелось бы спросить:
SQL - это язык структурированных запросов применяемый для создания, модификации и управления данными в реляционной базе данных, управляемой соответствующей системой управления базами данных.
Давайте пройдемся по СУБД:
1. MySQL - Реляционная система управления базами данных.
2. PostgreSQL - объектно-реляционная система управления базами данных.
3. MS SQL - система управления реляционными базами данных.
Хотелось бы спросить:
1. В каждой СУБД свой язык SQL? В моем понимании и маленьком опыте я заметил что SQL это общий язык запросов, а в каждой СУБД он реализован по-разному с маленькими своими изменениями, да?
Есть стандартный SQL. Он развивается и каждые несколько лет выходит новый стандарт, дополняющий предыдущие. Каждая СУБД в разной степени реализует какой-то из стандартов и добавляет свои нестандартные особенности, формируя диалект SQL.
Таблица совместимости позволяет получить общее представление о том, кто хорошо реализует стандарты, кто не очень, а кто настолько плохо, что даже информацию скрывает.
SQL
в общем - это серия стандартов под эгидой ISO/IEC
. В целом для СУБД некорректно заявлять поддержку SQL
, противоречащую стандарту. Но является нормальным не реализовывать все части стандарта. И обычно никак не удаётся обойтись без реализации своих собственных дополнений для синтаксиса.
Простой и банальный пример дополнения синтаксиса - в стандарте нет create index
. Вообще. Есть только синтаксис для primary key и unique constraint, а вторичных индексов нет. Но без них хорошую базу не сделать. Приходится добавлять синтаксис. Но разные базы разрабатываются разными людьми, обладают разными особенностями и неизбежно получается различающийся синтаксис.
Другой пример - в стандарте долгое времени не было способа ограничить размер select. Тот самый limit ... offset ...
, но который реализован по разному в разных базах. Некоторые из вариантов синтаксиса другие базы добавляли как альтернативу своему, например исторически в mysql сделали limit x,y
синтаксис, но затем для совместимости с postgresql добавили и limit ... offset ...
.
Встречаются и нарушения либо отклонения от стандартов. Например, более строгая обработка синтаксиса, в принципе допустимого в стандарте, но недопустимая в реализации.
Как итог - стандарт как бы есть и многие задачи решаются схожим образом и СУБД ведут себя схожим образом, но полагаться на это весьма не рекомендуется. Могут быть расхождения как в самом синтаксисе, так и в поведении при том же самом синтаксисе.
И отдельная боль разработчиков СУБД
since when has the SQL standard ever been clear?
Стандарт есть, но он зачастую не однозначен и не очевиден в своих формулировках. Определённая часть расхождений поведения связана именно с этим. Разработчики одной СУБД прочли стандарт и поняли его так, разработчики другой - поняли иначе.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
При импорте базы размером в 15 гб, происходит ошибка
Заметил в одном CMS такую вещьПри необходимости обновлении каких либо записей они делают сначала DELETE потом INSERT новой измененной записи, вместо...