DML. Додавання інформації в базу даних. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

DML. Додавання інформації в базу даних.



INSERT — оператор мови SQL, котрий додає рядки в таблицю або view. В реляційній СКБД можна визначити два варіанти оператора INSERT.

• Однорядковий оператор INSERT дозволяє додавати в таблицю один новий рядок. Він широко використовується в повсякденних аплікаціях, наприклад програмах введення даних.

• Багаторядковий оператор INSERT забезпечує витягування даних з однієї частини бази даних, їх трансформацію і додавання в іншу частину. Використовується зазвичай при пакетній обробці і створенні нових даних.

 

SQL. Вкладені запити.

Вкладений запит дозволяє використовувати результат, що повертається одним запитом, в іншому запиті. Можливість застосування одного запиту всередині іншого і була причиною появи слова "структурований" в назві "структурована мова запитів" (SQL). Так як результат повертає лише оператор SELECT, то в якості "вкладеного" запиту завжди виступає SELECT-запит (інформаційні SQL-запити з використанням нестандартних операторів SHOW, DESCRIBE до уваги не приймаються). В якості зовнішнього запиту може виступати запит з участю будь-якого SQL-оператора: SELECT, INSERT, UPDATE, DELETE, CREATE TABLE та ін.

Приклад

SELECT name FROM catalogs

WHERE id_catalog = (SELECT id_catalog FROM products

WHERE price = (SELECT MAX(price) FROM products));

name

Процесори

Як видно ступінь вкладення запитів не обмежений другим рівнем, можутьвикористовуватися трирівневі і багаторівневі вкладені запити. Першийвнутрішній запит визначає максимальну ціну в таблиці products:

SELECT MAX (price) FROM products

Зовнішній по відношенню до нього запит визначає значення первинного ключа (id_catalog) для товарної позиції з максимальним значенням ціни (725.00):

SELECT id catalog FROM products WHERE price = 725.00

Отримане значення поля id catalog (рівне 1) підставляється у зовнішній запит

SELECT name FROM catalogs WHERE id_catalog = 1

 

SQL. Прості міжтабличні запити. SQL

Для розміщення декількох запитів разом і об'єднання їх виводу використовують пропозицію UNION. Пропозиція UNION об'єднує вивід двох або більше SQL запитів в єдиний набір рядків і стовпців. Наприклад, для отримання списку всіх студентів і викладачів, прізвища яких поміщені між літерами 'К' і 'С', можна скористатися запитом:

 

SELECT SPRIZ, SIMA, SBAT

 

FROM STUDENTS

WHERE SPRIZ BETWEEN 'К' AND 'С'

 

UNION

 

SELECT TPRIZ, TIMA, TBAT

 

FROM TEACHERS

WHERE TPRIZ BETWEEN 'К' AND 'С';

Варто звернути увагу на той факт, що UNION автоматично виключатиме дублікати рядків із виводу.

 

SQL. Особливості багатотабличних запитів.

Найважливішою особливістю запитів SQL є їхня здатність визначати зв'язки між декількома таблицями і виводити інформацію з них у термінах цих зв'язків. Такі операції називаються об'єднанням, що є одним з видів операцій у реляционных БД - адже це є основою реляционного підходу до збереження даних у таблицях.

При многотабличном запиті, таблиці, представлені у виді списку в пропозиції FROM, відокремлюються друг від друга комами. Предикат запиту може посилатися до будь-якого стовпця будь-якої зв'язаної таблиці і, отже, може використовуватися для зв'язку між ними. Звичайно предикат порівнює значення в стовпцях різних таблиць, щоб визначити, чи задовольняє WHERE встановленій умові. До цього імена таблиць у запитах опускалися, тому запитувалася тільки одна таблиця одночасно. Навіть при запиті з декількох таблиць допускається опускати їхні імена, якщо, звичайно, вони різні. Тепер же виникає необхідність використання імен стовпців і таблиць, оскільки в многотабличном запиті можуть виникати неоднозначності.

 

SQL. Об’єднання таблиць.

Об'єднання дуже часто використовуються для аналізу даних. Як правило, дані знаходяться в різних таблицях, що дозволяє їх більш ефективно зберігати (оскільки інформація не дублюється), спрощує обробку даних та дозволяє масштабувати базу даних (можливо додавати нові таблиці з додатковою інформацією). Таблиці баз даних, які використовуються в СУБД Access являються реляційними таблицями, тобто всі таблиці можна пов'язати між собою по спільним полям.

Об'єднання таблиць дуже проста процедура. Потрібно вказати всі таблиці, які будуть включені в об'єднання та "пояснити" СУБД, як вони будуть пов'язані між собою. Поєднання робиться за допомогою слова WHERE.

 

SQL. Сортування результату запиту.

Для впорядкування виводу полів таблиць SQL використовує команду ORDER BY, дозволяючи сортувати вивід запиту згідно значень в тій або іншій кількості вибраних стовпців. Якщо вказується декілька полів, то стовпці виводу упорядковуються один всередині іншого, при цьому можна визначати зростання (ASC) або спадання (DESC) для кожного стовпця. За замовчуванням встановлене зростання.

 

Як приклад використаємо запит, що виводить таблицю з інформацією про студентів в алфавітному порядку прізвищ:

 

SELECT * FROM STUDENTS

 

ORDER BY SPRIZ ASC;

 

SQL. Додавання коментарів та простих обчислень до таблиці.

Більшість версій SQL дозволяють поміщати коментарі в спеціальні стовпці пояснень таблиць каталогів SYSTEMCATALOG і SYSTEMCOLUMNS, що зручно, так як ці таблиці не завжди можуть пояснити свій вміст. Для цього можна використовувати команду COMMENT ON з рядком тексту коментаря, наприклад:

 

COMMENT ON TABLE SHER.TEACHERS IS 'Це список викладачів';

 

Цей текст буде поміщений в стовпець пояснень SYSTEMCATALOG. Сам коментар поміщається в службову таблицю, в даному випадку, що містить інформацію про таблицю

 

TEACHERS, власником якої є SHER.

 

SQL. Агрегатні функції.

Взагалі кажучи, запити можуть проводити узагальнену групову обробку значень полів, що реалізується за допомогою агрегатних функцій. Агрегатні функції проводять одиночне значення для всієї групи таблиці. У SQL допускаються наступні агрегатні функції:

 

ƒ COUNT – робить підрахунок кількості рядків або не-NULL значень полів, які вибрав запит;

 

ƒ SUM – розраховує арифметичну суму всіх вибраних значень даного поля;

ƒ AVG – проводить усереднювання всіх вибраних значень даного поля;

ƒ МАХ – знаходить і повертає найбільше зі всіх вибраних значень даного поля;

ƒ MIN – знаходить і повертає найменше зі всіх вибраних значень даного поля

Агрегатні функції використовуються подібно до імен полів в пропозиції SELECT запиту, але з врахуванням того, що вони беруть імена поля як аргументи. Варто мати на увазі, що із SUM і AVG використовуються тільки числові поля, а з COUNT, МАХ і MIN можуть використовуватися числові або символьні поля. Коли функції записуються з символьними полями, МАХ і MIN використовують їх в еквівалент ASCII, відповідно до якого вибирається максимальне або мінімальне значення.

 

Щоб знайти суму всієї виплаченої стипендії в таблиці з даними про студентів, можна використовувати наступний запит:

 

SELECT SUM (STYP)

 

FROM STUDENTS;

 

вивід якого складається з одного числа грн.670,50.

 

Дія агрегатних функцій, як видно, відрізняється від вибору поля, при якому повертається, наприклад, одиночне значення. З цієї причини агрегатні функції і поля не можуть спільно використовуватися без пропозиції GROUP BY, про яку мова піде нижче.

 

Функція COUNT дещо відрізняється від інших – як вже було відмічено, вона рахує кількість значень в даному стовпці, або число рядків в таблиці. Зокрема, для підрахунку кількості значень в стовпці, вона використовується з DISTINCT. Наприклад, можна підрахувати кількість студентів, що складали навчальні предмети по таблиці успішності за допомогою наступного запиту:

 

SELECT COUNT (DISTINCT SNUM)

 

 

 

 

FROM USP;

 

Як результат цього запиту буде отримане значення 4. Зверніть увагу на обов'язкову вимогу того, щоб DISTINCT був поміщений в круглі дужки на відміну від попередніх прикладів. Крім того, допускається можливість використання DISTINCT з будь-якими агрегатними функціями, але найчастіше він використовується з COUNT.

 

Для того, щоб підрахувати загальне число рядків в таблиці, використовують функцію COUNT із зірочкою замість імені поля, наприклад як в наступному прикладі:

 

SELECT COUNT (*)

FROM STUDENTS;

що як результат дасть значення 5.

 

COUNT із зірочкою включає записи з NULL значеннями, а також дублікати, з цієї причини DISTINCT в даному випадку не може бути використаний.

 

Агрегатні функції в більшості реалізацій допускають використання аргументу ALL, який поміщається перед ім'ям поля аналогічно DISTINCT, проте означає протилежну дію – включати дублікати. Необхідно пояснити відмінності між ALL і *, коли вони використовуються з COUNT – ALL використовує ім'я поля як аргумент і не може підрахувати значення NULL. При цьому варто пам'ятати, що функції, відмінні від COUNT, ігнорують значення NULL у будь-якому випадку. Наступний приклад підрахує кількість не-NULL значень в полі SNUM, включаючи повторення:

 

 

SELECT COUNT (ALL SNUM)

 

FROM USP;

 

Як результат цього запиту буде отримане значення 5.

 

У SQL допускається використовувати агрегатні функції з аргументами, які складаються з виразів, що включають одне або більше полів, при цьому команда DISTINCT не дозволяється. Припустимо, що необхідно знайти максимальну величину проіндексованої (у прикладі, збільшеної вдвічі) стипендії. Для кожного рядка таблиці такий запит повинен множити STYP на 2 і вибирати найбільше значення, яке буде знайдене. Для цього можна скористатися наступним:

 

SELECT MAX (STYP*2)

 

FROM STUDENTS;

 

Як результат тут буде отримане число грн.501,00

 



Поделиться:


Последнее изменение этой страницы: 2016-04-23; просмотров: 672; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.19.56.45 (0.034 с.)