Существует ли определенный и принятый стандартный язык SQL? - PullRequest
6 голосов
/ 04 июня 2009

Я помню, как в колледже мы учились на базе данных, где нам, студентам, была предоставлена ​​возможность выбрать нашу систему управления базами данных. Будучи моим первым опытом работы с базами данных, я помню, что был смущен тем, что синтаксис операторов SQL различался в зависимости от используемой системы управления базами данных. До этого у меня было впечатление, что язык SQL является универсальным языком, который пользователь может использовать для взаимодействия со всеми базами данных.

Так в чем же дело? Есть ли определенный стандарт SQL? Если да, то почему производители систем управления базами данных отличаются от спецификации? Был ли стандарт разработан не в полной мере с идеей, что компании будут использовать его в качестве основы для расширения языка? Был ли первоначальный стандарт SQL устаревшим, и производителям нужно было расширить функциональность? Не обновлялся ли оригинал такими темпами, чтобы соответствовать современным требованиям приложений? Было ли это для создания бизнес-модели для дохода?

Спасибо.

Ответы [ 5 ]

8 голосов
/ 04 июня 2009

Существуют стандарты SQL:

http://en.wikipedia.org/wiki/SQL#Standardization

Однако большинство СУБД все еще реализуют несколько нестандартную или расширенную версию стандарта. (Microsoft SQL Server является основным подозреваемым).

7 голосов
/ 04 июня 2009

Да, существуют стандарты SQL ANSI, см., Например, черновик SQL-92 один . Тем не менее, каждый поставщик баз данных реализует «расширенное подмножество» стандартного SQL - и, если подумать, что-то является «расширенным подмножеством» чего-то еще, в некотором смысле ;-). Без сомнения, для этого есть коммерческие причины, но даже некоммерческие реализации, такие как PostgreSQL, ведут себя примерно так же ...

4 голосов
/ 04 июня 2009

Вы можете различать язык манипулирования данными (SELECT, UPDATE, INSERT: SQL), язык определения данных (CREATE, DELETE: SQL), язык управления данными (GRANT: SQL).

SQL может охватывать все эти части, но иногда поставщикам не нравится, как это делает SQL. Иногда они не реализуют части (см. DCL). Все чаще стандартный «след» после реальности (см. Xpath-выражения в DML) и они просто создают свой собственный синтаксис.

3 голосов
/ 04 июня 2009

Был ли оригинальный стандарт SQL устаревшим и производители должны были построить больше функциональность? Есть / был оригинал не обновляется в темпе, чтобы оставаться в курсе современное приложение нуждается? Было ли это создать бизнес-модель для получения дохода?

Я думаю, что это основные факторы. Стандарт не охватывал некоторые полезные функции, и поставщики стремились добавить функции, которые заставляли бы клиентов выбирать свою реализацию, а не лоббировать, чтобы стандартизировать ее как можно быстрее.

2 голосов
/ 04 июня 2009

Существует стандартизированный SQL. Как говорится в других ответах, поставщики баз данных поставляются с расширениями, специфичными для их механизмов баз данных.

Исходя из моего опыта работы с базами данных (особенно в случае больших баз данных), попытка реализовать базу данных "кросс-вендора" не имеет большого смысла. Расширения в языке определения данных, например, позволяют разработчику / dba оптимизировать производительность базы данных, используя специфические функции поставщика (например, физическое представление таблиц, подробности о хранении таблицы, удобства индексирования и т. Д.). В случае запросов, опять же, для больших баз данных, вам может потребоваться предоставить подсказки ядру базы данных для построения плана выполнения. Синтаксис подсказок, опять же, специфичен для поставщика.

Это некоторые примеры «нестандартных» функций, которые могут оказать значительное влияние.

Опять же, по моему опыту, к сожалению, многие клиенты или технические специалисты (архитекторы?) Уделяют меньше внимания деталям базы данных и упускают мощные функции базы данных для управления данными и доступа к ним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...