Смекни!
smekni.com

Язык SQL: общая характеристика, интерфейс с традиционными языками программирования (стр. 2 из 3)

Как видим, такой способсоздания приложений чрезвычайно гибок, позволяет реализовать практически любоеприложение, но в то же время имеет явные недостатки:

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

В результате получаемприложение, которое привязано как к сетевой среде, так и кпрограммно-аппаратной платформе и используемой базе данных.

Некоторой модификациейданного способа является использование "встроенного" языка SQL. Вэтом случае в текст программы на языке третьего поколения включаются не вызовыбиблиотек, а непосредственно предложения SQL, которые предваряются ключевымвыражением "EXEC SQL". Перед компиляцией в машинный код такаяпрограмма обрабатывается препроцессором, который транслирует смесь операторов"собственного" языка СУБД и операторов SQL в "чистый"исходный код. Затем коды SQL замещаются вызовами соответствующих процедур избиблиотек исполняемых модулей, служащих для поддержки конкретного вариантаСУБД.

Такой подход позволил несколькоснизить степень привязанности к СУБД, например, при переключении прикладнойпрограммы на работу с другим сервером базы данных достаточно было зановообработать ее исходный текст новым препроцессором и перекомпилировать.


3.        Вопросы совместимости

По традиции, как и сомногими стандартами в IT-индустрии, с языком SQL возникла проблема: на каком-тоэтапе многие производители использующего SQL программного обеспечения решили,что функционал в текущей (на тот момент времени) версии стандарта недостаточен,и его желательно расширить. В результате у разных производителей системуправления баз данных (СУБД) в ходу разные диалекты SQL, в общем случае междусобой несовместимые.

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

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

До 1996 года вопросамисоответствия коммерческих реализаций SQL стандарту занимался в основномНациональный институт стандартов и технологий (NIST), который и устанавливалуровень соответствия стандарту. Поздне́е подразделение, занимавшееся СУБД,было расформировано, и на текущий момент все усилия по проверке СУБД насоответствие стандарту ложатся на её производителя.

Положение изменилось свведением стандарта SQL:1999. Отныне стандарт приобрёл модульную структуру —основная часть стандарта была вынесена в раздел «SQL/Foundation», все остальныебыли выведены в отдельные модули. Соответственно, остался только один уровеньсовместимости — Core, что означало поддержку этой основной части. Поддержкаостальных возможностей оставлена на усмотрение производителей СУБД.

В настоящее время языкSQL поддерживается многими десятками СУБД различных типов.


4.        Реализации SQL

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

1.      Интерактивный(или автономный) SQL дает возможность пользователям непосредственно извлекатьинформацию из базы или записывать в нее данные. Информация, получаемая позапросу SQL, может быть выдана на экран, переадресована в файл или на принтер.

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

Есть две разновидностистатического SQL: встроенный и модульный.

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

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

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

Операторы динамическогоSQL обычно применяются в диалоговыхсредах для построения запросов и в графических средствах разработки приложенийБД.


5.        Типы команд SQL

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

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

Основные категориикоманд языка SQL:

DDL– язык определения данных;

DML– язык манипулирования данными;

DQL– язык запросов;

DCL– язык управления данными;

командыадминистрирования данных;

команды управлениятранзакциями

Определение структурбазы данных (DDL)

Язык определения данных(Data DefinitionLanguage, DDL)позволяет создавать и изменять структуру объектов базы данных, например,создавать и удалять таблицы. Основными командамиязыка DDL являются следующие: CREATE TABLE, ALTER TABLE, DROP TABLE, CREATEINDEX, ALTER INDEX, DROP INDEX.

Манипулирование данными(DML)

Язык манипулированияданными (DataManipulationLanguage, DML)используется для манипулирования информацией внутри объектов реляционной базыданных посредством трех основных команд: INSERT,UPDATE, DELETE.

Выборка данных (DQL)

Язык запросов DQLнаиболее известен пользователям реляционной базы данных, несмотря на то, что онвключает всего одну команду SELECT.Эта команда вместе со своими многочисленными опциями и предложениямииспользуется для формирования запросов к реляционной базе данных.

Язык управления данными(DCL - DataControlLanguage)

Команды управленияданными позволяют управлять доступом к информации, находящейся внутри базыданных. Как правило, они используются для создания объектов, связанных сдоступом к данным, а также служат для контроля над распределением привилегиймежду пользователями. Команды управления данными следующие: GRANT,REVOKE.

Командыадминистрирования данных

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

Команды управлениятранзакциями

Существуют следующиекоманды, позволяющие управлять транзакциями базы данных: COMMIT,ROLLBACK, SAVEPOINT,SET TRANSACTION.


6.        Преимущества и недостатки языка SQL

6.1     Преимущества

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

Основные достоинстваязыка SQL заключаются вследующем:

стандартность– как уже было сказано, использование языка SQLв программах стандартизировано международными организациями;

независимость отконкретных СУБД – все распространенные СУБД используют SQL,т.к. реляционную базу данных можно перенести с одной СУБД на другую сминимальными доработками;