Механизм доступа к данным. Язык структурированных запросов SQL. История и стандарты SQL. Обработка команд SQL сервером Oracle

Страницы работы

6 страниц (Word-файл)

Содержание работы

Механизм доступа к данным

Язык структурированных запросов SQL

История SQL

Стандарты SQL

Основные команды SQL

Обработка команд SQL сервером Oracle

Стадии выполнения команды SQL

Выполнение команды DML

Выполнение команды SELECT

Выполнение команд DDL

Литература

Все операции над данными реляционной базы данных выполняются посредством языка доступа к данным, являющимся стандартным языком для систем управления реляционными базами данных. Таким стандартным языком является SQLStructured Query Language (структурированный язык запросов).

Язык структурированных запросов SQL

История SQL

Статья Кодда в 1970 году вызвала большой поток исследований, связанных с реляционными базами данных. Для реализации реляционной модели, фирма IBM в 1974 году начала разработку большого исследовательского проекта, названного System/R. Цель этого проекта заключалась в том, чтобы доказать работоспособность реляционной модели и приобрести опыт реализации реляционной СУБД.

В 1974 – 1975 годах на первом этапе выполнения проекта System/R был создан минимальный прототип реляционной системы управления базами данных. В это же время вышла первая статья с описанием языка запросов к базе данных, названного SEQUEL – Structured English Query Language (структурированный английский язык запросов).

В 1978 – 1979 годах на втором этапе выполнения проекта полностью переделанная реализация System/R была установлена на компьютерах нескольких заказчиков фирмы IBM для опытной эксплуатации. Эта эксплуатация принесла первый опыт работы с реляционной СУБД и с языком базы данных, который был переименован в SQL – Structured Query Language (структурированный язык запросов). Несмотря на изменение названия, произношение «сиквел» сохранилось и по сегодняшний день.

В 1979 году исследовательский проект System/R закончился, и IBM сделала заключение, что реляционные базы данных не только работоспособны, но и могут служить для создания коммерческих продуктов.

Стандарты SQL

В 1982 году началась работа над официальным стандартом SQL. В 1986 году стандарт был утвержден Американским институтом национальных стандартов (American National Standards Institute – ANSI) под номером X3.135, а в 1987 году – как стандарт Международной организации по стандартам (International Standards Organization – ISO). Этот стандарт, пересмотренный в 1989 году, обычно называют стандартом «SQL-89» или «SQL1».

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

Чтобы исправить эту ситуацию, комитет ANSI создал проект более жесткого стандарта «SQL2» и «SQL3». Эти стандарты оказались более противоречивыми, чем исходный стандарт, т.к. предусматривали возможности, выходящие за рамки уже существующих программных продуктов, использующих SQL. Тем не менее, стандарт «SQL2», был окончательно принят комитетом ANSI в 1992 году.

Все существующие коммерческие продукты поддерживают, несмотря на стандарт SQL2, собственный диалект языка SQL. Однако ядро SQL стандартизировано достаточно жестко, и поставщики СУБД пытаются привести свои продукты в соответствие со стандартом.

Основные команды SQL

Итак, SQL – структурированный язык команд для взаимодействия с сервером реляционных баз данных из любого инструментального пакета или приложения. Администратор базы данных использует язык запросов для формирования и обслуживания баз данных, а пользователь – для доступа к данным.

Возможности SQL:

§  Подходит разным пользователям, включая пользователей с самым малым опытом программирования, т.к. является достаточно простым и наглядным языком

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

§  Сокращает время, необходимое для создания и сопровождения систем, т.к. является единым языком и для определения объектов, и для манипулирования данными

Несмотря на то, что Oracle SQL совместим со стандартом, некоторые свойства SQL2 не поддерживаются Oracle или отличаются от стандарта.

Команды SQL можно разделить на несколько категорий:


Команды

Описание

Язык манипулирования данными (DML)
Запрашивают или манипулируют данными в объектах базы данных

SELECT

Извлекает данные из одной или более таблиц или представлений

INSERT

Добавляет новые строки в таблицу

UPDATE

Изменяет значения колонок в существующих строках таблицы

DELETE

Удаляет строки из таблиц

LOCK TABLE*

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

EXPLAIN PLAN*

Позволяет просмотреть план выполнения SQL-утверждения

Язык определения данных (DDL) базы данных

Определяют, изменяют определение или удаляют из словаря определение объектов базы данных

CREATE

Используются для создания структур данных.

ALTER

Используются для изменения структур данных.

DROP

Используются для удаления структур данных.

RENAME*

Изменяет имена объектов

TRUNCATE*

Усекает объекты (удаляет все строки, оставляя определение объекта)

ANALYZE*

Собирает статистики об объектах, проверяет структуру объектов

COMMENT*

Добавляет комментарии объектам в словарь данных

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

Управляют изменениями, сделанными командами DML и группируют команды DML в одну транзакцию

COMMIT

Подтверждает изменения

ROLLBACK

Отменяет изменения до состояния данных на начало транзакции или до точки сохранения

SAVEPOINT*

Устанавливает точки сохранения, до которых можно отменить изменения

SET TRANSACTION*

Устанавливает свойства транзакции

Язык управления доступом (DCL)

Предоставляют или отменяют права доступа к базе данных Oracle и ее структурам

GRANT

Предоставляет права доступа к базе данных Oracle и ее структурам

REVOKE

Отменяет права доступа к базе данных Oracle и ее структурам

Программный SQL

Позволяет выполнять команды SQL из программных модулей

DECLARE

Определяет явный курсор

OPEN

Открывает курсор

FETCH

Выбирает строку из курсора

CLOSE

Закрывает курсор

SELECT INTO*

Извлекает данные из одной или более таблиц в программные переменные

EXECUTE IMMEDIATE*

Динамически выполняет оператор SQL

* - Не являются частью стандарта ANSI/ISO, но используются в СУБД Oracle

Обработка команд SQL сервером Oracle

Команды SQL проходят несколько стадий при обработке сервером Oracle. В процессе обработки задействованы различные процессы и структуры памяти Oracle (Рисунок 1).

Рисунок 1 Процессы и структуры памяти, участвующие в обработке команд SQL

·  Команды SQL обрабатываются серверным процессом

·  Идентичные команды SQL (дерево разбора и план выполнения) хранятся в одних и тех же разделяемых областях SQL разделяемого пула. Разделяемый пул располагается всегда в системной глобальной области. Команды SQL считаются идентичными, если:

o  Их текст полностью идентичен, вплоть до регистра и количества пробелов

o  Они ссылаются на одни и те же объекты

o  Типы и имена используемых переменных совпадают

Похожие материалы

Информация о работе