русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Заміна існуючих даних.


Дата добавления: 2015-07-09; просмотров: 460; Нарушение авторских прав


Набагато більш серйозним питанням є можливість зміни деяких або всіх значень в існуючому рядку таблиці, що реалізується за допомогою команди UPDATE.

Ця команда містить ключове слово UPDATE, де указується ім'я використовуваної таблиці, і пропозиція SET, яка визначає зміну, що вноситься, для необхідного поля таблиці.

Наприклад, щоб змінити оцінки всіх студентів на 5, необхідно використати команду:

UPDATE USP

SET OCENKA =5;

Звичайно, набагато частіше доводиться указувати не все. а тільки певні рядки таблиці для зміни єдиного значення, і з цією метою разом з UPDATE можна використати предикаты^ Наприклад, змінити оцінки на 5 по предмету з кодом 2003. можна виконавши таку команду:

UPDATE USP

SET OCENKA = 5 WHERE PNUM = 2003;

За допомогою команди UPDATE можна модифікувати дані з декількох полів - пропозиція SET може призначати будь-яке число столбцов, відокремлюваних комами. Всі вказані призначення можуть бути зроблені для будь-якого табличного рядка, але тільки для однієї в кожний момент часу. Припустимо, що викладач Вікуліна пішла на пенсію, і замість неї заняття повинна вести викладач Федченко. Це можна реалізувати такою командою:

UPDATE TEACHERS

SET TFAM = 'Федченко', TNAME =

'Светлана', TOTCH = 'Геннадиевна', TDATE =01/09/1999 WHERE TNUM = 4001;

Ця команда передасть новому викладачу Федченко всі поточні учбові предмети з таблиці PREDMET - в нашому прикладі це буде фізика. Проте майте на увазі, що модифікувати відразу багато таблиць в одній команді UPDATE не можна, а отже, не можна і використати назву (префікс) таблиці з ім'ям поля для цієї команди. Тобто, наприклад, пропозиція SET TEACHERS . TFAM = 'Федченко1 викличе помилку.

В пропозиції SET команди UPDATE можна використати вирази, розташовуючи їх в списку для того поля, яке необхідно змінити (нагадаємо, що в пропозиції VALUES команди INSERT виразу використати не можна). Наприклад, для того, щоб збільшити стипендію в 2 разу, можна використати наступну конструкцію:



UPDATE STUDENTS

SET STIP = STIP*2;

При цьому кожного разу. коли команда посилається до вказаного значення поля в пропозиції SET. дія виробляється, зрозуміло, над ще не модифікованими даними поточного запису.

Крім того, можна використати складніші предикати вибору запису для модифікації. Наприклад, якщо необхідно подвоїти тільки стипендію розміром 25.50, то команда буде наступною:

UPDATE STUDENTS

SET STIP = STIP*2

WHERE STIP = 25.50;

і будуть змінені тільки задовольняючі предикату значення.

До речі кажучи, команда UPDATE може працювати з NULL значеннями. Т.к. пропозиція SET не є предикатом, то можна вводити NULL значення так само, як вводяться звичайні дані. Отже, якщо необхідно змінити всі оцінки студентів по учбовому предмету з кодом 2003 на NULL, можна скористатися наступною командою:

UPDATE USP

SET OCENKA = NULL

WHERE PNUM = 2003;

Могутнім засобом модифікації даних є використовування підзапитів в команді модифікації UPDATE Важливий принцип, якого треба дотримувати при роботі з командами модифікації і підзапитами, полягає в тому. що не можна в пропозиції FROM будь-якого підзапиту модифікувати таблицю, до якої посилається основна команда.

Звернете увагу на наступний важливий момент - в команді модифікації UPDATE (до речі, так само. як і в команді INSERT) може виникнути проблематична ситуація, пов'язана з можливими дублікатами рядків, одержуваними в результаті вкладеного запиту. В цьому випадку, якщо в таблиці, що модифікується, є обмеження, які вимушують її значення бути унікальними, команда модифікації або вставки потерпить невдачу. Тому рекомендується яким-небудь чином з'ясувати те, що ці значення могли були вже бути використані в таблиці, перш ніж намагатися вставити або модифікувати запис. Це можна реалізувати за допомогою додавання вкладеного підзапиту, що використовує в предикаті оператори EXISTS, IN < > або аналогічні. -

З другого боку, не варто забувати про заборону посилання у вкладених запитах до таблиці, яка модифікується командою UPDATE. З цієї причини запити і підзапити в командах модифікації мають порою достатньо складну структуру. Крім того, усередині необов'язкового предиката цієї команди можна використати співвіднесені підзапити, анатогично тому як це робиться для DELETE.

Наприклад, наступний запит збільшує розмір стипендії в 2 разу студентам, в яких є оцінки, принаймні. по двох учбових предметах:

UPDATE STUDENTS

SET STIP = STIP*2

WHERE 2 <=

(SELECT COUNT (SNUM)

FROM USP

WHERE STUDENTS.SNUM = USP.SNUM);

Тут внутрішній запит підраховує кількість записів в таблиці успішності для кожного студента, і, якщо воно 2 або більше, предикат основної функції стає істинним, а розмір стипендії модифікується

Розглянемо ще один, достатньо складний, приклад із співвіднесеним підзапитом. Тут будемо модифікувати розмір стипендії для студентів, що мають мінімальний бал в той або інший день:

UPDATE STUDENTS

SET STIP = STIP - 1 WHERE SNUM IN

(SELECT SNUM

FROM USP FIRST

WHERE OCENKA =

(SELECT MIN (OCENKA)

FROM USP SECOND

WHERE FIRST.UDATE = SECOND.UDATE));

Як вже говорилося, до істотного недоліку UPDATE варто віднести неможливість послатися на таблицю, задіяну в будь-якому підзапиті з команди модифікації. Наприклад, неможливо однією командою виконати таку дію, як модифікація оцінок для студентів, в яких оцінки нижче середній. Для виконання цієї дії спочатку доведеться виконати пошук середньої оцінки

SELECT AVG (OCENKA) FROM USP;

а потім результат цього запиту (4.2) використати для модифікації

UPDATE USP

SET OCENKA = OCENKA - 1

WHERE OCENKA < 4.2;

Таким чином, команда UPDATE, що управляє змістом запису, є однією з ключових в мові SQL. Вона застосовна як до всіх рядків таблиці, якщо не використовується предикат, визначальний записи, що модифікуються, так і до конкретних рядків за наявності предиката, який, у свою чергу, може мати достатньо складну структуру.

 

Розділ 2.Способи створення баз даних.

 



<== предыдущая лекция | следующая лекция ==>
Видалення даних. | 


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.342 сек.