Введение в SQL и его инструментарий
Цель: рассмотреть SQL и его инструментарий
План занятия:
1. SQL и его история
2. Описание основных операторов SQL
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. Работа оптимизатора основана на сборе статистики о выполняемых
командах и выполнении эквивалентных алгебраических преобразований с отношениями
базы данных. Такая статистика сохраняется в системном каталоге базы данных.
Системный каталог является словарем данных для каждой базы данных и содержит
информацию о таблицах, представлениях, индексах, колонках, пользователях и
их привилегиях доступа. Каждая база данных имеет свой системный каталог, который
представляет совокупность предопределенных таблиц базы данных.