ВУЗ:
Составители:
Рубрика:
21
Операция Описание Синтаксис РА Синтаксис РИ
Деление На входе – две отноше-
ния Т1 и Т2, причем ат-
рибуты Т2 должны со-
ставлять подмножество
атрибутов Т1. РО Т1 / Т2
содержит те картежи, ко-
торые входят в Т1 с
КАЖДЫМ картежом из
Т2
Т1 / Т2
{r.поле1 : r IN Т1
AND FORALL s IN
Т2 (EXISTS t IN Т1
(t.п1=s.п2) AND
(r.п1=t.п1)) }
SQL – СТРУКТУРИРОВАННЫЙ ЯЗЫК ЗАПРОСОВ
В предыдущих параграфах рассматривались теоретические аспекты
процесса обработки информации в РБД. Перейдем к обзору одной мощной и
общепринятой реализации этого подхода – Структурированного Языка За-
просов (SQL).
SQL был разработан IBM в конце 1970-х гг. С тех пор в язык, конечно,
вносились изменения и усовершенствования, однако его принципы остались
прежними. Прежде всего, SQL – непроцедурный язык высокого уровня. При-
кладная программа не сообщает Машине БД, как выполнить задачу, а фор-
мулирует, что должно содержаться в результатах (декларативный подход).
Первый стандарт языка был принят в 1989 г. Все известные коммерческие
продукты в настоящее время поддерживают, по крайней мере, этот стандарт.
Однако уже в 1992 г. был принят новый стандарт SQL, в котором, в частно-
сти, были реализованы напрямую теоретико-множественные операции РА
(до этого их можно было моделировать на основе аналогии РА с РИ, а РИ с
SQL). Тем не менее, SQL остается непроцедурным языком. Третий стандарт
SQL, направленный на сближение языка с объектно-ориентированным под-
ходом, был принят в 1998 г. Различные производители БД вносят в синтаксис
SQL небольшие изменения. Однако как правило, стандартный запрос SQL
без труда переносится на различные платформы.
С помощью SQL можно не только обрабатывать информацию запроса-
ми, но и управлять данными (вставка, модификация, удаление записей, сор-
тировка), а также осуществлять сопровождение БД (описание типов данных и
структуры таблиц, удаление, изменение таблиц, индексирование, управление
правами доступа к данным).
Имеются два SQL: Интерактивный и Вложенный. Большей частью
обе формы работают одинаково, но используются различно.
Интерактивный SQL используется для функционирования непосред-
ственно в базе данных. В этой форме SQL введенная вами команда сейчас же
выполняется, и результат (если он существует) немедленно отображается.
Вложенный SQL состоит из команд языка, помещенных внутри про-
грамм, которые обычно написаны на некотором другом языке (типа C++,
22
Паскаля или же PHP, Perl и пр., часто СУБД предоставляет свое процедурное
расширение – язык Transact SQL от MS SQL Server или PL/SQL от ORACL).
Это делает программы более мощными и эффективными. Однако допуская
другие языки, приходится иметь дело со структурой SQL и стилем управле-
ния данными, который требует некоторых расширений к интерактивному
SQL.
В данном пособии речь пойдет об интерактивной форме SQL. Однако
все, что вы узнаете относительно интерактивного SQL, применимо и к вло-
женной форме.
ТИПЫ ДАННЫХ
В РМД различают понятие базового типа данных и понятие домена.
Однако большинство современных реализаций SQL не используют понятие
домена напрямую. Полю приписывается только один из базовых типов.
Правда, частичная реализации понятия домена во многих современных
СУБД заложена возможностью определения ограничений и правил на значе-
ния данных в поле, но за семантической стороной вопроса по-прежнему сле-
дит пользователь СУБД, поскольку для операций сравнения СУБД всегда
учитывает только базовый тип поля.
Более того, определение самих базовых типов данных является обла-
стью, в которой большинство коммерческих СУБД проявляют свою индиви-
дуальность. Обычно допускается хранение символьных, числовых данных,
битовых строк, специализированных числовых данных (таких, как “деньги”),
а также специальных “темпоральных” данных (дата, время, временной ин-
тервал). Реальные названия типов и их определения сильно зависят от кон-
кретной СУБД.
СОЗДАНИЕ ПРОСТЫХ ЗАПРОСОВ В SQL
Запрос – это вопрос, который прикладная программа задает БД и полу-
чает ответ в виде набора записей, отвечающих определенным критериям и
содержащих информацию из выбранных полей. Запросы не предполагают
длительного хранения получаемых данных. Ответные наборы данных (таб-
лицы, не обязательно являющиеся отношениями), если не указано обратное,
всегда являются динамическими структурами. Их также называют
DYNASET.
За извлечение информации из БД отвечает оператор SELECT, который,
помимо этого, способен выполнять еще массу функций. Его полный вид мо-
жет быть описан следующим образом:
SELECT [ALL | DISTINCT] select_list
[INTO [new_table_name]]
[FROM <table_name | view_name>[(optimizer_hints)]
[[, <table_name2 | view_name2>[(optimizer_hints)]
Страницы
- « первая
- ‹ предыдущая
- …
- 9
- 10
- 11
- 12
- 13
- …
- следующая ›
- последняя »