Опубликован: 02.08.2007 | Уровень: специалист | Доступ: платный
Лекция 8:

Введение в структурированный язык запросов - SQL

< Лекция 7 || Лекция 8: 123456 || Лекция 9 >
Аннотация: В данной лекции вводятся основные понятия языка манипулирования данными в реляционных базах данных (SQL) и описываются объекты физической базы данных и операторы языка.
Ключевые слова: базы данных, SQL, база данных, администратор баз данных, структурированный язык, query language, Informix, Sybase, СУБД Ingres, SQL/89, стандарт SQL/92, PSM, схема отношения, DDL, DML, data manipulation language, синтаксический разбор, привилегия доступа, ALTER TABLE, tablespace, табличное пространство, CREATE VIEW, ALTER, create database, deinstallation, GRANT, активная база данных, REVOKE, SET DEFAULT, synonym, %ROWCOUNT, ACO, натуральный логарифмы, ceiling, floor, строковая функция, exact, scan, PAT, символьное представление, decode, символьные типы, арифметический оператор, агрегатные функции, AVG, distinction, стандартное отклонение, variance, условия поиска, физическая модель реляционной базы данных, логическая модель реляционной базы данных, SQL/92, создание каталогов, виртуальная таблица, функции субд, определенные пользователем типы данных, альтернативное имя, user-defined data type, ключевое поле, таблицы хэширования, секционирование, поддержка ссылочной целостности, stored procedures, имя связи, идентификатор объекта, delimiter, пользователи базы данных, авторизация доступа, аналитик, домен, значение, максимум, СУБД, логическая модель данных, атрибут, тип данных, выражение, интервал, точность, Oracle, определение домена, спецификация колонок, связь, определение, встроенные типы данных, ставка процента, SMALLINT, double precision, TIMESTAMP, метки безопасности, связанная переменная, e-money, positive integer, шасси, предметной области, подразделения, объект, структура организации, логическая схема, department, LOC

Введение

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

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

SQL - язык манипулирования данными в реляционной базе данных

SQL и его история

Единственным средством общения и администраторов баз данных, и проектировщиков, и разработчиков, и пользователей с реляционной базой данных является структурированный язык запрос SQL (Structured Query Language). SQL есть полнофункциональный язык манипулирования данными в реляционных базах данных. В настоящее время он является общепризнанным, стандартным интерфейсом для реляционных баз данных, таких как Oracle, Informix, Sybase, DB/2, MS SQL Server и ряда других (стандарты ANSI и ISO). SQL - непроцедурный язык, который предназначен для обработки множеств, состоящих из строк и колонок таблиц реляционной базы данных. Хотя существуют его расширения, допускающие процедурную обработку. Проектировщики баз данных используют SQL для создания всех физических объектов реляционной базы данных.

Теоретические основы SQL были заложены в известной статье [Кодд], положившей начало развитию теории реляционных БД. Первая практическая реализации была выполнена в исследовательских лабораториях фирмы IBM Chamberlin D.D. и Royce R.F. Промышленное применение SQL было впервые реализовано в СУБД Ingres. Одной из первых промышленных реляционных СУБД является Oracle. По сути дела, реляционная СУБД - это программное обеспечение, которое управляет работой реляционной базы данных.

Первый международный стандарт языка SQL был принят в 1989 г. (SQL-89). В конце 1992 г. был принят новый международный стандарт SQL-92. В настоящее время большинство производителей реляционных СУБД используют его в качестве базового. Однако работы по стандартизации языка SQL далеки от завершения и уже разработан проект стандарта SQL-99, который вводит в обиход языка понятие объекта и разрешает на него ссылаться в операторах SQL. В исходном варианте SQL не было команд управления потоком данных, они появились в недавно принятом стандарте ISO/IEC 9075-5: 1996 дополнительной части SQL.

Каждой конкретной СУБД соответствует своя собственная реализация SQL, в целом поддерживающая определенный стандарт, но имеющая свои особенности. Эти реализации называются диалектами. Так, стандарт ISO/IEC 9075-5 предусматривает объекты, называемые постоянно хранимыми модулями или PSM-модулями (Persistent Stored Modules). В СУБД Oracle расширение PL/SQL является аналогом указанного выше расширения стандарта 1.

Описание основных операторов SQL

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

Весь набор команд SQL можно разбить на следующие группы:

  • команды определения данных ( DDL - Data Defininion Language );
  • команды манипулирования данными ( DML - Data Manipulation Language );
  • команды выборки данных ( DQL - Data Query Language );
  • команды управления транзакциями;
  • команды управления данными.

При выполнении каждая команда SQL проходит четыре фазы обработки:

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

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

Таблица 8.1 содержит список команд SQL в соответствии с принятым стандартом, за исключением некоторых практически не используемых в диалектах команд.

Таблица 8.1. Типичный список команд SQL
Команда Описание
Команды определения данных объектов
ALTER TABLE Изменяет описание таблицы (схему отношения)
CREATE EVENT Создает событие таймера в базе данных
CREATE INDEX Создает индекс для таблицы
CREATE SEQUENCE Создает последовательность
CREATE TABLE Определяет таблицу
CREATE TABLESPACE Создает табличное пространство
CREATE TRIGGER Создает триггер в базе данных
CREATE VIEW Определяет представление на таблицах
DROP INDEX Физически удаляет индекс из баз данных
DROP SEQUENCE Удаляет последовательность
DROP TABLE Физически удаляет таблицу из базы данных
DROP TABLESPACE Удаляет табличное пространство
DROP VIEW Удаляет представление
Команды манипулирвания данными
DELETE Удаляет одну или более строк из таблицы базы данных
INSERT Вставляет одну или более строк в таблицу базы данных
UPDATE Обновляет значения колонок в таблице базы данных
Команды выборки данных
SELECT Выполняет запрос на выборку данных из таблиц и представлений
UNION Объединяет в одной выборке результаты выполнения двух или более команд SELECT
Команды управления транзакциями
COMMIT Завершает транзакцию и физически актуализирует состояние базы данных
ROLLBACK Завершает транзакцию и возвращает текущее состояние базы данных на момент последней завершенной транзакции и контрольной точки
SAVEPOINT Назначает контрольную точку внутри транзакции
Команды управления данными
ALTER DATABASE Изменяет группы хранения или журналы транзакций
ALTER DBAREA Изменяет размер областей хранения базы данных
ALTER PASSWORD Изменяет пароль для доступа к базе данных
ALTER STOGROUP Изменяет состав областей хранения в группе хранения
CHECK DATABASE Проверяет целостность базы данных
CHECK INDEX Проверяет целостность индекса
CHECK TABLE Проверяет целостность таблицы и индекса
CREATE DATABASE Физически создает базу данных
CREATE DBAREA Создает область хранения базы данных
CREATE STOGROUP Создает группу хранения
CREATE SYSNONYM Создает синоним для таблицы или представления
DEINSTALL DATABASE Делает базу данныхх недоступной пользователям вычислительной сети
DROP DATABASE Физически удаляет базы данных
DROP DBAREA Физически удаляет область хранения данных
DROP STOGROUP Удаляет группу хранения
GRANT Определяет привилегии пользователей и разграничение доступа к базе данных
INSTALL DATABASE Делает базу данных доступной пользователям вычислительной сети
LOCK DATABASE Блокирует текущую активную базу данных
REVOKE Отменяет привилегии пользователей и разграничения доступа к базе данных
SET DEFAULT STOGROUP Определяет группу хранения по умолчанию
UNLOCK DATABASE Деблокирует текущую активную базу данных
UPDATE STATISTIK Обновляет статистику для базы данных
Другие команды
COMMENT ON Размещает в системном каталоге комментарии к описанию объектов БД
CREATE SYNONYM Определяет в системном каталоге альтернативные имена для таблиц и представлений БД
DROP SYNONYM Удаляет из системного каталого альтернативные именя для таблиц и представлений БД
LABEL Изменяет метки системных описаний
ROWCOUNT Вычисляет число строк в таблице БД

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

< Лекция 7 || Лекция 8: 123456 || Лекция 9 >
Александра Каева
Александра Каева
Михаил Забелкин
Михаил Забелкин
Евгений Вершинин
Евгений Вершинин
Россия, Нижний Новгород, Нижегородский государственный технический университет, 2008
Aleksandr Arshinskyi
Aleksandr Arshinskyi
Россия