Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Delph_nov11.doc
Скачиваний:
9
Добавлен:
01.04.2025
Размер:
2.45 Mб
Скачать

Соединение union

Запрос

select fam,im,otch sym_dopl ,0 as sym_opl from osndan a left join dopl b on a.tn=b.tn

union all

select fam,im,otch 0,sym_opl from osndan c left join opl d on c.tn=d.tn

order by fam,im,otch

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

fam

im

otch

Sym_dopl

Sym_opl

Иванов

Иван

Иванович

100 000

0

Иванов

Иван

Иванович

100 000

0

Иванов

Иван

Иванович

0

100 000

Петров

Петр

Петрович

Петров

Петр

Петрович

Петрова

Екатерина

Павловна

Петрова

Екатерина

Павловна

0

100 000

Сидоров

Сергей

Юрьевич

150 000

0

Сидоров

Сергей

Юрьевич

150 000

Примечание: при отсутствии после UNION слова ALL выведутся только все неповторяющиеся записи.

Модификация записей Вставка записи

Вставка новой записи в таблицу осуществляется оператором INSERT, который может иметь вид:

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

В списке перечисляются только те поля, значения которых известны. Остальные могут опускаться. Для пропущенных полей значения берутся по умолчанию (если значения по умолчанию заданы) или поля остаются пустыми (NULL). Например

INSERT INTO osndan(fam, im, otch, sex, datar, mestor)

Values(‘Орлов’,’Александр’,’Иванович’,’м’,’23.04.1981’,’Гродно’)

В том примере не указан табельный номер tn, который подставится автоматически, т.к. тип у этого поля Autoincrement, которое наращивается автоматически.

На практике вместо конкретных значений используются параметры, в которые значения передаются программно, например:

INSERT INTO osndan(fam, im, otch, sex, datar, mestor)

VALUES(:fam, :im, :otch, :sex, :datar, :mestor)

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

INSERT INTO <имя таблицы> <оператор SELECT>

Пусть, например, Вы создали таблицу m_osndan, в которую будут входить слушатели мужского пола и хотите заполнить ее соответствующими записями из таблицы osndan. Это можно сделать одним оператором:

INSERT INTO m_osndan SELECT * FROM osndan WHERE sex=’м

Таблица m_osndan сразу заполнится множеством соответствующих записей из osndan.

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