
Операторы манипуляции данными
Следующая группа операторов предназначена для манипулирования
данными в таблицах. В нее входят операторы выбора (SELECT)
строк из таблицы (или таблиц), уничтожения (DELETE) строк в
таблице, вставки (INSERT) строк, и изменения (UPDATE) значений
в существующих в таблице строках.
Оператор delete.
Уничтожить в таблице kadry все строки, в которых номер цеха ра-
вен 4, а фамилия кончается на буквы "ов"
---------------------------------------------------------------
DELETE FROM kadry WHERE ceh=4 AND fio MATCHES "*ов"
---------------------------------------------------------------
В результате из списков будут вычеркнуты работники 4-го цеха
"Петров", "Иванов", "Сидоров" и т.п
Как видим, INFORMIX предоставляет националистически озабоченным
руководителям мощные средства для воплощения в жизнь своих идей.
А этот оператор уничтожит ВСЕ строки в таблице kadry, владель-
цем которой является moshkow, но не саму таблицу
---------------------------------------------------------------
DELETE FROM moshkow.kadry
---------------------------------------------------------------
Простейшая форма оператора select.
Первый пример находит в таблице kadry строку, в которой столбец
tabnum=345 . Из этой строки берутся только три указаных столбца.
Второй пример выбирает ВСЕ строки из таблицы ceh, и все столбцы.
---------------------------------------------------------------
SELECT fio, dolvn, zarplata FROM kadry WHERE tabnom=345
SELECT * FROM ceh
SELECT kadry.fio, ceh.nameceh WHERE kadry.nomerceh=ceh.nomerceh
---------------------------------------------------------------
Третий пример выбирает фамилии работников из таблицы кадры, а
названия цехов, в которых они работают, из таблицы ceh.
Оператор insert.
может вставить в таблицу одну строку, если используется в форме
INSERT INTO ... VALUES, а может вставить в таблицу целый набор
строк, выбранных подзапросом SELECT из другой таблицы.
---------------------------------------------------------------
INSERT INTO kadry VALUES (4,0,"Грицько",num,"10/25/1939",NULL)
INSERT INTO customer VALUES (ps_customer.*)
# ps_customer - переменная типа RECORD - аналог структуры в
# языке Си. Этот оператор вставляет значения элементов записи
# ps_customer в соответствующие поля таблицы customer
INSERT INTO kadry (tabnom, fio, nomerceh, dolvnostx)
SELECT 0 , fio, 4, dolvnostx FROM kadryold
WHERE nomerceh=3 AND fio IS NOT NULL
# последний оператор вставляет сразу несколько строк
---------------------------------------------------------------
Если мы хотим, чтобы при вставлении строки в столбец типа SERI-
AL автоматически заносилось очередное значение счетчика, нужно
вставлять в этот столбец константу 0.
Если не во все столбцы вставляемой строки вносится значение
(как это сделано в третьем операторе), то незаполненные столбцы
заполняются значением NULL.
В операторах DELETE, UPDATE, SELECT может присутствовать WHERE
предложение, в котором можно задать условия на строки, которые
требуется обработать (соответственно уничтожить, изменить или
выбрать). Рассмотрим примеры использования WHERE предложения.