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

3.4.1.14.Объединение запросов – union

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

SELECT R.*

FROM RASHOD R

WHERE R.TOVAR CONTAINING ‘Сахар’

UNION

SELECT R.*

FROM RASHOD R

WHERE R.KOLVO >= 100

3.4.1.15.Использование is null

Если требуется выдать записи, в которых некоторый столбец (или результат вычисления выражений) имеет значение NULL, то в условии достаточно указать предложение:

<значение> IS [NOT] NULL

Пример.

Показать все факты отгрузки товаров со склада, для которых не указан покупатель.

SELECT * FROM RASHOD

WHERE POKUP IS NULL

3.4.1.16.Использование операции сцепления строк

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

<строковое_выражение1> || <строковое_выражение2>

Операцию можно использовать как после слова SELECT, так и в предложении WHERE

Пример.

Показать в одном столбце имена покупателей и названия их городов:

SELECT POKUP || ‘ (‘ || GOROD || ‘)’

FROM POKUPATELI

COLUMN1

ООО «Альфа» (Москва)

ЗАО «Продторг» (Самара)

…..

…..

3.4.2.Оператор insert

Формат оператора добавления записей

INSERT INTO <Объект> [ (столбец1 [ , столбец2 …]) ]

{VALUES ( <значение1> [,<значение2> …]) | <оператор SELECT>}

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

Поставить в соответствие столбцам списки значений можно двумя способами

  • Явное указание значений после слова VALUES

  • Формирование значений при помощи оператора SELECT.

3.4.2.1.Явное указание списка значений

INSERT INTO <Объект> [ (столбец1 [ , столбец2 …]) ]

VALUES ( <значение1> [,<значение2> …])

Пример.

INSERT INTO RASHOD (N_RASH, DAT_RASH, KOLVO, TOVAR)

VALUES (45 ,”20.01.2005”, 100, “Сахар”, “Саяны”)

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

INSERT INTO RASHOD

VALUES (45 ,”20.01.2005”, 100, “Сахар”, “Саяны”)

3.4.2.2.Формирование значений при помощи оператора select

INSERT INTO <Объект> [ (столбец1 [ , столбец2 …]) ] <оператор SELECT>

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

Пример.

Пусть в БД определена таблица RASHOD_DATA, по составу и порядку следования полей аналогичная таблице RASHOD. Тогда ежедневная выгрузка записей из таблицы RASHOD в таблицу RASHOD_DATA за заданную дату может быть реализована следующим оператором:

INSERT INTO RASHOD_DATA

SELECT *

FROM RASHOD

WHERE DAT _RASH = “20.02.2006”

3.4.3.Оператор UPDATE

Формат оператора изменения записей

UPDATE <Объект>

SET столбец1 = <значение1> [ , столбец2 = <значение 2> …]

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

Пример.

UPDATE RASHOD

SET DAT_RASH = “24.01.2005”, KOLVO=KOLVO+2

WHERE DAT_RASH = “20.01.2005”

Замечание.

Если опустить условие WHERE то в таблице будут изменены все записи!!!

3.4.4.Оператор DELETE

Формат оператора удаления записей

DELETE FROM <Объект>

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

Пример.

DELETE FROM RASHOD

WHERE (DAT_RASH = “20.01.2005”) AND (TOVAR = “Сахар”)

Замечание.

Если опустить условие WHERE то в таблице будут удалены все записи!!!

3.4.5.Работа с просмотрами (VIEW)

3.4.5.1.Понятие просмотра как виртуальной таблицы

Формирование записей в просмотре определяется оператором SELECT. Для создания просмотра применяется оператор CREATE VIEW:

CREATE VIEW ИмяПросмотра [ (столбец_view [, столбец_view1 … ] ) ]

AS < оператор_select > [WITH CHECK OPTION]

Необязательный параметр WITH CHECK OPTION определяет, допускать ли для обновляемых просмотров ввод записей, не удовлетворяющих условию формирования просмотра.

Пример:

CREATE VIEW FULL_RASHOD AS

SELECT R.DAT_RASH, R.TOVAR, R.KOLVO, T.ZENA

WHERE R.TOVAR = T.TOVAR

После этого к нему можно обращаться как к обычной таблице БД:

SELECT * FULL_RASHOD