≪
≫

МАНИПУЛИРОВАНИЕ ДАННЫМИ

Команды манипулирования данными

В SQL для выполнения ввода данных в таблицу, их изменения и удаления предназначены три команды: INSERT, UPDATE, DELETE.

Команда INSERT осуществляет вставку в таблицу новой строки. В простейшем случае она имеет вид:

INSERT INTO <имя таблицы> VALUES (<значение 1>, <значение 2>, ... , <значение 7V>);

При такой записи указанные в скобках после ключевого слова VALUES значения вводятся в поля добавленной в таблицу новой строки в том порядке, в котором соответствующие столбцы указаны при создании таблицы.

Например, ввод новой строки в таблицу STUDENT: INSERT INTO STUDENT

VALUES (101, 'Костюченко', 'Александр', 200, 3, 'Минск', #1/22/1981#, 15);

Если в какое-либо поле необходимо вставить NULL- значение, то оно вводится как обычное:

INSERT INTO STUDENT

VALUES (202, 'Мазуркин', NULL, 200, 3, 'Минск', #1/22/1981#, 15);

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

INSERT INTO STUDENT (STUDENT ID, CITY, SURNAME, NAME)

VALUES (2, 'Бобруйск', 'Абрамович', 'Саша');

Столбцам, значения которых не указаны в приведенном в скобках списке, автоматически присваивается значение по умолчанию, если оно указано при создании таблицы, либо N U LL-значение.

С помощью команды INSERT можно извлечь данные из одной таблицы и поместить их в другую, причем обе таблицы должны существовать и иметь одинаковые схемы отношений.

Пример: переписать в таблицу STUDENT1 данные о студентах из Москвы:

INSERT INTO STUDENT1 SELECT *

FROM STUDENT WHERE CITY = 'Москва';

Удаление строк из таблицы осуществляется командой DELETE.

Пример: удалить данные из таблицы EXAM MARKS. В результате таблица становится пустой:

DELETE FROM EXAM MARKS;

Для удаления из таблицы нескольких строк, удовлетворяющих некоторому условию, можно воспользоваться предложением WHERE:

DELETE FROM EXAM MARKS

WHERE STUDENT ID = 301;

Команда UPDATE позволяет изменять, т. е. обновлять значения некоторых или всех полей в существующей строке или строках таблицы.

Пример: изменить рейтинг всех университетов на значение 200:

UPDATE UNIVERSITY SET RATTING = 200;

Для указания конкретных строк таблицы, значения полей которых должны быть изменены, в команде UPDATE можно использовать предикат, указываемый в предложении WHERE.

Пример: изменить рейтинг тех университетов, которые расположены в Москве:

UPDATE UNIVERSITY SET RATTING = 200 WHERE CITY = 'Москва';

Команда UPDATE позволяет изменять не только один, но и множество столбцов.

Пример: наименование предмета обучения с идентификатором 43 заменить на название «Высшая математика», количество часов и семестр также изменить:

UPDATE SUBJECT

SET SUBJ NAME = 'Высшая математика', HOUR = 36, SEMESTER = 1

WHERE SUBJ_ID= 43;

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

Пример: увеличить стипендию студентов из Воронежа в два раза:

UPDATE STUDENT

SET STIPEND = STIPENDS

WHERE CITY = 'Воронеж';

Предложение SET не является предикатом, поэтому в нем можно указывать значение NULL следующим образом: UPDATE UNIVERSITY SET RATTING = NULL WHERE CITY = 'Воронеж';

Использование подзапросов с INSERT

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

Пример: пусть таблица STUDENT1 имеет структуру, идентичную STUDENT. Чтобы переписать всех студентов из Воронежа из таблицы STUDENT в STUDENT1, необходимо выполнить следующий запрос:

INSERT INTO STUDENT1 SELECT *

FROM STUDENT WHERE CITY = 'Воронеж';

Пример: добавить в таблицу STUDENT1 сведения о студентах, которые учатся в Москве:

INSERT INTO STUDENT1 SELECT *

FROM STUDENT WHERE UNIV ID IN (SELECT UNIV ID FROM UNIVERSITY WHERE CITY = ’Москва’);

Использование подзапросов, основанных на таблицах внешних запросов

Пример: пусть в таблице SSTUD хранятся сведения о студентах, обучающихся в том же городе, в котором они живут. Заполнить эту таблицу данными из таблицы STUDENT: INSERT INTO SSTUD SELECT *

FROM STUDENT A

WHERE CITY IN

(SELECT CITY

FROM UNIVERSITY В

WHERE A.UNIV ID = B.UNIV_ID);

Пример: выбрать список студентов, имеющих максимальный балл на каждый день сдачи экзаменов и переписать их в другую таблицу EXAM:

INSERT INTO EXAM SELECT *

FROM EXAM_MARKS A WHERE MARK =

(SELECT MAX (MARK)

FROM EXAM MARKS В

WHERE A.EXAM DATE = B.EXAM DATE);

Использование подзапросов c DELETE

Пример: удалить все данные о студентах, которые учатся в Воронеже:

DELETE

FROM STUDENT WHERE UNIV ID IN (SELECT UNIV ID FROM UNIVERSITY WHERE CITY = 'ВОРОНЕЖ');

В предикате предложения FROM (подзапроса) нельзя ссылаться на таблицу, из которой осуществляется удаление. Однако можно ссылаться на текущую строку из таблицы, являющуюся кандидатом на удаление, т. е. на строку, которая в настоящее время проверяется в основном предикате.

Пример: удалить данные о студентах, которые учатся в университетах, имеющих рейтинг 401:

DELETE

FROM STUDENT WHERE EXISTS (SELECT *

FROM UNIVERSITY WHERE RATTING = 401

AND STUDENT.UNIV ID = UNIVERSITY.UNIV_ID); Второй способ решения этой задачи:

DELETE

FROM STUDENT WHERE 401 IN (SELECT RATTING FROM UNIVERSITY

WHERE STUDENT.UNIV ID = UNIVERSITY.UNIVJD);

Использование подзапросов с UPDATE

С помощью команды UPDATE можно применять подзапросы в любой форме, приемлемой для команды DELETE.

Пример: увеличить стипендии на 20 % студентам, которые имеют оценки только 4 и 5:

UPDATE STUDENT А

SET STIPEND = STIPEND + STIPEND*20 / 100 WHERE 4 <=

(SELECT MIN (MARK)

FROM EXAM MARKS В

WHERE B.STUDENT ID = A.STUDENT ID);

  • Ш ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ
  • 1. Перечислите команды манипулирования данными.
  • 2. Опишите синтаксис команд манипулирования данными. Приведите примеры их использования.
  • 3. Приведите примеры использования подзапросов с INSERT.
  • 4. Приведите примеры использования подзапросов с DELETE.
  • 5. Приведите примеры использования подзапросов с UPDATE.
 
Посмотреть оригинал