Выбрать главу

Отличается ли база данных для приложения Web от базы данных в системе клиент/сервер?

Сама по себе база данных для приложения Web может ничем не отличаться от базы данных в системе клиент/сервер, но использование технологий Web накладывает некоторые дополнительные ограничения. Например, приложение Web для доступа к базе данных использует сервер Web и поэтому в рамках такого приложения конечные пользователи обычно не имеют возможности прямого доступа к базе данных.

Практикум

Задания практических занятий разделены на тесты и упражнения. Тесты предназначены для проверки общего уровня понимания рассмотренного материала. Упражнения дают возможность применить на практике идеи, обсуждавшиеся в ходе текущего урока, в комбинации с идеями из предыдущих уроков. Мы рекомендуем ответить на тестовые вопросы и выполнить упражнения прежде, чем продолжать дальнейшее чтение книги. Ответы можно проверить по Приложению Б. "Ответы"

Тесты

1. Может ли база данных на одном сервере быть доступной с другого сервера?

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

3. Как называется программное обеспечение, посредством которого осуществляется доступ к базам данных.

4. Можно ли внедрить SQL в языки программирования для Internet?

5. Как осуществляется доступ к удаленной базе данных в рамках приложения Web?

Упражнения

1. Войдите в Internet и ознакомьтесь с информационными страницами нескольких из представленных там компаний. Если ваша компания тоже имеет информационную страницу в Web, сравните ее с информационными страницами конкурентов. Ответьте для себя на следующие вопросы в отношении просмотренных страниц.

а. Открывается ли страница быстро или ее открытие тормозится наличием слишком большого числа графических изображений?

б. Интересно ли читать представленную на странице информацию?

в. Получили ли вы в результате чтения имеющейся на странице информации представление о предлагаемых компанией услугах и продуктах и о компании в целом?

г. Если на странице предлагается доступ к некоторой базе данных, то достаточно ли быстро осуществляется такой доступ?

д. Можно ли сделать вывод об использовании на данной странице Web каких-либо средств безопасности?

2. Если в вашей компании используется intranet, войдите в сеть и посмотрите, какая информация о компании там представлена. Доступна ли там какая-нибудь база данных? Если да, то кто является производителем соответствующей системы управления базами данных? Какого типа интерфейсные приложения предлагаются при этом конечному пользователю?

24-й час Расширения стандартного SQL

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

Основными на этом уроке будут следующие темы

• Разные реализации языка

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

• Соответствие стандарту ANSI SQL

• Интерактивные операторы SQL

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

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

Реализации 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 УСЛОВИЕ_ПОИСКА ]

[ GROUP BY {СТОЛБЕЦ1 [, СТОЛБЕЦ2 ] | INTEGER}

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

[ UNION СПЕЦИФИКАЦИЯ_ЗАПРОСА ]

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

[INTO TEMP TABLE [WITH NO LOG ]]

Как вы уже, наверное, заметили, синтаксис операторов по сути одинаков. Везде присутствуют ключевые слова SELECT, FROM, WHERE, GROUP BY, HAVING, UNION и ORDER BY. В каждом случае эти ключевые слова выполняют одни и те же задачи, но имеют различные опции в зависимости от реализации. Эти опции и называются усовершенствованиями.

Соответствие стандарту ANSI SQL

Производители стараются соответствовать стандарту ANSI SQL. но ни один из их продуктов не соответствует стандарту на 100%. Некоторые производители добавит к стандартным свои команды, и многие из этих команд и функций были приняты стандартом ANSI SQL. Для производителя соответствие стандарту выгодно по многим причинам. Например, в случае соответствия стандарту реализацию соответствующего производителя легко освоить, а создаваемый в рамках данной реализации программный код SQL будет легко переносим от одной реализации к другой. Переносимость, очевидно, оказывается важным фактором, когда приходится переводить базу данных из одной системы управления базами данных в другую. Какая причина может sacia-вить компанию потратить кучу денег на переход к реализации, которая не согласуется со стандартами? Компания не станет этого делать, если переход потребует внесения слишком больших изменений в программное обеспечение, а освоение языка новой реализации потребует слишком больших усилий. ПОЭТОМУ соответствие стандарту ANSI SQL в большинстве случаев проблемой не является.