Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
db / Лекции / 6 семестр / Языки запросов.docx
Скачиваний:
134
Добавлен:
23.03.2015
Размер:
280.32 Кб
Скачать
        1. Использование запроса при вставке строк

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

INSERT INTO имя_таблицы [(имя__столбца[, имя_столбца]...)]

(запрос);

        1. Вставка значений по умолчанию

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

INSERT INTO имя_таблицы DEFAULT VALUES

      1. Обновление существующих данных

Целью предложения обновления является изменение значений отдельных столбцов всех или удовлетворяющих указанному условию строк таблицы. Упрощенный синтаксис предложения следующий:

UPDATE имя_таблицы

SET имя_столбца = выражение[, имя_столбца = выражение]...

[WHERE условие];

Его элементы означают следующее:

  • имя_таблицы – имя обновляемой таблицы;

  • имястолбца – имя обновляемого столбца;

  • выражение – допустимое в SQLвыражение соответствующего типа, значение которого присваивается обновляемому столбцу;

  • условие – допустимое в SQLвыражение условия, которое используется для отбора обновляемых строк.

По одному предложению UPDATEобновлению подвергаются строки только одной базовой таблицы.

Как видно из определения синтаксиса команды UPDATE, фраза WHERE является необязательной. При ее отсутствии все строки таблицы подвергаются обновлению согласно фразе SET. Например, для установки всем группам рейтинга 0 следует записать следующее выражение:

UPDATE SGROUP

SET Rating = 0;

---

5 строк обновлено.

Во фразе SETможно одновременно изменять значения нескольких столбцов таблицы. Например, в следующем примере всем преподавателям увеличивается

ставка на 12 % и надбавка на 7 %:

UPDATE TEACHER

SET Salary = Salary + Salary * 0.12. Rise = Rise + Rise * 0.08;

---

15 строк обновлено.

Во фразе SETв правой части оператора присваивания может использоваться любое допустимое вSQLвыражение того же типа, что и столбец, имя которого приведено слева от оператора присваивания. Если в этом выражении используется имя столбца целевой таблицы, для вычисления выражения применяется значение этого столбца в текущей строке, которое было перед обновлением.

Обновление по условию использует фразу WHERE. В этом случае обновляются столбцы только тех строк таблицы, на которых выполняется условие фразыWHERE. Рассмотрим несколько примеров.

Запрос.Увеличить всем ассистентам зарплату и надбавку на 10 %:

UPDATE TEACHER

SET Salary = Salary * 1.1, Rise = Rise * 1.1

WHERE LOWER(Post) = 'ассистент';

---

4 строк обновлено.

Запрос.Установить, что деканат факультета математики переместился в корпус 7.

UPDATE FACULTY

SET Building = 7

WHERE LOWER(Name) = 'математика';

---

1 строка обновлена.

      1. Удаление существующих строк

Удалять строки из таблицы можно с помощью предложения DELETE. Оно удаляет только строки целиком, а не индивидуальные значения столбцов. Синтаксис команды следующий:

DELETE FROM имя_таблицы [[AS] синоним]

[WHERE условие];

При использовании предложения DELETE вы прежде всего обнаружите, что предупреждающая подсказка, как правило, не выдается. Обычно, когда пользователь удаляет какой-либо объект операционной среды, он получает сообщение типа «Вы уверены (Д/Н)?». В системах, поддерживающих SQL, строки удаляются без такого сообщения. Поэтому будьте внимательны.

В зависимости от применения фразы WHERE предложение DELETE позволяет удалить отдельную строку, несколько или все строки таблицы. Строки могут быть и не удалены. При использовании предложения DELETE помните о следующем:

  • нельзя удалить значение отдельного столбца (используйте для этого предложение UPDATE);

  • как и предложения INSERT и UPDATE, удаление строк может нарушить ограничения целостности;

  • сама таблица не удаляется (используйте для этого предложение DROP TABLE).

Чтобы удалить все содержимое таблицы, не нужно использовать фразу WHERE. Помните, что вы удаляете не саму таблицу, а только все ее строки.

Запрос.Удалить содержимое таблицLECTURE.

DELETE FROM LECTURE;

---

22 строк удалено.

Обычно нужно удалять только некоторые строки из таблицы. Чтобы определить, какие строки будут удалены, нужно использовать условие во фразе WHERE. Приведем несколько примеров.

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

DELETE FROM LECTURE

WHERE LOWER(Day) = 'суб' OR LOWER(Day) = 'вос';

---

0 строк удалено.

Запрос.Удалить аудиторию с первичным ключом 120.

DELETE FROM ROOM

WHERE RomPK = 120;

Здесь RomPK — первичный ключ в таблице ROOM.