Читать «SQL за 24 часа» онлайн - страница 161

Unknown

• Использование параметров

Реализации SQL

Имеется целый ряд реализаций SQL, предлагаемых различными производителями. Перечислить здесь всех производителей систем управления базами данных возможности нет, поэтому мы рассмотрим только некоторые программные продукты, предлагаемые лидерами. Мы обсудим реализации SQL, предлагаемые Sybase, dBase, Microsoft SQL Server и Oracle. Кроме них достаточно популярными являются продукты фирм Borland, IBM, Informix, Progress, CA-Ingress и многих других.

Различия между реализациями

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

Различия в SQL различных производителей возникают из-за стремления улучшить стандарт ANSI SQL с точки зрения простоты использования и эффективности. Внедрять усовершенствования и делать свои продукты более привлекательными для клиентов производителей заставляет конкуренция.

Теперь, когда вы знаете основы SQL, вам будет нетрудно разобраться в различиях SQL разных производителей. Другими словами, если вы можете использовать SQL в рамках реализации Sybase, для вас не составит большого труда использовать SQL и в Oracle. Кроме того, знание SQL различных производителей по крайней мере улучшит ваше резюме.

В следующих примерах сравнивается синтаксис операторов SELECT разных производителей со стандартом ANSI.

Стандарт ANSI предлагает следующий синтаксис оператора.

SELECT [DISTINCT ] [* | СТОЛБЕЦ1 [, СТОЛБЕЦ2 ]

FROM ТАБЛИЦА1 [, ТАБЛИЦА2]

[ WHERE УСЛОВИЕ ПОИСКА ]

GROUP BY [ ПСЕВДОНИМ_ТАБЛИЦЫ | СТОЛБЕЦ1 [, СТОЛБЕЦ2 ]

[ HAVING УСЛОВИЕ_ПОИСКА ]]

[{UNION | INTERSECT | EXCEPT}][ ALL ]

[ CORRESPONDING [ BY (СТОЛБЕЦ! [, СТОЛБЕЦ2 ]) ]

СПЕЦКФИКАЦИЯ_ЗАПРОСА | SELECT * FROM ТАБЛИЦА |

КОНСТРУКТОР_ТАБЛИЦЫ ]

[ORDER BY СПИСОК_СОРТИРОВКИ ]

SQLBase предлагает следующий синтаксис оператора.

SELECT [ ALL | DISTINCT ] СТОЛБЕЦ1 [, СТОЛВЕЦ2 ]

FROM ТАБЛИЦА1 [, ТАБЛИЦА2]

[ WHERE УСЛОВИЕ_ПОИСКА ]

[ GROUP BY СТОЛБЕЦ1 [, СТОЛБЕЦ2 ]

[ HAVING УСЛОВИЕ_ ПОИСКА ]]

[ UNION [ ALL ] ]

[ ORDER BY СПИСОК_СОРТИРОВКИ ]

[ FOR UPDATE OF СТОЛБЕЦ1 [, СТОЛБЕЦ2 ]]

Oracle предлагает следующий синтаксис оператора.

SELECT [ ALL | DISTINCT ] СТОЛБЕЦ1 [, СТОЛБЕЦ2 ]

FROM ТАБЛИЦА1 [, ТАБЛИЦА2]

[ WHERE УСЛОВИЕ_ПОИСКА ]

[[ START WITH УСЛОВИЕ_ПОИСКА ]

CONNECT BY УСЛОВИЕ_ПОИСКА ]

[ GROUP BY СТОЛБЕЦ1 [, СТОЛБЕЦ2 ]

[ HAVING УСЛОВИЕ_ПОИСКА ]]

[{UNION [ ALL ] ] INTERSECT | MINUS} СПЕЦИФИКАЦИЯ_ЗАПРОСА ]

[ ORDER BY СТОЛБЕЦ1 [, СТОЛБЕЦ2 ]

[ NOWAIT ]

Informix предлагает следующий синтаксис оператора.

SELECT [ ALL | DISTINCT | UNIQUE ] СТОЛБЕЦ1 [, СТОЛБЕЦ2 ]

FROM ТАБЛИЦА1 [, ТАБЛИЦА2]

[ WHERE УСЛОВИЕ_ПОИСКА ]