Page 130 - 4636
P. 130

("Дід Мороз", "На Далекій Дикій Півночі");
              Такий підхід корисний за наявності лише часткової інформації про конкретний запис або
        якщо  кілька  полів  запису  є  необов'язковими.  Аналогічний  результат  можна  отримати,
        звернувшись до наступного синтаксису:
              insertintocustomers
              setname"Шерлок Холмс",
              address="2216, Бейкер-стрит", city="Jl0Hfl0H" ;
              Ви  могли  звернути  увагу,  що  при  додаванні  клієнтки  Саша  Валенте  й  для  стовпця
        customerid було зазначено нульове значення (NULL), а при додаванні інших клієнтів цей стовпець
        просто  ігнорувався.  Якщо  пам'ятаєте,  при  створенні  бази  даних  стовпець  customerid  був
        створений  як  первинний  ключ  таблиці  замовників.  Тому  такий  підхід  може  здатися  дивним.
        Однак це поле було визначено як AUTO_INCREMENT. Це означає, що при вставці в це поле рядки
        зі  значенням  NULL  або  без  значення  MySQL  автоматично  згенерує  наступне  по  порядку  і
        вставить його. Це досить корисна властивість.
              У таблиці можна вставити кілька рядків відразу. Кожен рядок має бути укладений в окремі
        квадратні дужки, розділені комами.
              Для       оператора        INSERT         можливе        лише        кілька      модифікацій.
        ПіслясловаINSERTможнавказати,             LOW_PRIORITYабоDELAYED.               Ключове        слово
        LOW_PRIORITY  означає,  що  система  може  почекати  і  виконати  вставку  пізніше,коли  дані  не
        будуть  читатися  з  таблиці.  Ключове  слово  DELAYED  вказує,  що  вставляються  дані  будуть
        буферизуватися.  Якщо  сервер  зайнятий,  ви  зможете  продовжувати  виконувати  запити,  а  не
        чекати завершення операції INSERT.
              Безпосередньо після, LOW_PRIORITY або DELAYED  можна вказати необов'язкове ключове
        слово  IGNORE,  яке  означає,  що  при  спробі  вставки  рядків,  які  викликають  дублювання
        унікальних  ключів,  ці  рядки  просто  ігноруються.  Інший  варіант  поведінки  в  такій  ситуації
        полягає  в  тому,  щоб  помістити  в  кінці  оператора  INSERT  конструкцію  ON  DUPLICATE
        KEYUPDATE вираз. Це може використовуватися для зміни дубльованого значення за допомогою
        звичайного оператора UPDATE (який розглядається далі в лекції).
              Щоб  сказане  стало  зрозуміліше,  заповнимо  базу  даних  простими  прикладами  даних.
        Використовуваний для цього код являє собою послідовність всіх простих операторів INSERT, в
        яких  застосовується  описаний  вище  підхід  вставки  декількох  рядків.  Сценарій,  що  виконує  ці
        операції,  наведений  у  лістингу  6.1.  Крім  того,  його  можна  знайти  у  файлі
        \chapterlO\book_insert.sql завантаження коду.
           Лістинг 7.1. book_insert. sql - SQL-код для заповнення даними таблиць БД “Буквофил”
           use books;
           insert into customers values
           (3, "Саша Валентей", "12, вул. Гудвіна", "м. Смарагдове"),
           (4, "Єва Легка", "34, пр. Незнайки", "м. Сонячне"),
           (5, "Слава Моргунов", "56, пр. Поттера", "м. Хогвартс"); insert
           into orders values
           (NULL, 5, 69.98, "2008-04-02"),
           (NULL, 3, 49.99, "2008-04-15"),
           (NULL, 4, 74.98, "2008-04-19"),
           (NULL, 5, 24.99, "2008-05-01");

           insert into books values
           ("5-8459-0046-8", "Майкл Морган", "Java 2. Керівництво
           розробника", 34.99),
           ("5-8459-1082-Х", "Кристофер Негус", "Linux. Біблія користувача",
           24.99),
                                                            127
   125   126   127   128   129   130   131   132   133   134   135