4. Маніпуляція даними
Язик маніпуляцій даними (DML) є частиною SQL, що забезпечує користувачеві бази даних можливість вносити реальні зміни в дані реляционной бази даних. За допомогою DML користувач може поповнювати таблиці новими даними, обновляти вже наявні дані й видаляти їх з таблиць. За допомогою команд DML можна також виконувати й деякі типи запитів.
В SQL є три основних команди DML.
INSERT UPDATE DELETE
Команда SELECT, що теж можна використати з командами DML, буде обговорюватися докладно в ході уроку 7, "Знайомство із запитами".
Заповнення таблиць новими даними
Заповнення таблиці даними - це процес уведення нових даних у таблицю або вручну за допомогою окремих команд, або автоматично за допомогою програм або яким-небудь іншим способом.
Те, які дані й у якій кількості можна буде при цьому вводити в таблицю, залежить від багатьох факторів, основними з яких є обмеження, задані при визначенні таблиці, фізичні розміри таблиці, типи даних її стовпців, ширина стовпців, вимоги цілісності у вигляді ключів і зовнішніх ключів. У наступних розділах ми обговоримо особливості процесу уведення даних у таблиці, розглянувши ряд відповідних рекомендацій і застережень.
Не забувайте, що оператори SQL можуть використати як символи нижнього регістра, так і символи верхнього. Внаслідок способу зберігання операторів у базі даних, вони від вибору регістра букв не залежать. У наступних прикладах букви нижнього й верхнього регістрів використаються тільки для того, щоб показати, що це не впливає на результат.
Уведення даних у таблицю - оператор INSERT
Щоб увести нові дані в таблицю, використайте оператор INSERT. Як ясно з показаного нижче його базового виду, оператор INSERT має кілька опцій.
insert into ім'я схеми.ім'я таблиці
VALUES ('значення!', 'значення2', [ NULL ] );
Відповідно до представленого тут синтаксису оператора INSERT, у список VALUES ви повинні помістити значення для всіх стовпців відповідної таблиці. Значення в списку розділяються комами. Символьні значення й значення дат повинні бути укладені в лапки. Для числових значень і порожніх значень, що задають ключовим словом NULL, лапки не потрібні. Повинні бути зазначені значення для всіх стовпців таблиці.
Уведення даних у певні стовпці таблиці
Є можливість увести дані не в усі, а тільки в певні стовпці, наприклад, якщо потрібно ввести всю інформацію про службовця, крім номера його пейджера. У цьому випадку в операторі INSERT разом зі списком значень VALUES потрібно вказати й список відповідних їм стовпців.
INSERT INTO EMPLOYEE_TBL
(EMP_ID, LAST_NAME, FIRST_NAME, MIDDLE_NAME, ADDRESS, CITY, STATE, ZIP, PHONE) VALUES
('123456789','SMITH', 'JOHN', 'JAY', 12 BEACON ST', INDIANAPOLIS', 'IN', '46222', '3172996868');
1 рядок створений
Синтаксис оператора для уведення значень у вибрані стовпці таблиці наступний.
INSERT INTO ІМ'Я_СХЕМИ.ІМ'Я_ТАБЛИЦІ ('СТОВПЕЦЬ!', 'СТОВПЕЦЬ2') VALUES ('ЗНАЧЕННЯ!', 'ЗНАЧЕННЯ2');
Уведення даних з іншої таблиці
У таблицю можна вводити дані, отримані в результаті запиту до іншої таблиці, скориставшись комбінацією операторів INSERT і SELECT. Коротко говорячи, запит — це звертання до бази даних, що має метою одержання даних. Про запити буде йти мова в ході уроку 7. Запит можна зрівняти з питанням користувача до бази даних, а повернуті дані - з отриманою відповіддю. Якщо скомбінувати оператори INSERT і SELECT, є можливість увести в таблицю дані, отримані в результаті запиту.
Синтаксис оператора для уведення даних з однієї таблиці в іншу наступний:
insert into ім'я_схеми.ім'я_таблиці [('стовпець!', 'стовпець2')] select [*|('стовпець!', 'стовпець2')]
from ім'я_таблиці
[where умови] ;
Тут ви бачите три нових ключових слова SELECT, FROM і WHERE. SELECT є основною командою для побудови запитів в SQL. За допомогою FROM у запиті вказуються імена таблиць, у яких необхідно відшукати дані. За допомогою WHERE у запитах задаються умови, що визначають суть запиту. Такою умовою може бути, наприклад, WHERE NAME = 'SMITH'.
Уведення значень NULL
Увести значення NULL у таблицю просто. Це буває потрібно, зокрема, коли значення відповідного стовпця не відомо. Наприклад, не кожна людина має пейджер, і було б некоректно вводити для цих людей невірні номери пейджера - не говорячи вуж про даремну витрату дискового простору. Значення NULL можна ввести в стовпець за допомогою ключового слова NULL.
Синтаксис оператора для уведення значення NULL наступний.
insert into ім'я_схеми.ім'я_таблиці values ('значення!', NULL, 'значениез'};
У результаті у відповідний стовпець таблиці буде уведене значення NULL. Стовпець, у який уводиться NULL, не буде містити даних. У рамках вищенаведеного синтаксису значення NULL буде уведено на місце другого стовпця.
Відновлення вже наявних даних команда UPDATE
Уже існуючі в таблиці дані можна змінити за допомогою команди UPDATE. Команда UPDATE не додає нових записів у таблицю й не видаляє їх, а тільки дає можливість змінити дані. За допомогою однієї такої команди можна змінити дані тільки однієї таблиці, але одночасно можна міняти дані декількох стовпців. Одним таким оператором можна змінити й один рядок даних і цілий набір рядків.
Відновлення значень одного стовпця
У своїй найпростішій формі оператор UPDATE змінює один стовпець таблиці. При зміні одного стовпця можна змінити й тільки один запис, і відразу трохи
Синтаксис оператора для зміни даних в одному стовпці наступний
update ім'я_таблиці
set ім'я_стовпця = 'значення'
[where умова];
Відновлення декількох стовпців в одній або декількох записах
Тепер давайте розберемося з тим, як обновити за допомогою операгора UPDATE кілька стовпців відразу. Розглянемо синтаксис підходящого оператора.
update ім'я_таблиці
set стовпець! = 'значення'
[, столбецз = 'значення']
[, столбецз = 'значення'] [where умова];
Зверніть увагу на використання ключового слова SET' воно одне, а описів стовпців - трохи. Опису стовпців розділяються комами До цього моменту ви, мабуть, уже відчули логікові SQL. В операторах SQL кома звичайно використається для поділу по-різному! про тип аргументів.
Видалення даних з таблиць команда DELETE
Для видалення даних з таблиць використається команда DELETE. Команда DELETE призначена не для того, щоб видаляти значення окремих стовпців, а для того, щоб видаляти цілі записи. Оператор DELETE варто застосовувати з обережністю - занадто вуж безвідмовно він працює.
Синтаксис оператора DELETE.
delete from ім'я_схеми.ім'я_таблиці
[where умова];
DELETE FROM ORDERS_TBL
WHERE ORD_NUM = '23A16';
Якщо ключове слово WHERE в операторі DELETE опущено, будуть вилучені весь рядки таблиці. Тому візьміть за правило завжди використати ключове слово WHERE в операторі DELETE.