Page 143 - 4636
P. 143

4 Рядкові підзапити
              Всі розглянуті досі підзапити повертали єдине значення, яке в більшості випадків дорівнює
        true  або  false  (як в  попередньому  прикладі,  що використовує  EXISTS).  Рядкові  підзапити
        повертають  цілий  рядок,  який  може  порівнюватися  з  цілим  рядком  у  зовнішньому  запиті.
        Зазвичай  такий  підхід  використовуєть  для  пошуку  рядків  таблиці,  які  також  існують  в  іншій
        таблиці. База даних  books не дозволяє привести хороший приклад, тому ми просто приведемо
        узагальнений приклад згаданого синтаксису:
              select cl, с2, сЗ
              from tl
              where (cl, c2, сЗ) in (select cl, c2, c3 from t2);
              5 Використання підзапиту як тимчасової таблиці
              Підзапит можна використовувати в конструкції FROM зовнішнього запиту. Цей підхід дає
        можливість  виконувати  запит  до  вихідних  даних  підзапиту,  розглядаючи  їх  як  тимчасову
        таблицю.
              Нижче наведено простий приклад:
              select * from(select customerid, name from customers where
        city='r. Сонячний')
              as box_hill_customers;
              Зверніть  увагу,  що  ми  помістили  під  запит  в  конструкцію  FROM.  Безпосередньо  після
        закриваючої  дужки під запиту результату  потрібно  присвоїти  якийсь  псевдонім.  Після  цього у
        зовнішньому запиті з псевдонімом можна працювати як з будь-якою іншою таблицею.

              7.9 Оновлення записів в базі даних

              Крім того, що дані необхідно витягувати з бази даних, дуже часто їх потрібно змінювати.
        Наприклад,  іноді  потрібно  підвищити  ціни  на  книги  в  базі  даних.  Це  можна  зробити  за
        допомогою оператора UPDATE.
              Типова форма цього оператора виглядає таким чином:
              UPDATE [LOW_PRIORITY] [IGNORE] ім'я_таблиціSET
        стовпець1=вираження1, стовпець2=вираження2, ...[WHERE умова][ORDER ВУ
        критерій_сортування][LIMIT кількість]
              Основна ідея полягає в оновленні таблиці з ім'ям ім'я_таблиці шляхом занесення в кожен
        зазначений  стовпець  відповідного  виразу.  Дію  оператора  UPDATE  можна  обмежити  певними
        рядками використовуючи конструкцію WHERE і обмеживши загальну кількість рядків, які будуть
        оновлені, за допомогою конструкції LIMIT. Конструкція ORDERBY зазвичай використовується в
        зв'язці з конструкцією LIMIT; наприклад, якщо необхідно оновити тільки перші 10 рядків, часто
        потрібно  спочатку  розташувати  рядки  в  певному  порядку.  Якщо  вказані  конструкції
        LOWPRIORITY і IGNORE, то вони працюють так само, як і в операторі INSERT.
              Розглянемо кілька прикладів.
              Якщо  потрібно  підвищити  ціну  абсолютно  всіх  книг  на  10%,  можна  скористатися
        оператором UPDATE без конструкції WHERE:
              update booksset price=price*l.1;
              Якщо ж потрібно змінити один рядок, скажімо, адреса певного клієнта, можна чинити так:
          update customersset address = ’78, пр. Знайки’where customerid = 4;
              Зміна після створення таблиць
              Крім  оновлення  рядків,  може  знадобитися  змінити  структуру  таблиць  у  базі  даних.  Для
        цього служить дуже гнучкий оператор ALTERTABLE.
              Його основна форма така:
              ALTERTABLE [IGNORE] имятаблицы зміна [, зміна ...]





                                                            140
   138   139   140   141   142   143   144   145   146   147   148