ALTER TABLE PROD DROP STORE
Инструкция удаления таблицы имеет формат вида:
DROP TABLE <имя та6лицы>
Например, для удаления таблицы с именем SALE достаточно записать оператор вида:
DROP TABLE SALE
Одним из структурных элементов физической памяти является индекс. Индекс – это средство, обеспечивающее быстрый доступ к строкам таблицы на основе значений одного или нескольких столбцов. В индексе хранятся значения данных и указатели на строки, где эти данные встречаются. Данные в индексе располагаются в убывающем или в возрастающем порядке, чтобы СУБД могла быстро найти требуемое значение. Затем по указателю СУБД сможет быстро определить строку, содержащую требуемое значение. Инструкциясоздания индекса имеет формат вида:
CREATE [UNIQUE] INDEX <имя индекса> ОN <имя таблицы> (<имя столбца> [ ASC| DESC]
[,<имя столбца> [ASC| DESC],... )
Оператор позволяет создать индекс для одного или нескольких столбцов заданной таблицы с целью ускорения выполнение запросных и поисковых операций с таблицей. Для одной таблицы можно создать несколько индексов.
Необязательная опция UNIQUE обеспечивает запрет задания совпадающих значений для индекса. По существу, создание индекса с указанием признака UNIQUE означает определение ключа в созданной ранее таблице.
При создании индекса можно задать порядок автоматической сортировки значений в столбцах – в порядке возрастания ASC (по умолчанию), или в порядке убывания DESC. Для разных столбцов можно задавать различный порядок сортировки.
Пример 3.31. Создание индекса
Пусть из таблице CUST часто извлекаются данные по названию фирм-клиентов. Можно создать индекс main_index для сортировки названий фирм-клиентов в алфавитном порядке по возрастанию. Оператор создания индекса может иметь вид:
CREATE INDEX main_index ON CUST (CUST_NAME)
Инструкция удаления индекса имеет формат вида:
DROP INDEX<имя индекса>
Эта инструкция позволяет удалять созданный ранее индекс с соответствующим именем. Так, например, для уничтожения индекса main_index к таблице CUST достаточно записать инструкцию DROP INDEX main_index.
Кроме таблиц и индексов существуют другие объекты базы данных, например, представления. Представление является "виртуальной" таблицей, содержащей набор столбцов одной или нескольких таблиц. Однако, в отличие от таблицы, представление как совокупность значений в базе данных реально не существует. Представление определяется как запрос на выборку данных, которому присвоили имя и сохранили в базе данных. Представление позволяет пользователю увидеть результаты сохраненного запроса.
Инструкциясоздания представления имеет формат вида:
CREATE VIEW<имя представления>
[(<имя столбца> [,<имя столбца> ]…)]
AS <оператор SELECT>
При необходимости можно задать имя для каждого столбца создаваемого представления. Список имен столбцов должен содержать столько элементов, сколько столбцов содержится в запросе. Если список имен в инструкции отсутствует, то каждый столбец представления получает имя соответствующего столбца запроса.
Пример 3.32. Создание представления
Необходимо создать представление c именем CUSTINFтаблицы CUST, включающее только названия клиентов и их номера.
CREATE VIEW CUSTINF
AS SELECT CUST_NUM, CUST_NAME
FROM CUST
Создать представление ORDER_CUS, показывающее заказы сделанные клиентом 3105.
CREATE VIEW ORDER_CUS
AS SELECT
FROM ORDERS
WHERE CUST_NUM=3105
Инструкцияудаления представления имеетформат вида:
DROP VIEW <имя представления>
Оператор позволяет удалить созданное ранее представление. Заметим, что при этом таблицы, участвующие в запросе, удалению не подлежат. Удаление представления ORDER_CUS производится инструкцией вида:
DROP VIEW ORDER_CUS
Представления широко применяются для ограничения доступа пользователей ко всей информации в таблицах базы данных.
Пример 3.33. Использование инструкции GRAND и REVOKE
Можно определить права доступа к таблицам базы данных с помощью инструкций 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].
Пример 3.34. Выбор строк
Пусть требуется вывести названия товаров и их цену. Инструкцию выбора можно записать следующим образом:
SELECT PROD_NAME, PRICE
FROM PROD
Пример 3.35. Выбор с условием
Вывести названия товаров, цена которых больше 100$. Инструкцию SELECT для этого запроса можнозаписать так:
SELECT PROD_NAME
FROM PROD
WHERE PRICE>100
Пример 3. 36.Выбор с сортировкой
Строки результатов запроса, как и строки таблицы базы данных, не имеют определенного порядка. Включив в инструкцию SELECT предложение ORDER BY, можно отсортировать результаты запроса.
Пусть требуется вывести название клиентов и годовой объем заказов. Последний столбец отсортировать по возрастанию. По умолчанию данные сортируются по возрастанию.