Шаг 14 - Ввод, удаление и изменение значений полей

До сих пор мы просто извлекали самыми разными способами данные из таблиц. Пришло время изучить как они туда попадают.

Значения могут быт помещены и удалены из полей, тремя командами:

Ввод значений

Все строки вводятся с использованием команды INSERT. В самой простой форме используется следующий синтаксис:

INSERT INTO table_name
VALUES ( value, value, ... )
Так для того чтобы добавить запись в таблицу торговых агентов можно использовать команду:
INSERT INTO Salespeople
VALUES( 1008, 'Johnson', 'London', 12 )
Команды модификации не производят никакого вывода. Но Query Analyzer сообщит Вам, что была добавлена 1 запись. Таблица уже должна существовать к моменту исполнения этой команды, а тип каждого значения в скобках после VALUES должен совпадать с типом данных столбца, в который оно вставляется. Первое значение попадает в столбец 1, второе - 2 и т.д.
Если вам нужно ввести пустое значение (NULL), просто укажите его в списке значений. Например:
INSERT INTO Salespeople
VALUES ( 1009, 'Peel', NULL, 12 )
Вы можете явно указать столбцы, куда Вы хотите вставить значение. Это позволит вставлять значения в любом порядке.
INSERT INTO Customers( city, cname, cnum )
VALUES( 'Новосибирск', 'Петров', 2010 )
Обратите внимание, что столбцы rating и snum отсутствуют. Это значит, что во вставленной записи им будет присвоено значение по умолчанию. Обычно это NULL или значение указанное при создании таблицы. Более подробно мы это рассмотрим далее.
Команду INSERT можно использовать для вставки результатов запроса. Чтобы сделать это, просто заменяем предложение VALUES на соответствующий запрос:
INSERT INTO MoscowStaff
   SELECT *
   FROM Salespeople
   WHERE city = 'Москва'
Здесь выбираются все строки из таблицы "Торговые агенты" со значениями city = 'Москва' и помещаются в таблицу MoscowStaff. Чтобы это сработало таблица MoscowStaffдолжна отвечать следующим условиям:

Удаление строк из таблиц

Для удаления строк из таблицы используется команда DELETE. Она удаляет не отдельные значения, а строки целиком. Чтобы удалить все содержание таблицы агентов вы можете ввести команду:

DELETE FROM Salespeople
Но я пока не рекомендую Вам этого делать.
Обычно, Вам требуется удалять некоторые определенные строки в таблице. Чтобы определить какие строки будут удалены, используйте условие отбора, как мы это делали для запросов. Например, чтобы удалить агента Шилина можно ввести:
DELETE FROM Salespeople
WHERE snum = 1007
Разумеется, если условию будет соответствовать несколько записей, все они будут удалены.
В отличие от файловых СУБД типа DBASE, SQL Server не помечает записи как удаленные, а удаляет их физически, т.е. восстановлению они не подлежат. Будьте осторожны с командой DELETE!

Изменение значения поля

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

UPDATE Customers
SET rating = 200
Аналогично DELETE, UPDATE может использовать условия для выбора записей, подлежащих изменению. Вот так можно изменить рейтинг для всех заказчиков агента Иванова (код 1001):
UPDATE Customers
SET rating = 300
WHERE snum = 1001
В предложении SET можно указывать несколько столбцов, разделяя их запятыми.

Теперь мы изучили три команды, которые управляют содержимым БД. Если добавить к этому долгое изучение запросов, то выходит что мы основы SQL уже позади. Что будет дальше? Как говорят в американских шоу: "Дальше вы увидите:"


Предыдущий Шаг | Оглавление
Автор Aidar Talibzhanov - 07.02.2000