
- •2. Типи даних
- •3. Вибірка, або читання даних
- •3.1. Синтаксис оператора select
- •3.2. Використовування умов пошуку для відбору рядків
- •Лекція № тема. Отримання підсумкових даних план
- •1. Агрегатні функції та їх використання
- •2. Сортування результатів запиту
- •Лекція № тема. Прості запити і правила їх виконання план
- •1. Однотабличні запити
- •2. Особливості багатотабличних запитів
- •3. Об'єднання таблиць
- •2. Використовування вкладених запитів
- •3412 Поляків Анатолій Олексійович
- •3412 Поляків Анатолій Олексійович 25.50
- •Лекція № тема: Внесення змін в базу даних. Способи створення баз даних. План:
- •Внесення змін в базу даних.
- •1.1 Додавання інформації в базу даних.
- •1.2. Видалення даних.
- •1.3. Заміна існуючих даних.
- •2.1. Створення баз даних
- •2.2. Створення таблиць.
- •2.3. Модифікація (зміна) таблиць.
- •2.4. Видалення таблиць.
- •2.5. Індекси.
- •2.6. Визначення умов перевірки.
Лекція № тема: Внесення змін в базу даних. Способи створення баз даних. План:
Внесення змін в базу даних.
1.1 Додавання інформації в базу даних.
1.2. Видалення даних.
1.3.Заміна існуючих даних.
2.Способи створення баз даних.
2.1. Створення баз даних
2.2. Створення таблиць.
2.3. Модифікація (зміна) таблиць.
2.4. Видалення таблиць.
2.5. Індекси.
2.6. Визначення умов перевірки.
Внесення змін в базу даних.
При роботі з SQL виключно важливе не тільки уміти вибирати дані, але і користуватися засобами, які управляють значеннями в таблиці. Значення можуть бути поміщені і видалені з полів трьома командами мови DML (Мова Маніпулювання Даними), а саме:
INSERT - вставити:
UPDATE - модифікувати;
DELETE - видалити.
1.1 Додавання інформації в базу даних.
Всі записи в SQL вводяться з використанням команди модифікації INSERT. В найпростішій формі ця команда має наступний синтаксис:
INSERT INTO <table name>
VALUES «value> <value> . . .);
Так, наприклад, для додавання запису в таблицю викладачів TEACHERS, можна скористатися наступним виразом:
INSERT INTO TEACHERS
VALUE S
(4006, 'Федченко', 'Светлана' •Геннадиевна1, 01/09/1999);
Команда INSERT не виробляє ніякого висновку, але бажано, щоб СУБД давала деяке підтвердження того, що дані були успішно внесені. Крім того, слід пам'ятати, що ім'я таблиці, в яку виробляється вставка, повинне бути заздалегідь визначене, а кожне значення в списку даних, що вставляються, повинне співпадати з типом даних стовпця, в який воно вставляється. Значення в цьому списку вводяться в таблицю в тому порядку, в якому вони записані в команді, тому перше значення автоматично потрапляє в перший стовпець, друге - в другий стовпець і т. д.
Якщо вимагається ввести в таблицю NULL значення, то воно вводиться точно так, як і звичайне Наприклад, наступна команда, що вставляє запис з невідомим значенням коду викладача, цілком допустима:
INSERT INTO TEACHERS
VALUES
(NULL, 'Федченко', 'Светлана','Геннадиевна', 01/09/1999);
Оскільки значення NULL - спеціальне службове слово, то заключати його в одиночні лапки не вимагається.
Також припускає указувати стовпці, куди необхідно здійснити вставку значення, що дозволяє робити це у будь-якому порядку. Наприклад, команда:
INSERT INTO TEACHERS
(TDATE, TFAM, ТІMA)
VALUES
(01/09/1999, 'Федченко', 'Светлана');
дозволяє вставити значення в поля таблиці в порядку TDATE, TFAM, TIMA, причому стовпці TNUM і ТОТСН відсутні. Це означає, що для цих полів автоматично встановлюється значення за умовчанням. Значення за умовчанням може бути введене наперед або. інакше, це буде NULL значення. Якщо обмеження забороняє використовування значення NULL в даному полі, то обов'язково треба поклопотатися про забезпечення стовпця змістовним значенням для будь-якої команди INSERT.
Можна використати команду INSERT для того, щоб одержувати або вибирати значення з однієї таблиці і поміщати їх в іншу разом із запитом. Для цього пропозиція VALUES замінюється на відповідний запит:
INSERT INTO EXCELLENT
SELECT *
FROM USP
WHERE OCENKA = 5;
В результаті буде сформована таблиця з даними, приведеними в табл. 2.5 (нагадаємо, що сама INSERT команда ніякого висновку не виробляє).
Таблиця 2.5 Таблиця EXCELLENT
EXCELLENT |
||||
UNUM |
OCENKA |
UDATE |
SNUM |
PNUM |
1001 |
5 |
10/06/1999 |
3412 |
2001 |
1005 |
5 |
12/06/1999 |
3416 |
2004 |
Отже, буде зроблено наступне: всі значення, видані запитом (інформація про студентів, що мають тільки відмінні оцінки). поміщаються в таблицю. названу EXCELLENT. Для того щоб не відбулося помилки, таблиця EXCELLENT повинна вже бути створена командою CREATE TABLE (про неї мова нижче) і мати п'ять стовбців, які співпадають з таблицею USP по типу даних.
Таким чином, буде отримана незалежна таблиця з деякими даними з таблиці успішності USP. При зміні значень в таблиці USP це у жодному випадку не відобразиться на таблиці EXCELLENT.
У принципі, є можливість указувати стовпці на ім'я, як це вже було продемонстровано вище, а значить - переупорядковувати інформацію, що додається.
Наприклад, за допомогою нижчеприведеної команди можна вставити інформацію про середній бал кожного студента:
INSERT INTO AVGRAITING
(SNUM, AVGOCENKA)
SELECT SNUM, AVG (OCENKA.)
FROM USP GROUP BY SNUM;
Звернете увагу на те, що вказані імена стовбців таблиці AVGRAITING, а значить, послідовність даних в списку (тобто порядок проходження полів в пропозиції SELECT), що вставляється, повинна з цим порядком співпадати.
В INSERT можна використати підзапити усередині будь-якого запиту, який генерує значення для цієї команди аналогічно тому, як це вже робилося при розгляді відповідного матеріалу. Наприклад, для вставки у вужі наявну таблицю STO прізвищ, імен і по батькові студентів, в яких є хоча б одна відмінна оцінка, можна скористатися наступною командою:
INSERT INTO STO
(SFAM, SIMA, SOTCH)
SELECT SFAM, SIMA, SOTCH
FROM STUDENTS
WHERE SNUM = ANY (SELECT SNUM FROM USP
WHERE OCSNKA = 5);
Обидва запити в цій команді функціонує так само. неначебто вони не були частиною виразу INSERT. Підзапит знаходить всі рядки для студентів, що мають відмінні оцінки, і формує набір значень SNUM. Зовнішній запит вибирає рядки з таблиці STUDENTS, де ці значення SNUM знайдені, INSERT вставляє знайдені дані в таблицю STO.
В команді INSERT припускає використати співвіднесені підзапити. Припустимо, що є таблиця МАХО-CENKA, в якій зберігається інформація про студента, що має максимальну оцінку за певну дату (скажімо, для нарахування іменної стипендії). Тоді, для відстежування зміни даних в таблиці успішності і модифікації відповідної інформації про претендента на іменну стипендію, необхідно скористатися наступною командою із співвіднесеним підзапитом:
INSERT INTO MAXOCENKA
(SNUM, OCENKA)
SELECT SNUM, OCENKA
FROM USP FIRST
WHERE OCENKA =
(SELECT MAX (OCENKA)
FROM USP SECOND
WHERE FIRST.UDATE = SECOND.UDATE);
При цьому дана команда має підзапит, який базується на тій же самій таблиці, що і зовнішній запит, але не посилається на таблицю MAXOCENKA, на яку впливає команда, тому така конструкція є допустимою.