Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Умк_Базы.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
3.2 Mб
Скачать

5.1.2. Операторы языка sql

Предположим, что мы работаем с базой данных, обладающей схемой СОТРУДНИКИ (СОТР_НОМ, СОТР_ИМЯ, СОТР_ЗАРП, ОТД_НОМ) и ОТДЕЛЫ (ОТД_НОМ, НАЧ_ОТД, ФОНД_ЗАРПЛАТЫ_ОТДЕЛА), и хотим узнать имена и номера сотрудников, являющихся начальниками отделов с фондом зарплаты больше 250.

Если бы для формулировки такого запроса использовалась реляционная алгебра, то мы получили бы алгебраическое выражение:

Rrez = СОТРУДНИКИ [СОТР_НОМ=((ОТДЕЛЫ [ФОНД_ЗАРПЛАТЫ_ОТДЕЛА > 250]) [НАЧ_ОТД]) ] ОТДЕЛЫ [СОТР_ИМЯ, НАЧ_ОТД ]

которое читалось бы, например, следующим образом:

  • ограничить отношение ОТДЕЛЫ по условию ФОНД_ЗАРПЛАТЫ_ОТДЕЛА > 250;

  • спроецировать результат предыдущей операции на атрибут ОТД_НАЧ.

  • выполнить соединение отношений СОТРУДНИКИ и ОТДЕЛЫ по условию СОТР_НОМ = НАЧ_ОТД;

  • спроецировать результат предыдущей операции на атрибут СОТР_ИМЯ, НАЧ_ОТД.

Мы четко сформулировали последовательность шагов выполнения запроса, каждый из которых соответствует одной реляционной операции. Если же сформулировать тот же запрос с использованием SQL, которому посвящается этот раздел, то мы получили бы формулу (выражение):

SELECT (СОТР_ИМЯ, НАЧ_ОТД)

FROM ОТДЕЛЫ, СОТРУДНИКИ

WHERE СОТР_НОМ = НАЧ_ОТД AND ФОНД_ЗАРПЛАТЫ_ОТДЕЛА > 250;

В этой формулировке мы указали лишь характеристики результирующего отношения, но ничего не сказали о способе его формирования. В этом случае система должна сама решить, какие операции и в каком порядке нужно выполнить над отношениями СОТРУДНИКИ и ОТДЕЛЫ.

Существуют два вида (формы) SQL: ИНТЕРАКТИВНЫЙ и ВСТРОЕННЫЙ. Конструкции этих форм работают одинаково, но используются различно. Интерактивный SQL используется для функционирования непосредственно в БД, чтобы производить вывод на экран дисплея или принтер информацию из БД для использования ее пользователем. В этой форме SQL, когда Вы введете команду, она сейчас же выполнится, и можно увидеть вывод - немедленно.

Встроенный (вложенный) SQL состоит из команд SQL, помещенных внутри другой программной среды. То есть, интерфейс обеспечивает среда другого языка, а SQL выполняет запросы, поступающие из программы. В чистом виде это реализовано, например, в среде Delphi, PHP, а FoxPro даже включает операторы SQL в автономный (базовый) язык.

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

Независимо от вида SQL (согласно рекомендации ANSI), SQL состоит из следующих разделов:

-Язык Определения Данных (ЯОД или DDL),

-Язык Манипулирования Данными (ЯМД или DML),

-Язык Управления Данными (DCL).

Последний раздел может включаться в ЯМД. Первый раздел служит для определения схем данных (таблиц), второй – для манипуляций данными, которые выполняются через запросы к базе данных.

Data Definition Language (DDL).

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

Операторы DDL. Таблица 5.1.

Оператор

Описание

CREATE TABLE

Добавление новой таблицы к базе данных

DROP TABLE

Удаление таблицы из базы данных

ALTER TABLE

Изменение структуры имеющейся таблицы

CREATE VIEW

Добавление нового представления к базе данных

DROP VIEW

Удаление представления

CREATE INDEX

Создание нового индекса

DROP INDEX

Удаление существующего индекса

Data Manipulation Language (DML).

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

Операторы DML. Таблица 5.2.

Оператор

Описание

SELECT

Выбор данных

INSERT

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

DELETE

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

UPDATE

Обновление данных

Иногда оператор SELECT относят к отдельной категории Data Query Language (DQL).

Transaction Control Language (TCL).

Операторы данного класса (см. табл. 5.3) применяются для управления изменениями, выполняемыми группой операторов DML.

Операторы TCL. Таблица 5.3 .

Оператор

Описание

COMMIT

Завершение транзакции и сохранение изменений в базе данных

ROLLBACK

Откат транзакции и отмена изменений в базе данных

SET TRANSACTION

Установка параметров доступа к данным в текущей транзакции

Data Control Language (DCL).

Операторы Data Control Language (см. табл. 5.4), иногда называемые операторами Access Control Language, применяются для осуществления административных функций, присваивающих или отменяющих право (привилегию) использовать базу данных, таблицу базы данных, а также выполнять те или иные операторы SQL.

Операторы DCL. Таблица 5.4.

Оператор

Описание

GRANT

Присвоение привилегии

REVOKE

Отмена привилегии

Все операторы SQL имеют вид, представленный на рис.5.1.

Рис.5.1 Структура оператора SQL