МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Р. М или Р. М. Риордан «Понятие об операторе UPDATE» Оператор UPDATE позволяет изменять значения в одной или в нескольких строках таблицы. Базовый синтаксис оператора UPDATE следующий: UPDATE таблица_или_представление SET объекты_изменения [WHERE (условие)] Подобно оператору INSERT, один оператор UPDATE может модифицировать только одну таблицу или представление. Для обновления представления с помощью оператора UPDATE существуют те же ограничения, что и для обновления представления с помощью оператора INSERT: представление не должно содержать функций агрегирования, таких как COUNT или AVG; представление не должно содержать TOP, GROUP BY, UNION или DISTINCT; представление не должно содержать вычисляемых столбцов; представление должно ссылаться на таблицу, указанную в фразе FROM; оператор UPDATE должен модифицировать столбцы только из одной таблицы. За ключевым словом SET следует перечень подлежащих обновлению столбцов, отделяемых запятыми, а также их новые значения. Форма записи при этом следующая: имя_столбца = новое_значение. Новое значение может быть константой или выражением, которое также может ссылаться на сам столбец. Например, выражение SalesPrice = SalesPrice * .90 будет уменьшать значения в столбце SalesPrice на 10 процентов. Фраза WHERE является необязательной. Если она имеется, то должна задавать строки, подлежащие обновлению. Если фраза WHERE в операторе UPDATE отсутствует, будут модифицироваться все строки в таблице. Использование оператора UPDATE Как и большинство других форм запросов, вы можете создавать запрос UPDATE в конструкторе запросов Query Designer с использованием панели сетки Grid Pane, либо непосредственно вводя оператор в панели SQL Pane. Модификация строк с использованием панели сетки Grid Pane Панель сетки Grid Pane конструктора запросов предоставляет возможности для создания запроса UPDATE. Модифицируйте все строки с использованием панели сетки Grid Pane 1. Перейдите к папке Tables базы данных Aromatherapy, щелкните правой кнопкой мыши на таблице MyOils в рабочей панели Details Pane, укажите на Open Table (Открытие таблицы) и выберите Query (Запрос). Будет открыт конструктор запросов Query Designer. 1 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Скройте панель SQL Pane и панель диаграмм Diagram Pane, щелкнув на кнопке SQL и на кнопке Diagram (Диаграмма). Не закрывая конструктор запросов Query Designer, откройте новое представление таблицы MyOils, щелкнув правой кнопкой мыши на таблице MyOils в рабочей панели Details Pane, указав на Open Table (Открытие таблицы) и выбрав Return All Rows (Показать все строки). Будет открыт новый экземпляр конструктора запросов Query Designer, отображающий все строки из таблицы MyOils. 2 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Перейдите в окно конструктора запросов Query Designer, отображающее панель сетки Grid Pane и панель результатов Results Pane. Щелкните на кнопке Change Query Type (Изменить тип запроса) в панели инструментов конструктора запросов и выберите Update (Модифицировать). Конструктор запросов добавит в сетку столбец нового значения New Value. Добавьте столбец описания Description в панель сетки Grid Pane и установите на ячейке New Value значение "Description". Нажмите кнопку Run (Выполнить) в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит сообщение, подтверждающее, что строки были модифицированы. 3 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE 2. Перейдите к окну конструктора запросов Query Designer, отображающему все строки из таблицы MyOils. 3. Нажмите кнопку Run (Выполнить) в панели инструментов конструктора запросов, чтобы повторно исполнить запрос SELECT *. Модифицируйте одну строку с использованием панели сетки Grid Pane 1. Перейдите к окну конструктора запросов Query Designer, содержащему оператор UPDATE. 2. Измените значение ячейки New Value на "Description of Basil". 3. Добавьте столбец OilName в сетку и установите для него в ячейке условия Criteria значение = "Basil". 4 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE 4. Нажмите кнопку Run (Выполнить) в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит сообщение, подтверждающее, что строка была модифицирована. 5. Перейдите к окну конструктора запросов Query Designer, отображающему все строки из таблицы MyOils. Нажмите кнопку Run (Выполнить) в панели инструментов 6. конструктора запросов, чтобы исполнить запрос SELECT *. Модификация строк с использованием панели SQL Pane Как и для других форм запросов, непосредственный ввод оператора UPDATE в панели SQL обеспечивает большую гибкость. Модифицируйте все строки с использованием панели SQL Pane 1. Перейдите к окну, содержащему оператор UPDATE. 2. Отобразите панель SQL Pane и скройте панель сетки Grid Pane. 5 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE 3. Измените оператор SQL следующим образом: 4. UPDATE MyOils 5. SET Sample = "Sample Field" Нажмите кнопку Run (Выполнить) в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит сообщение о количестве строк, подвергшихся изменениям в результате выполнения запроса. 6. Перейдите к окну конструктора запросов Query Designer, отображающему все строки из таблицы MyOils. 7. Нажмите кнопку Run (Выполнить) в панели инструментов конструктора запросов, чтобы повторно исполнить запрос SELECT *. Модифицируйте строки с использованием условия WHERE 1. Перейдите к окну конструктора запросов Query Designer, содержащему оператор UPDATE. 2. Измените оператор SQL следующим образом: 3. UPDATE MyOils 4. SET Description = "Description of Frankincense" 5. WHERE OilName = "Frankincense" 6 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE 6. Нажмите кнопку Run (Выполнить) в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит сообщение о количестве строк, подвергшихся изменениям в результате выполнения запроса. 7. Вернитесь к окну конструктора запросов Query Designer, отображающему все строки из таблицы MyOils. 8. Нажмите кнопку Run (Выполнить) в панели инструментов конструктора запросов, чтобы повторно исполнить базовый запрос SELECT *. Модификация строк с использованием фразы FROM Можно использовать фразу SELECT в операторе INSERT, чтобы вставить значения из другой таблицы. Оператор UPDATE использует фразу FROM для извлечения значений из другой таблицы: UPDATE таблица_или_представление SET объекты_изменения FROM таблица_или_представление оператор_связывания условие_связывания [WHERE (условие_ограничения)] Фраза FROM здесь имеет тот же формат, что и фраза FROM в операторе SELECT. Так же, как и для оператора SELECT, вы можете задать более одной таблицы или представления путем добавления операторов связывания. Необязательное условие WHERE может использоваться для ограничения множества модифицируемых строк. 7 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Модифицируйте строки с использованием оператора FROM Вернитесь к окну конструктора запросов Query Designer, содержащему оператор UPDATE. Измените оператор SQL следующим образом: UPDATE MyOils SET MyOils.PlantPartID = Oils.PlantPartID FROM MyOils INNER JOIN Oils ON MyOils.OilName = Oils.OilName Внимание! Вы не можете использовать столбцы OilID для связывания двух таблиц, поскольку команды INSERT, которые вы использовали для добавления строк в создали новые значения OilID для каждой строки в таблице MyOils. Нажмите кнопку Run (Выполнить) в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит сообщение о количестве строк, подвергшихся изменениям. Вернитесь к окну конструктора запросов Query Designer, отображающему все строки из таблицы MyOils. Нажмите кнопку Run (Выполнить) в панели инструментов конструктора запросов, чтобы исполнить запрос SELECT *. 8 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE SQL Server предоставляет два оператора для удаления строк из таблицы или представления: оператор DELETE и оператор TRUNCATE TABLE. Оператор TRUNCATE TABLE безо всяких условий удаляет все строки в таблице. Оператор DELETE обеспечивает большую гибкость и дает возможность удалять только избранные строки с помощью фразы WHERE, которая может включать дополнительные таблицы и представления. Базовая структура оператора DELETE несколько отличается от других операторов SQL, с которыми мы сталкивались ранее. Его синтаксис следующий: DELETE таблица_или_представление [FROM источники_таблиц] [WHERE условие_отбора] Список столбцов в операторе DELETE не указывается, поскольку при удалении строки удаляются также все столбцы. Необязательная фраза WHERE дает возможность указывать, какие строки следует удалить. Если фраза WHERE опущена, удаляются все строки в указанной таблице или представлении. Фраза FROM, также необязательная, позволяет задавать дополнительные источники (таблицы или представления), которые будут использоваться в условии отбора в фразе WHERE. Подобный синтаксис оператора может ввести в заблуждение, поскольку строки не будут удаляться из таблиц и представлений, указанных в фразе FROM. Если в фразе FROM вы указываете более одной таблицы или представления, их имена следует отделять запятыми. 9