- •ОГЛАВЛЕНИЕ
- •3. Простые варианты поиска данных
- •3.2. Использование ключевого слова DISTINCT
- •3.3. Предложение WHERE
- •4.1. Использование DISTINCT с COUNT
- •4.3. Предложение HAVING
- •5.2. Внешние соединения
- •6. ИСПОЛЬЗОВАНИЕ ПОДЗАПРОСОВ В ОПЕРАТОРАХ SQL
- •6.4. Использование оператора EXISTS
- •6.5. Использование варианта IN с подзапросами
- •6.6. Использование NOT EXISTS
- •8. ДОБАВЛЕНИЕ ДАННЫХ. КОМАНДА INSERT
- •8.1. Добавление отдельной строки
- •9. ОБНОВЛЕНИЕ УЖЕ ИМЕЮЩИХСЯ ДАННЫХ.
- •КОМАНДА UPDATE
- •10. УДАЛЕНИЕ ДАННЫХ ИЗ ТАБЛИЦ. КОМАНДА DELETE
- •11. ГЕНЕРАТОРЫ И ИХ ИСПОЛЬЗОВАНИЕ
- •11.1. Создание генераторов
- •ПРИМЕРЫ ЗАПРОСОВ
Имя |
Отчество |
Фамилия |
Тип |
Роль/Место |
Елена |
Павловна |
Бельтюкова |
Пассажир |
5А |
Ирина |
Валентиновна |
Щекина |
Пассажир |
4А |
Константин |
Игоревич |
Баталов |
Пассажир |
4Б |
Лариса |
Вилльевна |
Вашкарина |
Член экипажа |
Бортпроводник |
Максим |
Владимирович |
Бычков |
Член экипажа |
Командир |
Наталья |
Васильевна |
Вожакова |
Пассажир |
2А |
Олег |
Владимирович |
Лядов |
Член экипажа |
Пилот |
Ольга |
Юрьевна |
Боброва |
Пассажир |
4Г |
Светлана |
Александровна |
Ветошкина |
Член экипажа |
Бортпроводник |
Светлана |
Леонидовна |
Верушкина |
Пассажир |
5В |
Сергей |
Владимирович |
Богатырев |
Пассажир |
6А |
Татьяна |
Викторовна |
Владысик |
Пассажир |
ЗГ |
Елена |
Александровна |
Воронюк |
Пассажир |
20А |
Мария |
Ивановна |
Выгузова |
Пассажир |
20Б |
Ольга |
Николаевна |
Вяткина |
Пассажир |
20В |
Юлия |
Дмитриевна |
Гаевская |
Пассажир |
20Г |
Василий |
Александрович |
Глазов |
Пассажир |
20Д |
Дмитрий |
Федорович |
Глумов |
Пассажир |
21А |
8. ДОБАВЛЕНИЕ ДАННЫХ. КОМАНДА INSERT
Команда INSERT предназначена для добавления данных в базу. С ее помощью можно добавить в указанную таблицу или представ ление одну или сразу несколько строк.
8.1. Добавление отдельной строки
При добавлении отдельной строки в списке INTO перечисля ются столбцы, в которые вводятся значения, а сами значения зада ются в списке VALUES. Вместо списка столбцов можно указать символ *; в этом случае предполагается, что вводятся значения всех столбцов таблицы в специфицированном при создании таблицы по рядке. Поскольку порядок столбцов может изменяться, то такая конструкция является потенциально опасной, и лучше ее не при менять.
соответствующий |
коду бортпроводника, поля «Дата вылета» |
(EQ FL_DATE) и |
«Номер маршрута» (EQJFLJNUM) будут зада |
ны как константы. Таким образом, команда INSERT вставит в таб лицу EQUIPAGE столько строк, сколько возвращает внутренний
запрос.
Вы должны были заметить, что в списке столбцов, добавляе мых в таблицу EQUIPAGE, отсутствует первичный ключ - код члена экипажа (EQ_ CODE). В самом деле, мы не можем вставлять его для набора строк, т.к. для каждой строки он должен быть уника лен. Мы можем выполнить приведенный запрос благодаря исполь зованию триггеров, о чем будет рассказано в дальнейшем.
9. ОБНОВЛЕНИЕ УЖЕ ИМЕЮЩИХСЯ ДАННЫХ.
КОМАНДА UPDATE
Уже существующие в таблице данные можно изменить с по мощью команды UPDATE. Команда UPDATE не добавляет новых записей в таблицу и не удаляет их, а только дает возможность изме нить данные. С помощью одной такой команды можно изменить данные только одной таблицы, но одновременно можно менять данные нескольких столбцов. Одним таким оператором можно из менить и одну строку данных, и целый набор строк.
Рассмотрим синтаксис подходящего оператора.
UPDATE имя_таблицы SET столбец! = 'значение' [, столбецЗ = 'значение']
[, столбецЗ = 'значение'] [WHERE условие];
Обратите внимание на использование ключевого слова SET: оно одно, а описаний столбцов несколько. Описания столбцов раз деляются запятыми. К этому моменту вы, должно быть, уже почув-j ствовали логику SQL. В операторах SQL запятая обычно использу ется для разделения различного типа аргументов.
Изменим фамилию у одной из женщин из таблицы PERSONj запрос на изменение будет иметь вид56:
UPDA ТЕ PERSON SET PR NAME = 'Смирнова' WHERE PRJNAME ='Оборина'
AND P R N A M E 2 = Юлия'
AND P R N A M E 3 = 'Витальевна'
AND PR_BIRTHDA Y = '02.10.1984'
При использовании оператора UPDATE без ключевого слова WHERE нужно быть исключительно внимательным. При отсутст вии заданных ключевым словом WHERE условий данные в соот ветствующем столбце будут обновлены для всех строк данных. В нашем случае это бы означало, что фамилии всех людей станут «Смирнова». Оператор UPDATE без ключевого слова WHERE ис пользуется очень редко.
10. УДАЛЕНИЕ ДАННЫХ ИЗ ТАБЛИЦ. КОМАНДА DELETE
Для удаления данных из таблиц используется команда DELETE. Команда DELETE предназначена не для того, чтобы уда лять значения отдельных столбцов, а для того, чтобы удалять целые записи. Оператор DELETE следует применять с осторожностью — слишком уж безотказно он работает.
Чтобы удалить одну или несколько записей из таблицы, ис пользуйте следующий синтаксис оператора DELETE.
DELETE FROM имя_таблицы [WHERE условие];
Если ключевое слово WHERE в операторе DELETE опущено, будут удалены все строки таблицы. Поэтому практически всегда необходимо использовать ключевое слово WHERE в операторе DELETE.
В качестве примера удалим все сведенья о билетах с датой вы лета ранее 1 января 2000 г.57:
DELETE FROM TICKET
WHERE TC_FL_DATE < '01.01.2000'
При использовании команды DELETE бывает полезно исполь зование вложенных запросов SELECT. Удалим из таблицы PERSON тех людей, кто ни разу не летал в качестве пассажира или члена экипажа. Чтобы выполнить это, нужно найти коды личностей всех членов экипажа (из таблицы EQUIPAGE) и всех пассажиров с биле тами (из таблицы TICKET). Получаем запрос на удаление58: