Ответы:
Я думаю, что вы пытаетесь жить в мире мечты Джо Селко, где вы можете использовать только стандартный SQL, и в любую неделю вам может понадобиться перенести весь ваш код с SQL Server на Oracle, а затем на Oracle на DB2, а затем снова на SQL Server. , Дважды.
Хотя основные и фундаментальные аспекты стандартного SQL помогут вам где угодно, попытка ограничить себя этим набором языка из-за боязни портирования в будущем (или просто по принципу) - это не тот путь, который я бы рекомендовал. Лично я придерживаюсь стандарта ANSI, когда могу (например, <> vs.! =, COALESCE против ISNULL, CURRENT_TIMESTAMP против GETDATE () и т. Д.), Но я также не боюсь использовать специфичные для SQL Server вещи, которые делают мою работу проще.
Важно понимать, как работает SQL в целом; в равной степени важно понимать, как язык работает в ваших RDBMS, включая отклонения от стандарта, отклонения от того, как другая RDBMS могла бы реализовать ту же концепцию, и проприетарные расширения, которых нет в других местах.
SQL Server, например, покрывает значительную часть стандарта и приближается к полному соответствию с каждой новой версией. Будет ли это когда-либо покрывать 100%? Весьма сомнительно. Будет ли продолжаться добавление проприетарных расширений, не входящих в стандарт? Безусловно. Если бы все охватывали стандарт, и никто не выходил за его пределы, тогда не было бы преимуществ выбирать одну платформу вместо другой, и мы все использовали бы одно и то же.
Никто из них. Вы можете изучить стандартный (-ish) SQL для любой RDBMS.
Стандартный SQL не используется в реальном мире для оплаты работы в успешных проектах ...
Сказав это, MySQL - это хорошее место для начала, и вот учебник
constructive guidance
невероятно лицемерной. Где ваше конструктивное руководство для ГБН, чтобы улучшить свой ответ?
Все основные СУБД в разной степени поддерживают разные версии спецификации SQL, причем более старые версии спецификации поддерживаются более полно. Не все относятся к соответствию одинаково серьезно (например, Oracle начал поддерживать 'ansi joins' в 2001 году, спустя почти десятилетие после SQL-92 ), и, как уже сказал @gbn, на практике вам нужно знать, какой SQL-код используется каждым продуктом. ты используешь.
Postgres является исключением в том смысле, что он «гордится соответствием стандартам» . Для «обучения и справочных целей» вам нужна практическая практика с базой данных, а не просто знания из книги или стандарта, а postgres является идеальной платформой для изучения веревок, потому что:
Договорились с Джеком и ГБН, стандарта нет и нужно сделать выбор. Чтобы сделать этот выбор, сначала нужно выбрать СУБД. Я бы порекомендовал подумать о следующих вещах: 1) вы хотите быть DB-разработчиком или администратором базы данных? 2) С какой операционной системой вы хотите работать? Я согласен, этот вопрос немного странный, но когда я общаюсь со студентами, они говорят, что это важно.
Например (просто пример, может быть, я ошибаюсь), если вы хотите быть администратором баз данных и не хотите работать с Windows, вам не нужно думать о MSSQL. И если вы хотите быть администратором баз данных и вам нравится работать с командной строкой и конфигурационными файлами - возможно, Oracle - это то, что вам нужно. Если вы хотите быть разработчиком, хотите использовать свои знания в фриланс-проектах, может быть, вам нужен MySQL?