Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Материалы по дисциплине БД и СУБД к ГЭК.doc
Скачиваний:
7
Добавлен:
22.11.2019
Размер:
1.19 Mб
Скачать

40. Язык sql. Операторы insert, update, delete.

Для изменения содержимого базы данных применяются 3 оператора:

  • INSERT — предназначен для добавления данных в таблицу;

  • UPDATE — предназначен для модификации уже помещенных в таблицу данных;

  • DELETE — позволяет удалять из таблицы строки данных.

INSERT

Первая форма INSERT:

INSERT INTO TableName[(columnList)]

VALUES (dataValueList)

Здесь параметр TableName (имя таблицы) может представлять либо имя таблицы базы данных, либо имя обновляемого представления. Параметр colunmList (список столбцов) представляет собой список, состоящий из имен одного или более столбцов, разделенных запятыми. Параметр coIumnList является необязательным. Если он опущен, то предполагается использование списка из имен всех столбцов таблицы, указанных в том порядке, в котором они были описаны в операторе CREATE TABLE. Если в операторе INSERT указывается конкретный список имен столбцов, то любые опущенные в нем столбцы должны быть объявлены при создании таблицы как допускающие значение NULL — за исключением случаев, когда при описании столбца использовался параметр

DEFAULT, т.е. было указано значение по умолчанию. Параметр dataValueList (список значений данных) должен соответствовать параметру columnList.

Пример 1. Использование конструкции INSERT... VALUES. Поместите в таблицу staff новую запись, содержащую данные во всех столбцах.

INSERT INTO Staff

VALUES('SG16', 'Alan', 'Brown', 'Assistant1, 'M1 , DATE '1957-05-25', 8300, 'B003')

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

Пример 2. Вставка новой записи с использованием значений, принимаемых по умолчанию. Поместите в таблицу Staff новую запись, содержащую данные во всех обязательных столбцах: staffNo, ftfame, IName, position, salary и branchNo.

INSERT INTO Staff (staffNo, fName, IName, position, salary, branchNo)

VALUES ('SG441 , 'Anne1 , 'Jones', 'Assistant', 8100, 'B003')

Можно также записать следующим образом:

INSERT INTO Staff

VALUES ('SG441 , 'Anne1 , 'Jones' , 'Assistant1 , NULL, NULL, 8100, NULL, 'B003')

(явно указали, что добавляется значение NULL)

Вторая форма INSERT:

INSERT INTO . TableName[(columnList)]

SELECT …

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

Пример 3. Предположим, что существует таблица StaffPropCount, содержащая имена работников компании и учетные номера сдаваемых в аренду объектов, за которые

они отвечают: Staff PropCount (staff No, fNarie, IName, propCount)

Заполните таблицу staff PropCount данными, используя информацию из таблиц staff и

PropertyForRent.

INSERT INTO StaffPropCount

(SELECT s.staffNo, fName, IName, COUNT(*)

FROM Staff s, PropertуForRent p

WHERE s.staffNo = p.staffNo

GROUP BY s.staffNo, fName, lName)

Подсчитывается количество объектов по каждому сотруднику компании (внутренний запрос select) и результат добавляется в таблицу StaffPropCount.

UPDATE

UPDATE ТаbleName

SET columnName1 = dataValue1 [, columnValue2 = dataValue2 …]

[WHERE searchCondition]

Здесь параметр TableName представляет либо имя таблицы базы данных, либо имя обновляемого представления. В конструкции SET указываются имена одного или более столбцов, данные в которых необходимо изменить. Конструкция WHERE является необязательной. Если она опущена, значения указанных столбцов будут изменены во всех строках таблицы. Если конструкция WHERE присутствует, то обновлены будут только те строки, которые удовлетворяют условию поиска, заданному в параметре searchCondition. Параметры dataValuel, dataValue2... представляют новые значения соответствующих столбцов и должны быть совместимы с ними по типу данных.

Пример 4. Обновление всех строк таблицы с помощью оператора UPDATE. Всему персоналу повысить заработную плату на 3%.

UPDATE Staff

SET salary = salary*1.03

Пример 5. Всем менеджерам компании повысить заработную плату на 5%.

UPDATE Staff

SET salary = salary*1.05

WHERE position = 'Manager'

Пример 6. Перевести сотрудника с номером 'SGl4' на должность менеджера и повысить ему зарплату до 18 000 фунтов стерлингов в год.

UPDATE Staff

SET position = 'Manager', salary = 18000

WHERE staffNo = 'SG14'

DELETE

Синтаксис:

DELETE FROM TableName

[WHERE searchCondition]

Как и в случае операторов INSERT и UPDATE, параметр TableName может представлять собой либо имя таблицы базы данных, либо имя обновляемого представления. Параметр searchCondition является необязательным — если он опущен, из таблицы будут удалены все существующие в ней строки. Однако сама по себе таблица удалена не будет. Если необходимо удалить не только содержимое таблицы, но и ее определение, следует использовать оператор DROP TABLE. Если конструкция WHERE присутствует, из таблицы будут удалены только те строки, которые удовлетворяют условию отбора, заданному параметром searchCondition,

Пример 7. Удалить все записи об осмотрах сдаваемого в аренду объекта с учетным номером PG4.

DELETE FROM Viewing

WHERE propertyNo = 'PG4'

Пример 8. Удалить все строки из таблицы Viewing.

DELETE FROM Viewing