114
Часть II. Структурированный язык запросов SQL
ный ANSI/ ISO. Однако существуют и другие важные стандар-
ты SQL, включая реализацию в системе DB2 компании ЮМ, и
стандарт X/OPEN для SQL в среде UNIX.
В 1982 году началась работа ANSI над официальным стандар-
том языка реляционных БД, и комитет остановил свой выбор на
SQL. В основу стандарта был положен SQL системы DB/2, несмотря
на то, что он содержал в себе ряд существенных отличий от этого
диалекта языка. После нескольких доработок, в 1986 году стандарт
был официально утвержден как стандарт ANSI номер Х3.135, а в
1987 году - в качестве стандарта ISO. Затем стандарт ANSI/ISO был
принят правительством США, как FTPS - федеральный стандарт
США по обработке информации, который несколько переработан-
ный в 1989 году, обычно называют стандартом SQL-89 или SQL1.
Отличия между диалектами SQL в СУБД различных производите-
лей не помешали комитету: он обошел некоторые из них, не стан-
дартизировав определенные части языка. Это позволило объявить
большое число реализаций SQL совместимыми со стандартом, од-
нако сделало сам стандарт относительно слабым. По этой причине
ANSI продолжил свою работу и создал проект нового, более жест-
кого стандарта SQL2, а для следующего за ним стандарта SQL3 бы-
ли предложены другие серьезные изменения. В результате предло-
женные стандарты SQL2 и SQL3 оказались еще более противоречи-
выми, чем исходный стандарт. Стандарт SQL2 утвержден в ANSI и
окончательно принят в октябре 1992 года.
Управление базами данных с помощью SQL
Как уже было замечено выше, реляционная БД - это связанная
информация, сохраняемая в двумерных таблицах со строками и
столбцами. Каждая строка, в терминах СУБД обычно называемая
записью, будет соответствовать определенной особенности дан-
ных, например, набору информации об успеваемости конкретно-
го студента по тому или иному учебному предмету. Каждый
столбец таблицы, называемый полем, будет содержать значение
для каждого типа данных - например, имени студента, представ-
ляемого в каждой строке. Таким образом, основой реляционной
БД является двумерная таблица с информацией.
Однако реляционные БД редко состоят из одной таблицы. Для
выполнения более сложных и мощных операций с данными соз-
дают несколько таблиц взаимосвязанной информации. Мощность
БД зависит от связи, которую определяют между фрагментами
Глава 2.1. Введение в SQL
115
информации, а не от самого этого фрагмента. При этом для под-
держания максимальной гибкости системы, строки таблицы не
должны находиться ни в каком определенном порядке. В систе-
мах с реляциотшой БД имеется мощная функция упорядочивания
(индексирования) информации с возможностью последующего ее
восстановления.
В таблицах БД необходимо иметь столбец, который бы уникаль-
но идентифицировал каждую строку. Обычно этот столбец содер-
жит номер, например, номер студенческого билета. Такой уникаль-
ный столбец (или уникальная группа столбцов), используемый, что-
бы идентифицировать каждую строку и хранить все строки отдель-
но, называется первичным ключом таблицы.
Первичные ключи таблицы важный элемент в структуре
БД. Они являются основой системы записи в файл; и когда
возникает необходимость найти определенную строку в таб-
лице, то к ней ссылаются по этому первичному ключу. Кроме
того, первичные ключи гарантируют, что данные имеют опре-
деленную целостность. Если первичный ключ правильно ис-
пользуется и поддерживается, то всегда будет доступна ин-
формация о том, что нет пустых строк таблицы и что каждая
строка отличается от любой другой строки.
В отличие от записей, поля таблицы упорядочиваются и име-
нуются. Это означает, что каждый столбец данной таблицы дол-
жен иметь уникальное имя, чтобы избежать неоднозначности.
Лучше всего, если эти имена указывают на содержание поля.
SQL обычно работает в компьютерных системах, которые
имеют более одного пользователя, и, следовательно, возникает
необходимость различать их между собой. Обычно в такой системе
каждый пользователь имеет некий код проверки прав, который его
идентифицирует. В начале сеанса с компьютером, пользователь
входит в систему (регистрируется), сообщая компьютеру опреде-
ленный Ш (идентификатор). Любое количество людей, исполь-
зующих тот же самый Ш доступа, являются отдельными пользова-
телями; и аналогично, один человек может представлять большое
количество пользователей в разное время, используя различные
идентификаторы.
Действия в большинстве сред SQL разрешены в соответствии
со специальным идентификатором, который точно определяет
пользователя. Таблица или другой объект принадлежит пользова-
телю, который имеет над ним полную власть. При этом пользова-
тель может иметь привилегии для выполнения действий над объ-