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

В SQL для выполнения операций ввода данных в таблицу, их изменения и удаления предназначены три команды языка манипулированияданными (DML). Это команды INSERT (вста­вить), UPDATE (обновить), DELETE (удалить).

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

INSERT INTO <имя та6лицы> VALUES (<значение>, <значение>,);

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

Например, ввод новой строки в таблицу STUDENT может быть осуществлен следующим образом:

INSERT INTO STUDENT

VALUES (101,'Иванов','Апександр', 200, 3,'Москва1'

'6/Ю/1979', 15);

Чтобы такая команда могла быть выполнена, таблица с ука­занным в ней именем (STUDENT) должна быть предварительно определена (создана) командой CREATE TABLE. Если в ка­кое-либо поле необходимо вставить NULL-значение, то оно вво­дится как обычное значение:

INSERT INTO STUDENT

VALUES (101,   'Ивзнэв', NULL, 200,  3,   'Мхква','6/10/1379', 15);

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

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

VALUES (101,   'Москва',   'Иванов', 'Саша');

Столбцам, наименования которых не указаны в приведен­ном в скобках списке, автоматически присваивается значение по умолчанию, если оно назначено при описании таблицы (ко­манда CREATE TABLE), либо значение NULL.

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

INSERT INTO STUDENT 1 SELECT *

FROM STUDENT

WHERE CITY = 'Нэоша';

При этом таблица STUDENTI должна быть предварительно создана командой CREATE TABLE (раздел 4.1) и иметь структу­ру, идентичную таблице STUDENT.

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

Следующее выражение удаляет все строки таблицы EXAM_MARKSI.

DELETE   FROM EXAM MARKS 1;

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

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

DELETE FROM EXAM_MARKS1 WHERE STUDENT_ID = 103;

Можно удалить группу строк:

DELETE FROM STUDENTI

WHERE CITY = 'Мзсква';

Команда UPDATE позволяет изменять, то есть обновлять зна­чения некоторых или всех полей в существующей строке или строках таблицы. Например, чтобы для всех университетов, све­дения о которых находятся в таблице UNIVERSITY!, изменить рейтинг на значение 200, можно использовать конструкцию:

UPDATE UNIVERSITYI SET RATING = 200;

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

UPDATE UNIVERSITYI SET RATING = 200 WHERE CITY = 'Мэсква';

В результате выполнения этого запроса будет изменен рей­тинг только у университетов, расположенных в Москве.

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

Например, наименование предмета обучения 'Математика' (для него SUBJID = 43) должно быть заменено на название 'Высшая математика', при этом идентификационный номер не­обходимо сохранить, но в соответствующие поля строки табли­цы ввести новые данные об этом предмете обучения. Запрос бу­дет выглядеть следующим образом:

UPDATE SUBJECT 1

SET SUBJ_NAME = Высшая математика', HOUR =  36, SEMESTER = 1 WHERE   SUBJID  = 43;

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

UPDATE UNIVERSITYI SET RATING = RATING*2;

Например, для увеличения в таблице STUDENTi значения поля STIPEND в два раза для студентов из Москвы можно ис­пользовать запрос

UPDATE STUDENT 1

SET STIPEND = STIPEND*2

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

Предложение SET не является предикатом, поэтому в нем можно указать значение NULL следующим образом:

UPDATE UNIVERSITYI SET RATING = NULL WHERE CITY = 'Москва';

Упражнения

1. Напишите команду, которая вводит в таблицу SUBJECT строку для нового предмета обучения со следующими значениями полей:

SEMESTER = 4;   3UBJ_KAME =   'Алгебра'j HOUR = 72;   3UBJ_ID =201.

2. Введите запись для нового студента, которого зовут Орлов Нико­лай, обучающегося на первом курсе ВГУ, живущего в Воронеже, сведения о дате рождения и размере стипендии неизвестны.

3. Напишите команду, удаляющую из таблицы EXAM MARKS записи обо всех оценках студента, идентификатор которого равен 100.

4. Напишите команду, которая увеличивает на 5 значение рейтинга всех имеющихся в базе данных университетов, расположенных в Санкт-Петербурге.

5. Измените в таблице значение города, в котором проживает студент Иванов, на «Воронеж».