Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
08_SQL.doc
Скачиваний:
9
Добавлен:
22.08.2019
Размер:
147.97 Кб
Скачать

8.3. Функциональные возможности языка sql

Для выполнения своих основных функций по работе с реляционными таблицами язык SQL имеет достаточно богатый и сложный набор команд. Для лучшего понимания все команды языка разбиты на «уровни». В одной из классификаций, предусмотренных стандартом SQL, этот язык разбивается на «базовый», «промежуточный» и «полный» уровни.

Остановимся только на базовом уровне, содержащем около сорока команд. В табл.8.3 приводится подмножество команд базового уровня языка SQL.

Таблица 8.3.

Команда

Назначение

Команды определения данных

CREATE TABLE

Создает структуру таблицы

DROP TABLE

Удаляет таблицу

ALTER TABLE

Изменяет описание структуры таблицы

CREATE VIEW

Создает представление

Команды манипулирования данными

INSERT

Добавляет новые записи в таблицу

DELETE

Удаляет записи из таблицы

UPDATE

Обновляет данные таблицы

Команда извлечения данных

SELECT

Извлекает данные из базы данных

Команды управления транзакциями

COMMIT

Сообщает об успешном окончании транзакции

ROLLBACK

Сообщает о неуспешном окончании транзакции

Команды управления доступом

GRANT

Предоставляет пользователю определенные права доступа

REVOKE

Отменяет определенные права доступа

Команды встроенного SQL

DECLARE, OPEN, FETCH, CLOSE

Реализуют обращения к базе данных из прикладных программ.

Команды определения данных служат для создания и удаления таблиц, а также изменения структуры таблицы, например, для добавления нового поля. С помощью команды CREATE VIEW создается представление, т.е. таблица содержащая данные из других таблиц.

Пример:

Создать представление Заказы_Инфо, содержащее данные о дате заказа, весе заказа. Слева к указанным полям присоединить информацию о клиенте и валюте, которой был оплачен заказ.

CREATE VIEW Заказы_Инфо AS

SELECT Заказы.Дата заказа, Заказы.Вес заказа, Клиенты.Клиент, Банк.Наименование валюты FROM Заказы

LEFT JOIN Клиенты ON Клиенты.Код клиента = Заказы.Код клиента

LEFT JOIN Банк ON Банк.Код валюты=Заказы.Код валюты

Следует обратить внимание, что в команде кроме требуемых полей таблиц необходимо указывать ключевые поля, связывающие таблицы (Клиенты.Код клиента = Заказы.Код клиента Банк.Код валюты=Заказы.Код валюты).

Команды манипулирования данными позволяют изменять данные в реляционной таблице, но не меняют ее структуру.

Команда SELECT была описана выше.

Команды управления транзакциями позволяют обеспечить целостность базы данных.

SQL-транзакция – это несколько последовательных команд SQL, которые должны выполняться как единое целое.

Транзакция либо успешно выполняется, и тогда СУБД фиксирует произведенные изменения базы данных, на внешнем носителе; либо отменяется, и тогда все произведенные изменения СУБД ликвидирует. Таким образом, принцип транзакции «либо все, либо ничего». Примером транзакции может служить перевод денег клиентом банка из одного филиала в другой. Необходимо как единое целое осуществить два действия: списать деньги со счета в одном филиале и занести деньги на счет в другом филиале.

В языке SQL обработка транзакций реализована с помощью двух команд – COMMIT и ROLLBACK. Они управляют изменениями, выполненными группой команд. Команда COMMIT сообщает об успешном окончании транзакции. Она информирует СУБД о том, что транзакция завершена, все ее команды выполнены успешно и противоречия в базе данных не возникли. Команда ROLLBACK сообщает о неуспешном окончании транзакции. Она информирует СУБД о том, что пользователь не хочет завершать транзакцию, и СУБД должна отменить все изменения, внесенные в базу данных в результате выполнения транзакции. В этом случае СУБД возвращает базу данных в состояние, в котором она находилась до выполнения транзакции.

Команды COMMIT и ROLLBACK используются в основном в программном режиме, хотя возможно их использование и в интерактивном режиме.

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

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

  • SELECT – право читать таблицу;

  • INSERT – право добавлять данные в таблицу;

  • UPDATE – право изменять данные таблицы;

  • DELETE – право удалять данные из таблицы;

  • REFERENCES – право определять первичный ключ.

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

Пример:

Дать права на извлечение и обновление данных в таблице Заказы пользователям USER1, USER2,USER3

GRANT SELECT, UPDATE ON Заказы TO USER1, USER2, USER3

Пример:

Запретить обновление данных в таблице Заказы пользователю USER1

REVOKE UPDATE ON Заказы TO USER1

К встроенным относятся команды, предназначенные для реализации обращения к базе данных из прикладных программ, написанных на определенном языке программирования. Для пересылки данных из базы данных в прикладную программу используется временная таблица, называемая SQL-курсором. Команды DECLARE, OPEN, FETCH, CLOSE позволяют управлять SQL-курсором.

8