71709

Команды изменения данных

Лабораторная работа

Информатика, кибернетика и программирование

При создании и дальнейшем сопровождении базы данных обычно возникает задача добавления новых и удаления ненужных записей а также изменения содержимого ячеек таблицы. Запросы начинающиеся с этих ключевых слов не возвращают данные в виде виртуальной таблицы...

Русский

2014-11-11

60.5 KB

1 чел.

6. Команды изменения данных

При создании и дальнейшем сопровождении базы данных обычно возникает задача добавления новых и удаления ненужных записей, а также изменения содержимого ячеек таблицы. В SQL для этого предусмотрены операторы INSERT (вставить), DELETE (удалить) и  UPDATE (изменить). Запросы, начинающиеся с этих ключевых слов, не возвращают данные в виде виртуальной таблицы, а изменяют содержимое уже существующих таблиц базы данных. Запросы на модификацию данных могут содержать вложенные запросы на выборку данных из той же самой таблицы или из других таблицы, однако сами не могут быть вложены в другие запросы.

6.1. Добавление новых записей

Для добавления (вставки) записи в таблицу служит оператор INSERT, который имеет несколько форм:

INSERT INTO имяТаблицы VALUES (списокЗначений) – вставляет пустую запись в указанную таблицу и заполняет эту запись значениями из списка, указанного за ключевым словом VALUES. При этом первое в списке значение вводится в первый столбец таблицы, второе значение – во второй столбец и т.д. Порядок столбцов задается при создании таблицы.  Данная форма оператора INSERT не очень надежна, поскольку нетрудно ошибиться в порядке вводимых значений.

INSERT INTO имяТаблицы (списокСтолбцов) VALUES (списокЗначений) – вставляет пустую запись в указанную таблицу и вводит в заданные столбцы значения из указанного списка. При этом в первый столбец из списокСтолбцов вводится первое значение из списокЗначений, во второй столбец – второе значение и т.д. Порядок имен в списке можеть отличаться от их порядка, заданного при создании таблицы. Столбцы, которые не указаны в списке, заполняются значениями NULL. 

INSERT INTO имяТаблицы (списокСтолбцов) SELECT ...вставляет в указанную таблицу записи, возвращаемые запросом на выборку. На практике нередко требуется загрузить в одну таблицу данные из другой таблицы. Например,

INSERT INTO books

  (id, title, author_id, subject_id)

SELECT book_id, title, author_id, subject_id

FROM book_queue

WHERE subject_id = 4;

6.2. Удаление записей

Для удаления записей из таблицы применяется оператор DELETE (удалить):

 DELETE

FROM имяТаблицы

WHERE условие;

Данный оператор удаляет из указанной таблицы записи (а не отдельные значения столбцов), которые удовлетворяют указанному условию. 

Следующий запрос удаляет записи из таблицы stock, в которых значение столбца stock равно нулю. Если подходящих записей несколько, все они будут удалены.

DELETE

FROM stock

WHERE stock = 0;

В операторе WHERE может находиться подзапрос на выборку данных (оператор SELECT). Подзапросы в операторе DELETE работают точно так же, как и в операторе SELECT.

Операция удаления записей из таблицы является опасной в том смысле, что связана с риском необратимых потерь данных в случае ошибок. Чтобы избежать неприятностей, перед удалением записей рекомендуется сначала выполнить соответствующий запрос на выборку, чтобы просмотреть, какие записи будут удалены. Так, например, перед выполнением рассмотренного ранее запроса на удаление не помешает выполнить соответствующий запрос на выборку:

SELECT *

FROM stock

WHERE stock = 0;

Для удаления всех записей из таблицы достаточно использовать оператор DELETE без ключевого слова WHERE. При этом сама таблица со всеми определенными в ней столбцами остается и готова для вставки новых записей. Например,

DELETE

FROM stock;

6.3. Изменение данных

Для изменения значений столбцов таблицы применяется оператор UPDATE (изменить, обновить). Чтобы изменить значения в одном столбце таблицы в тех записях, которые удовлетворяют некоторому условию, следует выполнить такой запрос:

 UPDATE имяТаблицы

 SET имяСтолбца = значение

 WHERE условие;

За ключевым словом SET (установить) следует выражение равенства, в левой части которого указывается имя столбца, а в правой – выражение, значение которого следует сделать значением данного столбца. Эти установки будут выполнены в тех записях, которые удовлетворяют условию в операторе WHERE.

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

UPDATE publishers

SET name = 'O\'Reilly & Associates',

address = 'O\'Reilly & Associates, Inc. '

 || '101 Morris St, Sebastopol, CA 95472'

WHERE id = 113;

Использование оператора WHERE в операторе UPDATE не обязательно. Если он отсутствует, то указанные в SET изменения будут произведены для всех записей таблицы.

Операция изменения записей, как и их удаление, связана с риском необратимых потерь данных в случае ошибок. Чтобы избежать подобных неприятностей, перед обновлением записей рекомендуется выполнить соответствующий запрос на выборку, чтобы просмотреть, какие записи будут изменены. Так, например, перед выполнением приведенного ранее запроса на обновление данных не помешает выполнить соответствующий запрос на выборку:

SELECT *

FROM publishers

WHERE id = 113;

Условие в операторе WHERE может содержать подзапросы, в том числе и связанные.

Некоторые СУБД (например, PostgreSQL) имеют расширение стандарта SQL, позволяющее обновлять одну таблицу данными из другой. В этом случае команда UPDATE дополняется поддержкой секции FROM. Секция FROM позволяет получать входные данные из других наборов данных (таблиц и подзапросов).

Например, обновим данные таблицы stock по данным таблицы stock_backup:

UPDATE stock

SET retail = stock_backup.retail

FROM stock_backup

WHERE stock.isbn = stock_backup.isbn;

Секция WHERE описывает связь между обновляемой таблицей и источником. Каждый раз, когда в таблицах находятся совпадающие значения isbn, поле retail в таблице stock обновляется значением из резервной таблицы stock_backup.

Секция FROM поддерживает все разновидности синтаксиса JOIN, что открывает широкие возможности обновления данных в существующих наборах.


Лабораторная работа 6

В базе данных с именем вашей группы создать и выполнить следующие запросы на языке SQL:

  1.  Создать таблицу для хранения данных о людях, характеризуемых фамилиями, именами, возрастом (число прожитых лет), весом (в кг) и ростом (в см).
  2.  Внести в созданную таблицу данные о шести произвольных людях в возрасте от 16 до 50 лет, имеющих вес от 40,5 до 99,5 кг и рост 150 – 195 см.
  3.  Удалить из таблицы строки, содержащие сведения о людях моложе 20 лет.
  4.  Создать вторую таблицу, включив в нее из первой таблицы данные о людях старше 20 лет и выше 180 см.

SELECT <список полей> INTO <новая таблица>

FROM <исходная таблица>

[WHERE …];

  1.  Преобразовать первую таблицу таким образом, чтобы она содержала данные о росте в дюймах, а весе – в фунтах (1 фунт = 454 г, 1 дюйм = 2,54 см).
  2.  Добавить во вторую таблицу данные только о фамилии, весе и росте двух некоторых человек.
  3.  Добавить во вторую таблицу данные из первой таблицы о людях от 20 до 30 лет включительно.
  4.  Увеличить на 1 возраст в первой таблице тем людям, чья фамилия совпадает с фамилией самого молодого человека из второй таблицы.
  5.  Из первой таблицы удалить строки о тех людих, данных о которые содержатся также и во второй таблице.

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


 

А также другие работы, которые могут Вас заинтересовать

37091. Башкортостан – гордимся мы историей твоей! 22.02 KB
  Самая большая и красивая среди них красавица Агидель. И мы хотим рассказать вам историю о том как появилась наша Агидель. Роли: Агидель Рафикова Ашак Мутигуллин Джигит Салимгареев Друзья джигита Арсланов Давлетшин Ахметзянов Ведущий Шайхуллина. У седого Урала имелась дочь – красавица Агидель.
37092. Национальный вопрос в России в начале XX века. Политические партии о путях его решения 32.5 KB
  Исторический путь России в XX в. очевидной стала необходимость преодоления отставания России от передовых индустриально развитых государств во всех сферах жизни общества. Незавершенность индустриальных преобразований сделала аграрный вопрос в России ключевым начавшегося XX в.
37093. Причины Первой мировой войны 44.5 KB
  в России была объявлена всеобщая мобилизация но не дожидаясь ответа в ночь с 31 июля на 1 августа Германия предъявила ультиматум России об отмене мобилизации. Германия объявила войну России. 23 августа Франция и Англия заявили о своей поддержке России. 3 августа Германия объявила войну Франции 6 августа войну России объявила АвстроВенгрия.
37094. Февральская революция 1917 18.58 KB
  2 Одновременно с возникновением Временного правительства и подчиненных ему административных учреждений сложилась другая система органов власти – советы рабочих солдатских и крестьянских депутатов. Именно такой подход был наиболее юридически грамотным но стремление Временного правительства действовать строго в рамках закона интерпретировалось как нежелание учитывать интересы трудящихся. Падению авторитета Временного правительства непосредственно способствовала и ситуация двоевластия. 28 февраля на заседании Исполкома Петроградского Совета...
37095. 1917 год – от Февраля к Октябрю: борьба политических сил за выбор пути развития страны 22.69 KB
  правительство приняло решение о введении в Петрограде карточной системы распределения продуктов. Петроградский Совет стал первым народным правительством. Вечером 2 марта было сформировано Временное правительство. Временное правительство выражало интересы буржуазнопомещичьих кругов.
37096. Формирование советской политической системы. Временный блок большевиков с левыми эсерами. Разгон Учредительного собрания 21.09 KB
  Для укрепления власти большевики стремились привлечь на свою сторону крестьянство. Большевики и левые эсеры полностью поддержали политику Советского правительства и выступили против передачи власти предстоящему Учредительному собранию. Вскоре новый исполком крестьянского съезда Советов в состав которого были избраны только большевики и левые эсеры присоединился к ВЦИКу.1917 большевики заключили официальный блок с левыми эсерами которые вошли в правительство и возглавили пятьнаркоматов.
37097. Белое движение 15.26 KB
  Цель инициаторов Белого движения ген. Причинами поражения Белого движения являлись: недостаточно скоординированные действия разрозненность очагов антибольшевистского сопротивления отсутствие детальной политической программы поддержки широких слоев населения прежде всего крестьянства. Красное движение Состав красного движения: пролетариат бедное крестьянство солдаты часть интеллигенции и офицерства. Более однородный состав Представители красного движения:...
37098. ВОЕ́ННЫЙ КОММУНИ́ЗМ 12.75 KB
  Политика военного коммунизма включала комплекс мероприятий затронувших экономическую и социальнополитическую сферу. Основой военного коммунизма были чрезвычайные меры в снабжении городов и армии продовольствием свертывание товарноденежных отношений национализации всей промышленности включая мелкую продразверстка снабжение населения продовольственными и промышленными товарами по карточкам всеобщая трудовая повинность и максимальная централизация управления народным хозяйством и страной в целом....
37099. Причины перехода к НЭПу 16.36 KB
  Массовые крестьянские восстания Падение промышленного производства Волнения городского населения в 7 раз Беспорядки в армии и на флоте Уменьшение валовой продукции Угроза разрыва между рабочим классом и крестьянством Необходимость создания механизма реализации материальных интересов всех слоев населения Обобщение предыдущей практики социалистического строительства Новая экономическая политика экономическая политика проводившаяся в Советской России и СССР в 1920е годы. Новая экономическая политика имела целью восстановление...