Операторы манипулирования данными. |
К этой группе относятся операторы добавления, изменения и удаления записей. INSERT – добавление информации к таблице Синтаксис: INSERT INTO <имя_таблицы> [ (<имя_столбца>,...) ] VALUES { 1. [ (<значение>,..) ] 2. |[ < SELECT -запрос> ] 3. |[ DEFAULT VALUES ] } Синтаксис строки 1 позволяет ввести только одну строку в таблицу. Если вводятся все поля записи, то список столбцов можно не задавать. Вместо значения поля можно указывать DEFAULT . Оператор ввода данных с помощью синтаксиса строки 2 позволяет ввести сразу множество строк, если их можно выбрать из некоторой другой таблицы. При этом порядок следования столбцов и тип данных в столбцах должных совпадать. Строка 3 используется, если создаётся запись с значениями по умолчанию. Примеры: INSERT INTO publishers VALUES (16," Microsoft Press "," http :// www . microsoft . com "); INSERT INTO Authors (au_id, au_lname, au_fname) VALUES (666,'Бездомный','Иван') INSERT INTO Addresses (name, phone, address) VALUES ( SELECT name, phone, address FROM tmp_table) С не меньшим успехом в последнем случае можно использовать и конструкцию SELECT INTO… UPDATE – обновление информации в таблице Синтаксис: UPDATE <имя_таблицы> SET <имя_столбца> = <значение>,... [ FROM {<имя таблицы> | < SELECT -запрос>},…] [ WHERE <условие>] За один вызов UPDATE можно изменить данные в одном или нескольких столбцах для одной или множества записей только в одной таблице. С ключевого слова SET начинается блок, в котором определяется список изменяемых столбцов. Синтаксис <значение>:=={<константа> | <переменная> | <выражение> | DEFAULT | NULL }. Изменению подвергаются все строки, удовлетворяющие критериям ограничения области действия запроса UPDATE , которые задаются с помощью раздела WHERE . Примеры : UPDATE Authors SET address = “ Садовая 13 А , кв . 50” WHERE au_lname = ” Берлиоз ” AND au_fname = ” Михаил ” UPDATE publishers SET url=" сайт неизвестен " WHERE url IS NULL Если в инструкции UPDATE будет пропущен раздел WHERE , то заданные в разделе SET изменения будут сделаны в каждой строке таблицы. Имеет смысл для проверки сначала выполнить инструкцию типа SELECT Count (*) с тем же критерием WHERE , чтобы узнать, сколько строк будет изменено с помощью UPDATE . При составлении выражения можно ссылаться на любые столбцы таблицы, включая изменяемые. UPDATE Titles SET price=price+10 Если при изменении данных в таблице необходимо учесть состояние данных в других таблицах, то они указываются в разделе FROM . После того как источник данных указан в разделе FROM , в разделах WHERE и SET можно ссылаться на столбцы этого источника данных. Пример: в таблице subjects ( subject , fo , name ) в поле fo указан номер федерального округа, к которому принадлежит данный субъект федерации. В частично заполненной таблице peoples ( xsubject , xfo , value ) осталось незаполненным поле xfo с тем же смыслом. Как восстановить недостающую информацию ? UPDATE Peoples SET xfo = fo FROM subjects WHERE xsubject=subject DELETE – удаление информации из таблицы Синтаксис: DELETE FROM <имя_таблицы> [ WHERE <условие> ] С помощью DELETE можно удалить как отдельные строки, так и множество строк. Без WHERE будут удалены все строки таблицы. В разделе WHERE также можно использовать вложенные подзапросы. Примеры : DELETE FROM publishers WHERE publisher = "Microsoft Press" Удалить из таблицы students студентов, имеющих две и более двойки по результатам экзаменов (если это позволяют ограничения целостности): DELETE FROM students WHERE id_student IN ( SELECT id_student FROM testing WHERE result=2 GROUP BY id_student HAVING count(*)>2 ) Дополнительные сведения о языке SQL будут изложены в следующих главах, посвящённых различным диалектам SQL в нескольких широко известных на сегодняшний день СУБД. |