Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛБ SQL 1.docx
Скачиваний:
0
Добавлен:
20.11.2019
Размер:
62.12 Кб
Скачать

2 Операторы манипулирования данных dml

Модификация данных может выполняться с помощью операторов SELECT(выбрать), DELETE (удалить), INSERT (вставить) и UPDATE (обновить). Подобно оператору SELECT они могут оперировать как базовыми таблицами, так и представлениями. Однако по ряду причин не все представления являются обновляемыми.

2.1 Оператор вставки данных insert

Оператор INSERT имеет один из следующих форматов:

INSERT INTO <базовая таблица | представление> [(<столбец> [,<столбец>] ...)]

VALUES (<константа>|<переменная> [,<константа>| <переменная>] ...);

или

INSERT

INTO <базовая таблица | представление> [(<столбец> [,<столбец>] ...)] <подзапрос>;

В первом формате в таблицу вставляется строка со значениями полей, указанными в перечне фразы VALUES (значения), причем i-е значение соответствует i-му столбцу в списке столбцов (столбцы, не указанные в списке, заполняются NULL-значениями). Если в списке VALUES фразы указаны все столбцы модифицируемой таблицы и порядок их перечисления соответствует порядку столбцов в описании таблицы, то список столбцов в предложении INTO можно опустить.

Задание Добавить нового продавца:

INSERT INTO Продавцы VALUES (1009, 'Вильсон', 'Лондон', 0.12);

Замечание. Команды DML не производят никакого вывода, но СУБД должна дать некоторое подтверждение того, что данные были использованы. Имя таблицы (в нашем случае - Продавцы) должно быть предварительно определено в команде CREATE TABLE (см. п.4.5 ), а каждое значение, заданное в предложении значений VALUES, должно совпадать с типом данных столбца, в который оно вставляется.

Во втором формате сначала выполняется подзапрос, т.е. по предложению SELECT в памяти формируется рабочая таблица, а потом строки рабочей таблицы загружаются в модифицируемую таблицу. При этом i-й столбец рабочей таблицы (i-й элемент списка выбора SELECT) соответствует i-му столбцу в списке столбцов модифицируемой таблицы. Здесь также при выполнении указанных выше условий может быть опущен список столбцов фразы INTO.

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

Пример 4.46 INSERT INTO Лондон_1 SELECT * FROM Продавцы WHERE city = 'Лондон';

Здесь выбираются все значения, произведенные запросом - все строки из таблицы Продавцы со значениями city = ‘Лондон’ - и помещаются в таблицу, называемую Лондон_1. Эта таблица должна отвечать следующим условиям:

  • она должна уже быть создана командой CREATE TABLE.;

  • она должна иметь четыре столбца, которые совпадают с таблицей Продавцы по типу данных.

Задание

1. Создать таблицу Порядки(заказы)

номер – ONUM; сумма заказа – AMT; дата оформления заказа – ODATE; номер заказчика, который оплатил данный заказ, - CNUM; номер продавца, который обслуживает данный заказ, - SNUM.

2. Заполнить таблицы Продавцы, Заказчики, Порядки следующими данными

Таблица 4.2 - Продавцы

SNUM

SNAME

CITY

COMM

1001

Пил

Лондон

0.12

1002

Серенс

Мехико

0.13

1004

Мотье

Лондон

0.11

1007

Рифкин

Барселона

0.15

1003

Аксельрод

Париж

0.10

Таблица 4.3 - Заказчики

CNUM

CNAME

CITY

RATING

SNUM

2001

Хофман

Лондон

100

1001

2002

Джованни

Рим

200

1003

2003

Луи

Мехико

200

1002

2004

Грасс

Берлин

300

1002

2006

Клеменс

Лондон

100

1001

2008

Киснерос

Мехико

300

1007

2007

Перера

Рим

100

1004

Таблица 4.4 - Порядки

ONUM

AMT

ODATE

SNUM

SNUM

3001

18.67

10/03/2003

2008

1007

3003

767.19

10/03/2003

2001

1001

3002

1900.10

10/03/2003

2007

1004

3005

5160.45

10/03/2003

2003

1002

3006

1098.16

10/03/2003

2008

1007

3009

1713.23

10/04/2003

2002

1003

3007

75.76

10/04/2003

2004

1002

3008

4723.00

10/05/2003

2006

1001

3009

1309.95

10/06/2003

2004

1002

3011

9891.88

10/06/2003

2006

1001