![]() КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Изменение баз данных
Для изменения содержимого таблиц БД применяются три оператора SQL · INSERT – добавление новых строк; · DELETE – удаление строк; · UPDATE – корректировка или обновление строк. В реляционной СУБД обычно существует три способа добавления новых строк в таблицы БД: · однострочный оператор INSERT позволяет добавить одну новую строку; · многострочный оператор INSERT обеспечивает извлечение строк из одной части базы данных и добавление их в другую таблицу; · утилиты пакетной загрузки позволяют добавлять в таблицу данные из внешнего файла и обычно используются для первоначального заполнения БД. Однострочный оператор INSERT имеет формат INSERT INTO <таблица> [(<список полей>)] VALUES (<список выражений>) Если список полей отсутствует, то имеются в виду все поля таблицы. Значение каждого выражения заносится в соответствующее поле. Отсутствующим в списке полям присваивается значение NULL. Это значение может задаваться и явно в списке выражений. Пример однострочного оператора INSERT INSERT INTO Anketa (Name, Age, Adress) VALUES (‘ Иванов’, 20, ‘Пушкина, 41-20’) Оператор INSERT можно применять в интерактивном режиме, однако на практике он обычно включается в программы ввода данных, использующие специальные формы. Явное указание списка полей способствует уменьшению количества ошибок при вводе информации. В многострочном операторе INSERT источником новых строк служит запрос на чтение SELECT, содержащийся внутри оператора, например INSERT INTO Anketa (Name, Age, Adress) SELECT Fio, Vozrast, Adr FROM Cartoteka WHERE Vozrast < 60 В результате в таблицу Anketa будет добавлено множество строк из таблицы Cartoteka. Пополняемая таблица должна содержать такое же количество столбцов, что и внутренний оператор SELECT, а типы данных соответствующих столбцов должны быть совместимыми. Имена этих столбцов совпадать не обязаны. Оператор DELETE в простейшем случае имеет вид DELETE FROM <таблица> WHERE <условие> и удаляет из таблицы все строки, для которых выполняется заданное условие. Например, удаление информации обо всех несовершеннолетних, а также о лицах неопределенного возраста из таблицы Anketa можно выполнить оператором DELETE FROM Anketa WHERE Age < 18 OR Age IS NULL Если условие отсутствует, то удаляются все записи. Таблица становится пустой, но из БД не удаляется. В более сложном варианте оператор DELETE содержит вложенный подзапрос SELECT. Пусть, например, имеются две таблицы с данными об успеваемости студентов A (Nom, Name, Adress) и B (Nom, Subj, Mark). Для удаления всех оценок студента Иванова (точнее, всех студентов с фамилией Иванов) можно использовать оператор DELETE FROM B WHERE Nom IN (SELECT Nom FROM A WHERE Name = ‘Иванов’) Вложенный запрос может иметь несколько уровней. Оператор DELETE удаляет данные только из одной таблицы. Если бы нам потребовалось удалить данные о студенте Иванове из обеих таблиц, то запрос DELETE FROM A, B WHERE A.Nom = B.Nom AND A.Name = ‘Иванов’ является неправильным. В этом случае нужно сначала удалить все оценки Иванова указанным выше способом, а уже потом удалить информацию об Иванове из таблицы A оператором DELETE FROM A WHERE Name = ‘Иванов’ Оператор обновления данных UPDATE также работает с одной таблицей и имеет две формы. В первом случае строки для обновления определяются простым условием WHERE. Обновление задается последовательностью операторов присваивания. Пусть, например, требуется в таблице A перевести данные о росте и весе англичан из футов и фунтов в метры и килограммы соответственно. Это можно выполнить оператором UPDATE A SET Height = Height * 0.3, Weight = Weight * 0.4 WHERE Country = ‘England’ Для каждого атрибута должно выполняться не более одной операции присваивания нового значения. Если некоторое поле сначала встречается в левой части оператора присваивания, а потом в правой части другого оператора, то во втором операторе берется старое значение поля, которое было до его изменения. Поэтому порядок оператров присваивания не имеет значения. Оператор UPDATE с вложенным подзапросом содержит оператор SELECT в предложении WHERE. Возвращаясь к примеру БД по поставщикам и поставкам, предположим, что принято решение переселить в Москву тех поставщиков, которые имеют более 100 поставок. Это изменение в таблице S можно выполнить оператором UPDATE A SET Scity = ‘Москва’ WHERE S# IN (SELECT S# FROM SP GROUP BY S# HAVING COUNT(*) > 100) В операторах DELETE и UPDATE допускается указывать одну и ту же таблицу в основной части оператора и подзапросе. В этом случае в условии используется содержимое таблицы до ее изменения. Это предупреждает ссылки на таблицу, у которой может быть модифицирована часть строк.
Дата добавления: 2014-01-07; Просмотров: 399; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |