В SQL для выполнения операций ввода данных в таблицу, их изменения и удаления предназначены три команды языка манипулирования данными (DML). Это команды – INSERT(вставить), UPDATE(обновить), DELETE(удалить).
Команда INSERTосуществляет вставкув таблицу новой строки. В простейшем случае она имеет следующий вид:
При такой записи указанные в скобках после ключевого слова VALUESзначения вводятся в поля добавленной в таблицу новой строки в том порядке, в котором соответствующие столбцы указаны при создании таблицы, то есть в операторе CREATE TABLE.
Например, ввод новой строки в таблицу STUDENT может быть осуществлен следующим образом
Чтобы такая команда могла быть выполнена, таблица с указанным в ней именем (STUDENT) должна быть предварительно определена (создана) командой CREATE TABLE. Если в какое-либо поле необходимо вставить NULL-значение, то оно вводится как обычное значение:
В случаях, когда необходимо ввести значения полей в порядке, отличном от порядка столбцов, заданного командой CREATE TABLE, или если требуется ввести значения не во все столбцы, то следует использовать следующую форму команды INSERT:
INSERT INTOSTUDENT (STUDENT_ID, CITY, SURNAME, NAME)
VALUES(101, ‘Москва ’, ‘Иванов’, ‘Саша ’);
Столбцам, наименования которых не указаны в приведенном в скобках списке, автоматически присваивается значение по умолчанию, если оно назначено при описании таблицы (команда CREATE TABLE), либо значение NULL.
С помощью команды INSERTможно извлечь значение из одной таблицы и разместить его в другой, к примеру, запросом следующего вида:
INSERT INTOSTUDENT1
SELECT*
FROMSTUDENT
WHERECITY = ‘Москва ’;
При этом таблица STUDENT1 должна быть предварительно создана командой CREATE TABLEи иметь структуру, идентичную таблице STUDENT.
Удаление строк из таблицы осуществляется с помощью команды DELETE.
Следующее выражение удаляет все строки таблицы EXAM_MARKS1.
DELETE FROMEXAM_MARKS1;
В результате таблица становится пустой (после этого она может быть удалена командой DROP TABLE).
Для удаления из таблицы сразу нескольких строк, удовлетворяющих некоторому условию можно воспользоваться предложением WHERE, например,
DELETE FROMEXAM_MARKS1
WHERESTUDENT_ID = 103;
Можно удалить групп у строк
DELETE FROMSTUDENT1
WHERECITY = ‘Москва’;
Команда UPDATEпозволяет изменять, то есть обновлять, значения некоторых или всех полей в существующей строке или строках таблицы.
Например, чтобы для всех университетов, сведения о которых находятся в таблице UNIVERSITY1, изменить рейтинг назначение 200, можно использовать конструкцию:
UPDATEUNIVERSITY1
SETRATING = 200;
Для указания конкретных строк таблицы, значения полей которых должны быть изменены, в команде UPDATEможно использовать предикат, указываемый в предложении WHERE.
UPDATEUNIVERSITY1
SETRATING = 200
WHERECITY = ‘Москва ’;
В результате выполнения этого запроса будет изменен рейтинг только у университетов, расположенных в Москве.
Команда UPDATEпозволяет изменять не только один, но и множество столбцов. Для указания конкретных столбцов, значения которых должны быть модифицированы, используется предложение SET.
Например, наименование предмета обучения ‘Математика’ (для него SUBJ_ID = 43) должно быть заменено, на название ‘Высшая математика’, при этом идентификационный номер необходимо сохранить, но в соответствующие поля строки таблицы ввести новые данные об этом предмете обучения. Запрос будет выглядеть следующим образом.
В предложении SETкоманды UPDATEможно использовать скалярные выражения, указывающие способ изменения значений поля, в которые могут входить значения изменяемого и других полей.
UPDATEUNIVERSITY1
SETRATING = RATING*2;
Например, для увеличения в таблице STUDENT1 значения поля STIPEND в два раза для студентов из Москвы можно использовать запрос
UPDATESTUDENT1
SETSTIPEND = STIPEND*2
WHERECITY = ‘Москва ’;
Предложение SETне является предикатом, поэтому в нем можно указать значение NULLследующим образом.