15820

Основы Transact SQL: Добавление, изменение и удаление данных

Лекция

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

Основы Transact SQL: Добавление изменение и удаление данных. Основы Transact SQL: Добавление изменение и удаление данных в таблицах Запросы рассмотренные ранее были направлены на то чтобы получить данные содержащиеся в существующих таблицах базы данных. Главным ключевым сло...

Русский

2013-06-18

63 KB

18 чел.

Основы Transact SQL: Добавление, изменение и удаление данных.

Основы Transact SQL: Добавление, изменение и удаление данных в таблицах

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

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

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

 INSERT INTO имяТаблицы VALUES (списокЗначений)

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

 INSERT INTO имяТаблицы (списокСтолбцов) VALUES (списокЗначений)

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

INSERT INTO City(CityName)

VALUES('Калуга')

Обратите внимание, что столбец IdCity не задается, поскольку он является счетчиком и заполняется СУБД автоматически.

 INSERT INTO имяТаблицы (списокСтолбцов) SELECT ...

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

 
INSERT INTO City(CityName)
SELECT 'Уфа'
UNION
SELECT 'Волгоград'

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

Для удаления записей из таблицы применяется оператор DELETE:DELETE FROM имяТаблицы WHERE условие;

Данный оператор удаляет из указанной таблицы записи (а не отдельные значения столбцов), которые удовлетворяют указанному условию. Условие — это логическое выражение, различные конструкции которого были рассмотрены в предыдущих лабораторных занятиях.
Следующий запрос удаляет записи из таблицы Customer, в которой значение столбца LName равно 'Иванов':

 DELETE FROM Customer
WHERE LName = 'Иванов'

 Если таблица содержатся сведения о нескольких клиентах с фамилией Иванов, то все они будут удалены. В операторе WHERE может находиться подзапрос на выборку данных (оператор SELECT). Подзапросы в операторе DELETE работают точно так же, как и в операторе SELECT. Следующий запрос удаляет всех клиентов из города Москва, при этом уникальный идентификатор города возвращается с помощью подзапроса.

 DELETE FROM Customer
WHERE IdCity IN (SELECT IdCity FROM City WHERE CityName = 'Москва')

 Transact-SQL расширяет стандартный SQL, позволяя использовать в инструкции DELETE еще одно предложение FROM. Это расширение, в котором задается соединение, может быть использовано вместо вложенного запроса в предложении WHERE для указания удаляемых строк. Оно позволяет задавать данные из второго FROM и удалять соответствующие строки из таблицы в первом предложении FROM. В частности предыдущий запрос может быть переписан следующим образом

 DELETE FROM Customer

FROM Customer k INNER JOIN

City c ON k.IdCity = c.IdCity AND c.CityName = 'Москва' 

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

 SELECT *

FROM Customer k INNER JOIN City c ON k.IdCity = c.IdCity AND c.CityName = 'Москва'

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

 DELETE FROM Product

 Задание для самостоятельной работы: Сформулируйте на языке SQL запрос на удаление всех заказов, не имеющих в составе ни одного товара (т. е. все пустые заказы).

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

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

 UPDATE имяТаблицы SET имяСтолбца = значение WHERE условие;

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

 UPDATE имяТаблицы SET имяСтолбца1 = значение1, имяСтолбца2 = значение2, ... , имяСтолбцаN = значениеN WHERE условие;

 Например, следующий запрос изменяет фамилию и имя клиента с кодом 5.

 UPDATE Customer

SET FName='Иван', LName='Иванов' WHERE IdCust = 5

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

 Так же как и в инструкции DELETE условие в операторе WHERE инструкции UPDATE может содержать подзапросы, в том числе и связанные. Transact-SQL расширяет стандартный SQL, позволяя использовать в инструкции UPDATE предложение FROM (по аналогии с DELETE). Это расширение, в котором задается соединение, может быть использовано вместо вложенного запроса в предложении WHERE для указания обновляемых строк.

 Если обновляемый объект тот же самый, что и объект в предложении FROM, и в предложении FROM имеется только одна ссылка на этот объект, псевдоним объекта указывать необязательно. Если обновляемый объект встречается в предложении FROM несколько раз, одна и только одна ссылка на этот объект не должна указывать псевдоним таблицы. Все остальные ссылки на объект в предложении FROM должны включать псевдоним объекта.
Предположим, что требуется сделать 5% скидку по тем заказам клиентов, суммарная стоимость которых превышает 1000. Для этого следует изменить значения столбца Price, просто умножить их на 0,95. Однако эти изменения должны быть выполнены, только если суммарная стоимость заказа превышает 1000. Таким образом, в качестве критерия обновления записей в таблице OrdItem может быть задан запрос возвращающий список всех заказов с суммарной стоимостью более 1000.

 UPDATE OrdItem
SET Price = Price * 0.95
FROM OrdItem o INNER JOIN
(
SELECT IdOrd
FROM OrdItem
GROUP BY IdOrd
HAVING SUM(Qty*Price) > 1000) a ON o.IdOrd = a.IdOrd

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

 SELECT *
FROM OrdItem o INNER JOIN
(
SELECT IdOrd
FROM OrdItem
GROUP BY IdOrd
HAVING SUM(Qty*Price) > 1000) a ON o.IdOrd = a.IdOrd

 Задание для самостоятельной работы: Сформулируйте на языке SQL запрос имитирующий поступление на склад новой партий определенного товара (Обновление столбца InStock в таблице Product).


 

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

24765. Социальное управление: специфика, методы, подсистемы, функции 111.5 KB
  Содержание системы управления и внутренние принципы ее организации и самоорганизации определяет целеполагание связанное с прогнозированием и моделированием социальных систем. Организационноадминистративное воздействие осуществляется в следующих основных видах: прямое административное указание; установление правил регулирующих деятельность подчиненных; разработка и внедрение рекомендаций по организации и совершенствованию тех или иных процессов; контроль и надзор за деятельностью организаций и отдельных работников. Функция целеполагания...
24766. Понятие и содержание трудового договора 123.5 KB
  15 Трудового кодекса РФ под трудовыми отношениями понимаются отношения основанные на соглашении между работником и работодателем о личном выполнении работником за плату трудовой функции то есть работы по определенной специальности квалификации или должности подчинении работника правилам внутреннего трудового распорядка при обеспечении надлежащих условий труда а также своевременной и в полном объеме выплате ему заработной платы. Трудовой договор это соглашение между работодателем и работником в соответствии с которым работодатель...
24767. Государственное управление как объект АП регулирования 86.5 KB
  Государственное управление это один из видов деятельности государственных органов РФ по осуществлению государственной власти реализации государственновластных полномочий. Ветви власти взаимосвязаны но в то же время характеризуются определенной самостоятельностью. В широком смысле государственное управление осуществляется всеми ветвями власти. Система органов исполнительной власти в РФ.
24768. Сущность, содержание и структура системы национальной безопасности государства 42.5 KB
  Под национальной безопасностью страны необходимо понимать систему элементов связей и отношений обеспечивающую реализацию жизненно важных политических экономических военных гуманитарных экологических информационных и других интересов личности общества и государства. Национальные интересы – объективные потребности гражданина общества и государства вытекающие из особенностей социальноэкономического и политического устройства государства уровня его экономического развития исторически сложившегося места в международном разделении...
24769. Гражданские правоотношения: понятие, элементы, виды 109.5 KB
  Гражданские правоотношения: понятие элементы виды Гражданские правоотношения – общественные отношения урегулированные нормами ГП это связь субъектов наделенных взаимными правами и обязанностями.Субъекты: лица обладающие гражданскими правами и несущие гражданские обязанности в связи с участием в конкретном гражданском правоотношении.Объекты определенные цели на достижение которых направлены те или иные права. характер санкций применяемый в гражданском праве: Меры принуждения имеют имущественный характер и санкции являются...
24770. Экономическое понятие собственности и ее основные формы 213.5 KB
  В каждой стране в экономике имеется государственный сектор экономики что представляет общую черту современного рыночного хозяйства. В России предприятия государственного сектора экономики подразделяются на федеральные и муниципальные. Можно выделить следующие типы экономических систем: система современной рыночной экономики; система смешанной экономики; система традиционной нерыночной экономики; система административнокомандной экономики. Система современной рыночной экономики сегодня является доминирующей по причине высокой...
24771. Финансово-кредитная система РФ, ее структура и принципы формирования 197.5 KB
  Распределительная функция государственных и муниципальных финансов заключается в том что через распределение и перераспределение вновь созданной стоимости обеспечиваются общегосударственные потребности формируются источники финансирования общественного сектора экономики достигается сбалансированность бюджетов и внебюджетных фондов в рамках единой бюджетной системы РФ. Особую роль играет процесс перераспределения доходов между различными уровнями бюджетов. Бюджетная система Российской Федерации состоит из бюджетов трех уровней:...
24772. Предмет региональной экономики и управления. Место региональной экономики и управления в современной системе наук 116 KB
  Место региональной экономики и управления в современной системе наук. Главными составляющими предмета региональной экономики и управления являются: экономика отдельного региона; экономические связи между регионами; региональные системы национальная экономика как система взаимодействующих регионов; размещение производительных сил как процесса стихийного или целенаправленного распределения по территории средств производства и людей занятых в производстве; региональные аспекты экономической жизни экономику производства инвестиционного...
24773. Территориальные факторы и особенности расселения населения 80 KB
  Территориальные факторы и особенности расселения населения Размещение населения показывает распределение жителей по отдельным частям территории страны. Показателями размещения являются численность населения или доля от общей численности и плотность населения количество жителей на единицу площади. Если динамика населения страны в целом зависит в основном от естественного движения населения то изменение размещения населения внутри России связано в основном с миграционными процессами. Подавляющее большинство населения России проживает в...