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