Материал: Базы данных. учебное пособие. Бокарев Д.И

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

DROP INDEX<имя индекса>

Эта инструкция позволяет удалять созданный ранее индекс с соответствующим именем. Так, например, для уничтожения индекса main_index к таблице CUST достаточно записать инструкцию DROP INDEX main_index.

Кроме таблиц и индексов существуют другие объекты базы данных, например, представления. Представление является "виртуальной" таблицей, содержащей набор столбцов одной или нескольких таблиц. Однако, в отличие от таблицы, представление как совокупность значений в базе данных реально не существует. Представление определяется как запрос на выборку данных, которому присвоили имя и сохранили в базе данных. Представление позволяет пользователю увидеть результаты сохраненного запроса.

Инструкция создания представления имеет формат вида:

CREATE VIEW<имя представления>

[(<имя столбца> [,<имя столбца> ]…)]

AS <оператор SELECT>

При необходимости можно задать имя для каждого столбца создаваемого представления. Список имен столбцов должен содержать столько элементов, сколько столбцов содержится в запросе. Если список имен в инструкции отсутствует, то каждый столбец представления получает имя соответствующего столбца запроса.

Инструкция удаления представления имеет формат вида:

DROP VIEW <имя представления>

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

Можно определить права доступа к таблицам базы данных с помощью инструкций GRAND и REVOKE. Например, инструкция

GRAND INSERT

ON CUST

TO PETROV

разрешает сотруднику Петрову ввод данных в таблицу CUST.

Следующая инструкция отменяет привилегии сотрудника Иванова на изменение данных о клиентах и чтение информации о них

REVOKE UPDATE, SELECT

ON CUST

TO IVANOV

Запросы являются фундаментом SQL. Многие разработчики используют SQL исключительно в качестве инструмента для создания запросов. Поэтому важнейшей инструкцией является инструкция SELECT, которая используется для построения SQL-запросов:

SELECT [ALL | DISTINCT]<список данных>

FROM <список таблиц>

[WHERE <условие отбора>]

[GROUP BY <имя столбца> [,<имя столбца>]... ]

[HAVING <условие поиска>]

[ORDER BY <спецификация> [,<спецификация>]...]

Оператор SELECT позволяет производить выборку и вычисления над данными из одной или нескольких таблиц. В предложении SELECT указывается список возвращаемых столбцов, разделенных запятыми. Для каждого элемента из списка в ответной таблице будет создан один столбец. Ответная таблица может иметь (ALL), или не иметь (DISTINCT) повторяющиеся строки. По умолчанию в ответную таблицу включаются все строки, в том числе и повторяющиеся. Список данных может содержать выражения над столбцами, показывающие, что наряду с выборкой данных выполняются вычисления, результаты которого попадают в новый (создаваемый) столбец ответной таблицы

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

При использовании в списках данных имен столбцов нескольких таблиц для указания принадлежности столбца некоторой таблице применяют конструкцию вида: <имя таблицы>.<имя столбца>.

Предложение WHERE задает условия, которым должны удовлетворять строки в результирующей таблице. Вслед за ключевым словом WHERE указывается логическое выражение <условие отбора>. Его элементами могут быть имена столбцов, операции сравнения, арифметические операции, логические операции (И, ИЛИ, НЕТ), скобки, специальные функции LIKE и т.д.

Предложение GROUP BY содержит список столбцов, которые используются для группировки строк. Группой называются строки с совпадающими значениями в столбцах, перечисленных за ключевыми словами GROUP BY. Для сгруппированных данных можно использовать статистические функции: AVG (среднее значение в группе), МАХ (максимальное значение в группе), MIN (минимальное значение в группе), SUM (сумма значений в группе), COUNT (число значений в группе).

Вслед за предложением HAVING указывается логическое выражение <условия поиска>, определяющее, какие из отобранных и сгруппированных строк будут отображаться в результирующем наборе данных. Правила записи аналогичны правилам формирования <условия отбора> предложения WHERE.

Предложение ORDER BY задает порядок сортировки результирующего множества строк. Обычно каждая <спецификация> аналогична соответствующей конструкции оператора CREATE INDEX и представляет собой конструкцию вида: <имя столбца> [ASC | DESC].

Инструкция на изменения строк имеет формат вида:

UPDATE <имя таблицы>

SET <имя столбца> = {<выражение> | NULL}

[,SET <имя столбца> = {<выражение> | NULL}... ]

[WHERE <условие>]

Инструкция UPDATE обновляет значения в определенных предложением SET столбцах таблицы для тех строк, которые удовлетворяют условию, заданному предложением WHERE.

Новые значения столбцов могут быть пустыми (NULL), либо вычисляться в соответствии с арифметическим выражением.

Инструкция для вставки новых строк имеет форматы двух видов:

INSERT INTO <имя таблицы> [(<список столбцов>)] VALUES (<список значений>)

и

INSERT INTO <имя таблицы> [(<список столбцов>)]

<предложение SELECT>

В первом формате оператор INSERT предназначен для одной строки с заданными значениями в столбцах. Порядок перечисления имен столбцов должен соответствовать порядку значений, перечисленных в списке предложения VALUES. Если <список столбцов> опущен, то в <списке значений> должны быть перечислены все значения в порядке столбцов структуры таблицы.

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

Инструкция удаления строк имеет формат вида:

DELETE FROM <имя таблицы> [WHERE <условие>]

Результатом выполнения оператора DELETE является удаление из указанной таблицы строк, которые удовлетворяют условию, определенному предложением WHERE. Если необязательный операнд WHERE опущен, т.е. условие отбора удаляемых записей отсутствует, удалению подлежат все записи таблицы.

6.2. Язык qbe

Кроме SQL применяется QBE (Query By Example) – язык запросов по образцу. Оба языка являются непроцедурными, т.е. описывают свойства результата ("что надо сделать"), а не алгоритм решения задачи ("как это сделать").

Для манипулирования данными указанные языки имеют практически одинаковые возможности. Главное отличие между ними заключается в способе формирования запросов: язык QBE предполагает ручное или визуальное формирование запроса, в то время как использование SQL означает программирование запроса.

Язык QBE позволяет создавать запросы к БД путем заполнения предлагаемой СУБД запросной формы. Традиционные компьютерные языки являются текстовыми, в них решение задач формулируется в виде символьных строк. QBE является графическим языком, в котором запросы формулируются посредством графического представления таблиц базы данных. Такой способ задания запросов обеспечивает высокую наглядность и не требует знания программирования – достаточно описать образец ожидаемого результата. В каждой из современных реляционных СУБД имеется свой вариант языка QBE, незначительно отличающийся от первого описания QBE, предложенного М.М. Злуффом в 1975-1977 гг. Помещая символы в определенные места в столбцах таблицы – шаблона запроса, пользователь может определять условия отбора строк для запроса, группировки данных, формат вывода данных, операции обновления данных. На языке QBE можно создавать однотабличные и многотабличные (выбирающие или обрабатывающие данные из нескольких связанных таблиц) запросы. Запросная форма имеет вид таблицы-шаблона, имя и названия полей которой совпадают с именем и названиями полей соответствующей исходной таблицы. Чтобы узнать имена доступных таблиц БД, в языке QBE предусмотрен запрос на выборку имен таблиц. Названия полей исходной таблицы могут вводиться в шаблон вручную или автоматически.

QBE предлагает пользователю для создания запроса заполнение таблиц-шаблонов. В первом столбце таблицы-шаблона выводится имя таблицы, во всех остальных – имена столбцов. После команды в языке QBE ставится точка.

Таблица 2

Инструкции языка QBE

Название

Назначение

Р .

Вывод значений заданного столбца. При выполнении запроса с условием сравнения (простым или составным) применяют математические символы «>» и «<». Если шаблоне запроса команда вывода «P.» стоит в первом столбце шаблона, то выводятся все данные выбранной строки. Если два условия стоят на одной строке шаблона, то для выбора строки необходимо выполнение обоих условий (логическая операция И). Условия, записанные на двух разных строках шаблона запроса, соответствуют условиям, объединенным логическим оператором ИЛИ. Команда вывода «P.» расположена на обеих строках и в каждом из столбцов, которые должны выводится.

Блок условий, обозначаемый CONDITIONS содержит любые требуемые ограничения данных. При этом вводится переменная, например _S, которая является элементом-образцом и обозначает неопределенное значение в столбце таблицы. Возможно сравнение данных с элементом образцом. Элемент-образец может связывать две таблицы - в выбранной паре строк из двух таблиц в соответствующих столбцах должно находиться одно и то же значение.

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

Продолжение табл. 2

При записи выражений на QBE могут использоваться встроенные функции: CNT (количество), SUM (сумма), AVG (среднее), MIN (минимум), MAX (максимум), UN (уникальный), ALL (все значения, в том числе и повторяющиеся).

В некоторых запросах можно сгруппировать строки, имеющее одинаковое значение в одном или нескольких столбцах. Одна такая группа формируется на каждое значение заданного столбца. Затем к группе можно применить статистические функции. «G.» обозначается столбец, по которому производится группировка.

I.

Вставка данных

D.

Удаление данных

U.

Модификация данных. Изменение данных можно выполнять с вычислениями.