- •4.1. Історія мови sql та огляд її можливостей
- •4.2. Засоби пошуку даних
- •4.2.1. Основні конструкції мови, призначені для вибирання даних
- •4.2.2. Вирази, умови та оператори
- •4.2.3. Вибирання з кількох таблиць
- •4.2.4. Використання агрегатних функцій
- •4.2.5. Фраза group by. Групування таблиці за рядками
- •4.2.6. Фраза having. Умова вибирання для груп рядків
- •4.2.8. Порядок обчислення запитів
- •4.2.9. Підзапити
- •4.2.7. Фраза order by. Впорядкування рядків
- •4.2.10. Використання предикатів any, all, exists та in
- •4.2.11. Використання теоретико-множинних операторів
- •4.2.12. Запити, в яких реалізується квантор загальності
- •4.2.13, Використання невизначених значень
- •4.3. Засоби маніпулювання даними
- •4.3.1. Додавання рядків до таблиці. Оператор insert
- •4.3.2. Оновлення даних. Оператор update
- •4.3.3. Видалення рядків таблиці. Оператор delete
- •4.4. Операції над схемою бази даних
- •4.4.1. Створення бази даних. Оператор create database
- •4.4.2. Створення таблиці. Оператор create table
- •4.5.2. Використання індексів
- •4.6. Транзакції
- •4.6.1. Початок і завершення транзакції
- •4.6.2. Скасування транзакції. Точки збереження
- •4.7. Тригери
- •4.8. Додаткові можливості
4.3.1. Додавання рядків до таблиці. Оператор insert
Оператор INSERT дає змогу вводити дані до БД. Є два різновиди цього оператора:
INSERT...VALUES
INSERT...SELECT
Оператор INSERT...VALUES
Цей оператор дає можливість додати до таблиці один рядок і має такий формат:
INSERT INTO <ім'я таблиці> (<поле 1> [. <поле 2>]...) VALUES (<значення 1> [. <значення 2>]...)
Виконання цього оператора потребує дотримання певних правил:
+ типи даних, що вставляються, мають узгоджуватися з типами даних відповідних стовпців;
розміри даних мають відповідати розмірам стовпців;
порядок даних у фразі VALUES має відповідати порядку стовпців у фразі INSERT INTO.
Наведемо кілька прикладів.
Запит 4.37
Додати рядок до таблиці ФАКУЛЬТЕТ.
INSERT INTO ФАКУЛЬТЕТ (#F. Назва. Декан. Корпус. Фонд) VALUES (15. "інформатики". "Сидоров". 5. 25000)
Список імен стовпців не є обов'язковим, якщо вставляються значення всіх стовпців. У цьому випадку порядок запису значень має збігатися з порядком стовпців у таблиці.
Запит 4.38
Додати рядок до таблиці КАФЕДРА.
INSERT INTO КАФЕДРА
VALUES (03. 15. "АСУ". "Петренко". "5". 5500)
Якщо значення стовпців не відомі, то слід використовувати NULL-значення.
Запит 4.39
Додати рядок до таблиці ВИКЛАДАЧ.
INSERT INTO ВИКЛАДАЧ
VALUES (173. 13. "Резніченко". NULL. "526-18-15")
Багато СКБД дають змогу означувати стовпці із властивістю UNIQUE. В межах таблиці значення такого стовпця мають бути унікальними. Якщо це обмеження порушується, під час додавання рядків можуть виникнути помилки. Зазначимо, що стовпці із властивістю UNIQUE не можуть містити NULL-значень.
Оператор INSERT...SELECT
Цей оператор дає змогу додати до таблиці множину рядків (результат виконання запиту) і, таким чином, дозволяє копіювати інформацію з однієї чи кількох таблиць до іншої. Часто за допомогою оператора INSERT...SELECT дані копіюються до похідних таблиць, що створюються з метою підвищення продуктивності виконання тих чи інших операцій над базою даних. Оператор має такий формат:
INSERT INTO <:ім'я таблиці> (<список полів>)
SELECT <список полів>
FROM <ім'я таблиці>
WHERE <умова пошуку>
Вихідні результати стандартного оператора SELECT є вхідними даними для оператора INSERT. Наведемо приклад.
Запит 4.40
Додати до таблиці ТИМЧАСОВА, що має стовпці Назва_факультету, Назва^кафедри, Прі-звище_викладача, наявні в базі даних відомості про викладачів, а також про кафедри та факультети, де вони працюють.
INSERT INTO ТИМЧАСОВА (Назва^факультету, Назва_кафедри. Прізвище_викладача) SELECT ФАКУЛЬТЕТ.Назва. КАФЕДРА.Назва. ВИКЛАДАЧ.Прізвище FROM ФАКУЛЬТЕТ. КАФЕДРА. ВИКЛАДАЧ
WHERE ФАКУЛЬТЕТ.#F = КАФЕДРА.#F AND КАФЕДPA.#D = ВИКЛАДАЧ.#0
Для оператора INSERT...SELECT мають виконуватися додаткові правила: + оператор SELECT не може вибирати рядок із таблиці, до якої здійснюється додавання; + кількість стовпців у фразі INSERT INTO має збігатися з кількістю стовпців у фразі SELECT; ♦ типи даних стовпців у фразі INSERT INTO мають збігатися з типами даних стовпців у фразі SELECT.
