Язык sql
Сами по себе данные, сосредоточенные в базе данных, не представляют интереса для пользователя, если отсутствуют средства доступа к ним. Доступ к данным осуществляется в виде запросов к базе данных, которые формулируются на стандартном языке запросов. Сегодня для большинства СУБД таким языком является SQL (Structured Query Language — структурированный язык запросов). Появление и развитие этого языка как средства описания доступа к базе данных связано с созданием теории реляционных баз данных.
История SQL началась в 70-х годах в IBM Research Laboratory в Сан-Хосе, где Э. Ф. Кодд и другие сотрудники лаборатории разработали реляционную модель баз данных, на основе которой со временем была создана СУБД DB2. По мере широкого распространения в 80-х реляционных баз данных SQL стал применяться в коммерческих информационных технологиях. В 1986 году Американский национальный институт по стандартам и Международная организация по стандартам утвердили первый стандарт на этот язык.
В середине 80-х годов компании Oracle и Sybase выпустили первые коммерческие системы управления базами данных, которые использовали язык SQL в качестве основного механизма формирования запросов. Спустя некоторое время Microsoft быстро лицензировала технологию Sybase в качестве основы для своего Microsoft SQL Server.
В 1989 и 1992 годах в стандарт были добавлены функции базового контроля целостности данных, администрирования данных, а также определения и манипуляций с данными. Примерно в это же время в дополняющей стандарт спецификации Open Database Connectivity (ODBC) был описан прикладной программный интерфейс, с помо-
щью которого программное обеспечение могло связываться с другой системой баз данных, совместимой с ODBC. Несколькими годами позже была подготовлена аналогичная спецификация, получившая название Java Database Connectivity, которая определила, как операторы SQL можно преобразовать в программы на Java.
Спецификация SQL в редакции 1992 года стала самой популярной, хотя уже появилась и используется несколько лет новая версия — SQL3 (так называемая SQL-99). Процесс стандартизации SQL3 позволил значительно усовершенствовать язык, дав возможность использовать его со сложными объектами в объектных базах данных.
SQL не является языком программирования в традиционном представлении. На нем пишутся не программы, а запросы к базе данных. Поэтому SQL — декларативный язык. Это означает, что с его помощью можно сформулировать, что необходимо получить, но нельзя указать, как это следует сделать. В частности, в отличие от процедурных языков программирования (Си, Паскаль, Ада), в языке SQL отсутствуют такие операторы, как if-then-else, for, while и т. д. Мы не будем подробно рассматривать синтаксис языка. Коснемся его лишь в той мере, которая необходима для понимания простых примеров. С их помощью будут проиллюстрированы наиболее интересные механизмы обработки данных.
Запрос на языке SQL состоит из одного или нескольких операторов, следующих один за другим и разделенных точкой с запятой. Ниже приведены основные группы операторов языка SQL..
Операторы определения данных — Data Definition Language (DDL)
Оператор |
Смысл |
Действие |
CREATE TABLE |
Создать таблицу |
Создает новую таблицу в БД |
DROP TABLE |
Удалить таблицу |
Удаляет таблицу из БД |
ALTER TABLE |
Изменить таблицу |
Изменяет структуру существующей таблицы или ограничения целостности, задаваемые для данной таблицы |
CREATE VIEW |
Создать представление |
Создаст виртуальную таблицу, соответствующую некоторому SQL-запросу |
ALTER VIEW |
Изменить представление |
Изменяет ранее созданное представление |
DROP VIEW |
Удалить представление |
Удаляет ранее созданное представление |
CREATE INDEX |
Создать индекс |
Создает индекс для некоторой таблицы для обеспечения быстрого доступа по атрибутам, входящим в индекс |
DROP INDEX |
Удалить индекс |
Удаляет ранее созданный индекс |
Операторы манипулирования данными — Data Manipulation Language ( DMP)
Оператор |
Смысл |
Действие |
DELETE |
Удалить строки |
Удаляет одну или несколько строк, соответствующих условиям фильтрации, из базовой таблицы. Применение оператора согласуется с принципами поддержки целостности, поэтому этот оператор не всегда может быть выполнен корректно, даже если синтаксически он записан правильно |
INSERT |
Вставить строку |
Вставляет одну строку в базовую таблицу. Допустимы модификации оператора, при которых сразу несколько строк могут быть перенесены из одной таблицы или запроса в базовую таблицу |
UPDATE |
Обновить строку |
Обновляет значения одного или нескольких столбцов в одной или нескольких строках, соответствующих условиям фильтрации |
Язык запросов — Data Query Language (DQL)
Оператор |
Смысл |
Действие |
SELECT |
Выбрать строки |
Оператор, заменяющий все операторы реляционной алгебры и позволяющий сформировать результирующее отношение, соответствующее запросу |
Средства управления транзакциями
Оператор |
Смысл |
Действие |
COMMIT |
Завершить транзакцию |
Завершить комплексную взаимосвязанную обработку информации, объединенную в транзакцию |
ROLLBACK |
Откатить транзакцию |
Отменить изменения, проведенные в ходе 1 выполнения транзакции |
SAVEPOINT |
Сохранить про-межуточную точ-ку выполнения транзакции |
Сохранить промежуточное состояние БД, пометить его для того, чтобы можно было в дальнейшем к нему вернуться |
Средства администрирования данных
Оператор |
Смысл |
Действие |
ALTER DATABASE |
Изменить БД |
Изменить набор основных объектов в базе данных, ограничений, касающихся всей базы данных |
ALTER DBAREA |
Изменить область хранения БД |
Изменить ранее созданную область хранения |
ALTER PASSWORD |
Изменить пароль |
Изменить пароль для всей базы данных |
CREATE DATABASE |
Создать БД |
Создать новую базу данных, определив основные параметры для нее |
CREATE DBAREA |
Создать область хранения |
Создать новую область хранения и сделать ее доступной для размещения данных |
DROP DATABASE |
Удалить БД |
Удалить существующую базу данных (только в том случае, когда вы имеете право выполнить это действие) |
DROP DBAREA |
Удалить область хранения БД |
Удалить существующую область хранения(если в ней на настоящий момент не располагаются активные данные) |
GRANT |
Предоставить права |
Предоставить права доступа на ряд действий над некоторым объектом БД |
REVOKE |
Лишить прав |
Лишить прав доступа к некоторому объекту или некоторым действиям над объектом |
Программный SQL — хранимые процедуры, триггеры
Оператор |
Смысл |
Действие |
DECLARE |
Определяет курсор для запроса |
Задает некоторое имя и определяет связанный с ним запрос к БД, который соответствует виртуальному набору данных |
OPEN |
Открыть курсор |
Формирует виртуальный набор данных, соответствующий описанию указанного курсора и текущему состоянию БД |
FETCH |
Считать строку из множества строк, определенных кур сором |
Считывает очередную строку, заданную параметром команды из виртуального набора данных, соответствующего открытому курсору |
CLOSE |
Закрыть курсор |
Прекращает доступ к виртуальному набору данных, соответствующему указанному курсору |
PREPARE |
Подготовить оператор SQL к динамическому выполнению |
Сгенерировать план выполнения запроса, соответствующего заданному оператору SQL |
EXECUTE |
Выполнить оператор SQL, ранее подготовленный к динамическому выполнению |
Выполняет ранее подготовленный план запроса |
Контрольные вопросы
-
Что представляет база данных?
-
Раскройте понятие концептуальной схемы
-
Что представляет атрибут?
-
Чем идентифицируется запись в БД?
-
Дайте понятие внешней схемы БД.
-
Что представляет внутренняя схема БД?
-
Достоинства и недостатки иерархической модели данных.
-
Достоинства и недостатки сетевой модели данных.
-
Достоинства и недостатки реляционной модели данных.
-
Как осуществляется доступ к данным в реляционной БД?