Какой стандарт SQL наиболее широко и полностью поддерживается?

8

Я хочу сосредоточиться на одной из спецификаций языка SQL для изучения и справочных целей. Какая версия стандарта SQL наиболее широко поддерживается в СУБД, чтобы я мог сосредоточить на этом свое время и силы?

Мумтаз
источник

Ответы:

15

Я думаю, что вы пытаетесь жить в мире мечты Джо Селко, где вы можете использовать только стандартный SQL, и в любую неделю вам может понадобиться перенести весь ваш код с SQL Server на Oracle, а затем на Oracle на DB2, а затем снова на SQL Server. , Дважды.

Хотя основные и фундаментальные аспекты стандартного SQL помогут вам где угодно, попытка ограничить себя этим набором языка из-за боязни портирования в будущем (или просто по принципу) - это не тот путь, который я бы рекомендовал. Лично я придерживаюсь стандарта ANSI, когда могу (например, <> vs.! =, COALESCE против ISNULL, CURRENT_TIMESTAMP против GETDATE () и т. Д.), Но я также не боюсь использовать специфичные для SQL Server вещи, которые делают мою работу проще.

Важно понимать, как работает SQL в целом; в равной степени важно понимать, как язык работает в ваших RDBMS, включая отклонения от стандарта, отклонения от того, как другая RDBMS могла бы реализовать ту же концепцию, и проприетарные расширения, которых нет в других местах.

SQL Server, например, покрывает значительную часть стандарта и приближается к полному соответствию с каждой новой версией. Будет ли это когда-либо покрывать 100%? Весьма сомнительно. Будет ли продолжаться добавление проприетарных расширений, не входящих в стандарт? Безусловно. Если бы все охватывали стандарт, и никто не выходил за его пределы, тогда не было бы преимуществ выбирать одну платформу вместо другой, и мы все использовали бы одно и то же.

Аарон Бертран
источник
1
+1 За упоминание о том, что соблюдение менее 100% - это не обязательно плохо. Хотя возможность переноса вашего кода на различные платформы может показаться отличной вещью, факт заключается в том, что вы выбрали свою СУБД по определенной причине (или, по крайней мере, я надеюсь, что выбор был не просто произвольным). В реальном мире стоимость переноса вашего кода на новую платформу зачастую дороже, чем выяснение того, как это сделать на вашей текущей платформе.
Мэтт М
11

Никто из них. Вы можете изучить стандартный (-ish) SQL для любой RDBMS.

Стандартный SQL не используется в реальном мире для оплаты работы в успешных проектах ...

Сказав это, MySQL - это хорошее место для начала, и вот учебник

ГБН
источник
«Стандартный SQL не используется в реальном мире для оплаты работы в успешных проектах ...» - глупейшая вещь, размещенная на всем обмене стека.
Jonesome Reinstate Моника
3
@Samsmith почему? То, что ты не согласен, не делает это глупым. Может быть, вы могли бы объяснить, почему вы не согласны, вместо того, чтобы просто назвать это глупо?
Аарон Бертран
1
@samsmith также, и особенно если вы голосуете против, тогда я нахожу вашу предыдущую апелляциюconstructive guidance невероятно лицемерной. Где ваше конструктивное руководство для ГБН, чтобы улучшить свой ответ?
Аарон Бертран
3
@samsmith Если ваша цель - «успешный проект», то вам необходимо воспользоваться всеми функциями СУБД. Неспособность сделать это и просто использование стандартного SQL - это просто напрасная трата возможностей вашего программного обеспечения
Lamak
1
@samsmith Где вы получаете статистику для "большой%"? И какой процент реальных систем баз данных разрабатывается разработчиками в любом случае? По своему личному опыту и опыту каждого клиента, с которым я когда-либо сталкивался, мне еще не приходилось сталкиваться с магазином SQL Server, который соответствует стандарту. Когда-либо. Это просто безрассудно, независимо от того, что ваши друзья-разработчики утверждают, что они делают.
Аарон Бертран
10

Все основные СУБД в разной степени поддерживают разные версии спецификации SQL, причем более старые версии спецификации поддерживаются более полно. Не все относятся к соответствию одинаково серьезно (например, Oracle начал поддерживать 'ansi joins' в 2001 году, спустя почти десятилетие после SQL-92 ), и, как уже сказал @gbn, на практике вам нужно знать, какой SQL-код используется каждым продуктом. ты используешь.

Postgres является исключением в том смысле, что он «гордится соответствием стандартам» . Для «обучения и справочных целей» вам нужна практическая практика с базой данных, а не просто знания из книги или стандарта, а postgres является идеальной платформой для изучения веревок, потому что:

  1. Это бесплатно и доступно на большинстве платформ
  2. Соответствие вышеуказанным стандартам
  3. Имеет отличную документацию
  4. Это зрелый и широко используемый
  5. В нем есть много функций, которые можно найти в самых популярных коммерческих РСУБД, и немало тех, которые не
Джек говорит, попробуйте topanswers.xyz
источник
3

Договорились с Джеком и ГБН, стандарта нет и нужно сделать выбор. Чтобы сделать этот выбор, сначала нужно выбрать СУБД. Я бы порекомендовал подумать о следующих вещах: 1) вы хотите быть DB-разработчиком или администратором базы данных? 2) С какой операционной системой вы хотите работать? Я согласен, этот вопрос немного странный, но когда я общаюсь со студентами, они говорят, что это важно.

Например (просто пример, может быть, я ошибаюсь), если вы хотите быть администратором баз данных и не хотите работать с Windows, вам не нужно думать о MSSQL. И если вы хотите быть администратором баз данных и вам нравится работать с командной строкой и конфигурационными файлами - возможно, Oracle - это то, что вам нужно. Если вы хотите быть разработчиком, хотите использовать свои знания в фриланс-проектах, может быть, вам нужен MySQL?

Alex_L
источник
2
Я надеюсь, что это не единственные критерии, которые используют стартапы для выбора своей платформы. :-)
Аарон Бертран