- •Элементы языка sql
- •Ddl (Data Definition Language) - операторы определения объектов базы данных:
- •Dml (Data Manipulation Language) - операторы манипулирования данными:
- •Dcl (Data Control Language) - операторы контроля данных, защиты и управления данными:
- •Синтаксис sql
- •Типы данных
- •1 Операторы определения объектов базы данных ddl
- •1.1 Операторы определения таблицы
- •4.5.2 Оператор определения представлений create view
- •2 Операторы манипулирования данных dml
- •2.1 Оператор вставки данных insert
- •Задание
- •1. Создать таблицу Порядки(заказы)
- •2. Заполнить таблицы Продавцы, Заказчики, Порядки следующими данными
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 |