Слайд 1Заняття 4. Інструкції маніпуляції з таблицями. Інструкції модифікації даних
Слайд 2Інструкції маніпуляції з таблицями. Інструкції модифікації даних
Створення таблиць
Обмеження
на дані
Модифікація таблиць
Видалення таблиць
Внесення даних
Зміна даних
Видалення даних
Слайд 3Модифікація структури таблиці. Інструкція ALTER TABLE
Змінює структуру існуючої таблиці.
Стандарт ANSI
SQL не дозволяє змінювати тип даних існуючого стовпця, однак багато
СУБД розширяють цю версію ALTER TABLE, і дозволяють змінювати тип стовпця.
Зміна імені таблиці:
ALTER TABLE <ім’я табл>
RENAME TO <нове ім’я табл>;
Слайд 4Додавання нового стовпця:
ALTER TABLE
ADD COLUMN
;
Видалення стовпця з таблиці:
ALTER TABLE
DROP COLUMN
<ім’я стовп>;
При цьому видаляються усі дані стовпця.
Якщо стовпець є первинним ключем, на який посилається зовнішній ключ з іншої таблиці, то видалення не відбудеться. Спочатку потрібно скоректувати дані в іншій таблиці.
Слайд 5Зміна параметрів існуючого стовпця, таких як тип, розмір, обмеження:
ALTER TABLE
CHANGE COLUMN
(розмір)> <обмеження>;
Приклад 1. Припустимо, що при створенні таблиці Sellers поле sname не містить ніяких обмежень, які треба встановити. Крім цього, треба збільшити розмір цього поля.
ALTER TABLE Sellers
CHANGE COLUMN sname sname varchar(55) NOT NULL;
Слайд 6Встановлення обмеження.
Приклад 2. Припустимо, що таблиця Customers не має ніяких
обмежень таблиці. Необхідно встановити обмеження унікальності для стовпців cnum та
snum.
ALTER TABLE Customers
ADD CONSTRAINT UQ_Customers
UNIQUE (cnum, snum);
Видалення UNIQUE обмеження:
ALTER TABLE Customers
DROP INDEX UQ_Customers;
Слайд 7Видалення PRIMARY KEY обмеження:
ALTER TABLE Customers
DROP PRIMARY KEY;
Видалення FOREIGN
KEY обмеження:
ALTER TABLE Customers
DROP FOREIGN KEY FK_Customers_Sellers;
Слайд 8Видалення таблиці
Щоб видалити таблицю, необхідно мати права для цього.
Перед
видаленням таблиці необхідно видалити усе вмістиме таблиці (вимога більшості СУБД,
проте не в MySQL).
Якщо таблиця уже порожня, то видалення виконується інструкцією:
DROP TABLE <ім’я табл>;
Після такої інструкції ім’я таблиці більше не розпізнається, і ніяка інструкція не може бути застосована до цієї таблиці.
Тому перш ніж видаляти таблицю, необхідно переконатись, що в неї не було зовнішнього ключа. Інакше, загубляться певні зв’язки.
Слайд 9Мова маніпулювання даними (DML – Data Manipulation Language)
Інструкції DML
для модифікації даних не повертають дані у вигляді тимчасових результатних
таблиць, а змінюють вмістиме вже існуючих таблиць бази даних.
Інструкції модифікації даних можуть вміщати вкладені запити на вибірку даних з тієї ж таблиці або з інших таблиць, однак самі не можуть бути вкладені в інші запити:
INSERT
UPDATE
DELETE
Примітка: Для коректного виконання усіх інструкцій DML необхідно зняти безпечний режим модифікації даних SET SQL_SAFE_UPDATES = 0.
Слайд 10Основні аргументи інструкцій DML
Необхідний оператор (SELECT, INSERT, DELETE або
UPDATE);
вираз-стовпець – виражає ім’я стовпця або вираз з декількох імен
стовпців із даними;
Ключове слово FROM;
таблиця – ім’я таблиці, для якої здійснюється запит.
Ключове слово WHERE;
предикат – умовний вираз, який може бути істинним або ні для певного рядка таблиці.
Слайд 11Інструкція внесення даних (INSERT)
Найпростіший синтаксис :
INSERT INTO
VALUES (
стовп1>,...,);
Ім’я таблиці має бути визначеним командою CREATE TABLE.
Кожне
значення, що додається, має співпадати з типом даних стовпця, в який воно додається.
Інструкція не виводить результатів, але СУБД повинна видати підтвердження того, що дані були додані.
Якщо необхідно ввести невизначене значення, то у відповідне поле додається значення NULL.
Слайд 12Приклад 3: щоб додати перший рядок у таблицю Sellers, можна
використати команду:
INSERT INTO Sellers
VALUES (1001, 'Peel', 'London', 0.12);
Можна вказувати
конкретні стовпці, в які потрібно додати значення. Це дозволяє додавати дані в довільному порядку:
INSERT INTO Sellers (snum, sname, comm)
VALUES (1001, 'Peel', 0.12));
Слайд 13У сучасних діалектах SQL з’явилась можливість працювати зі значеннями типу
«запис».
Це дозволяє за фразою VALUES вказувати декілька наборів значень
у дужках, які необхідно додати.
Приклад 4:
INSERT INTO Customers (city, cnamе, cnum)
VALUES ('London', 'Hoffman', 2001),
('Rome', 'Giovanni', 2002),
('SanJose', 'Liu', 2003);
Поля rating та snum не вказані. Це означає, що дані стовпці будуть встановлені у значення «за замовчуванням».
Слайд 14Інструкція видалення записів (DELETE)
Інструкція видаляє цілі рядки таблиці, а не
індивідуальні значення полів.
Наприклад, щоб видалити все вмістиме таблиці Sellers, можна
використати команду:
DELETE FROM Sellers;
Якщо необхідно видалити певні рядки з таблиці, використовують атрибут WHERE.
Наприклад, щоб видалити продавця Axelrod, можна ввести:
DELETE FROM Sellers WHERE snum = 1003;
Тут вказано поле snum, а не поле sname, оскільки використання первинних ключів надійно забезпечує видалення лише одного рядка.
Примітка: Після видалення усіх рядків таблиці необхідно «обнуляти» автоінкементоване значення первинного ключа (ALTER TABLE <ім’я табл> AUTO_INCREMENT = 1)!
Слайд 15Інструкція зміни даних
(UPDATE)
Інструкція UPDATE змінює значення стовпців.
Щоб змінити
значення в одному стовпці таблиці, використовується синтаксис:
UPDATE
SET
стовпця> = <значення>;
Приклад 5. Замінити рейтинг усіх замовників на 200:
UPDATE Customers SET rating = 200;
Слайд 16Якщо потрібно змінити значення стовпця у певному рядку, то використовується
фраза WHERE.
Приклад 6. Змінити рейтинг на 200 усіх замовників
для продавця Peel:
UPDATE Customers SET rating = 200
WHERE snum = 1001;
Слайд 17Інструкція зміни даних (UPDATE). Правила використання фрази SET
В одній команді
можна модифікувати лише одну таблицю.
У фразі SET можна використовувати вирази.
Приклад 7. Продавцям у Лондоні збільшити їх комісійні у два рази:
UPDATE Sellers SET comm = comm * 2
WHERE city = 'London';
Вираз SET не є предикатом. Тому треба вводити NULL значення без синтаксису предикату.
Приклад 8. Встановити рейтинг замовників у Лондоні в NULL:
UPDATE Сustomers SET rating = NULL
WHERE city = 'London';
Слайд 18Завдання 1. Написати приклади вивчених інструкцій для власної бази даних
Написати такі інструкції:
Зміна імені 1 таблиці;
Додання 1 стовпця в будь-яку
таблицю;
Зміна типу даних для доданого стовпця;
Додання нового обмеження унікальності на даний стовпець;
Видалення цього обмеження унікальності;
Видалення створеного стовпця.
Слайд 19Створити новий файл скрипта, який дозволить почергово заповнити даними створену
базу даних.
Примітка: Спочатку писати інструкції, які заповнюють даними батьківські
таблиці (таблиці, які не мають зовнішніх ключів).
Дочірні таблиці повинні містити мінімум 15-20 записів. Батьківські – мінімум 2 записи.
Після виконання даного скрипта написати інструкції для модифікації одного запису та групи записів, а також для видалення одного із записів із дочірньої таблиці та усіх записів цієї таблиці.