
- •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. Визначення умов перевірки.
Лекція № тема. Прості запити і правила їх виконання план
Однотабличні запити
Особливості багатотабличних запитів.
3. Об'єднання таблиць
1. Однотабличні запити
Вище нами розглянуті запити, які використовували як джерело даних тільки одну' таблицю даних - так звані однотабличні запити. Проте часто виникає необхідність у виборі інформації з декількох таблиць -одним з варіантів здійснення такого висновку є об'єднання результатів декількох запитів, що виконуються незалежно один від одного.
Для розміщення декількох запитів разом і об'єднання їх висновку використовують пропозицію UNION. Пропозиція UNION об'єднує висновок двох або більш SQL запитів в єдиний набір рядків і стовпців. Наприклад, для отримання списку всіх студентів і викладачів, прізвища яких укладені між буквами 'К' і 'С', можна скористатися запитом:
SELECT SFAM, SIMA, SOTCH FROM STUDENTS
WHERE SFAM BETWEEN 'K' AND 'C' UNION
SELECT TFAM, TIMA, TOTCH FROM TEACHERS WHERE TFAM BETWEEN 'К' AND 'С';
Результати цього запиту показані нижче:
Каеанко Віталій Володимирович Костиркин Олег Володимирович
Познякова Любов Олексіївна
Котенко Анатолій Миколайович
Нагірний Євгеній Васильович
Поляків Анатолій Олексійович
Звідси можна зробити висновок, що записи, вибрані двома командами, виведені так. неначебто вона була одна. Природно, що заголовки стовпців виключені, тому що жоден із стовпців, виведених об'єднанням, не був витягнутий безпосередньо з тільки однієї таблиці, отже, всі ці стовпці висновку не мають ніяких імен. Зверніть увагу на те, що тільки останній запит закінчується крапкою з комою - відсутність крапки з комою дає зрозуміти SQL, що є ще один або більш запитів.
Коли два або більш запиту піддаються об'єднанню, їх стовпці висновку повинні бути сумісні для об'єднання, що нами вже розглядалося вище. Нагадаємо, що це означає для кожного запиту необхідність включення однакового числа стовпців в тому ж порядку, що і перший, другий, третій, і т. д., і при цьому повинна бути присутній сумісність типів. Наприклад, символьні поля повинні мати однакове число символів. Інше обмеження на сумісність - це коли порожні значення NULL заборонені в будь-якому стовпці об'єднання, тоді ці значення необхідно заборонити і для всіх відповідних стовпців в інших запитах об'єднання. Нарешті, не можна використовувати агрегатні функції в пропозиції SELECT запиту в об'єднанні.
Варто звернути увагу на той факт, що UNION автоматично виключатиме дублікати рядків з висновку. Якщо, наприклад, в таблиці STUDENTS з'явиться ще один студент з прізвищем Поляків, то запит
SELECT SFAM FROM STUDENTS
Поляків
Старова
Гріценко
Котенко
Нагірний
Поляків
Тут є дублювання значень SFAM = Поляків, тому що не вказано, щоб SQL усунув дублікати. Проте при використовуванні UNION в комбінації цього запиту з йому подібним в таблиці викладачів, надмірна інформація буде усунена.
SELECT SFAM
FROM STUDENTS UNION
SELECT TFAM FROM TEACHERS;
дає наступні результати без дублювання прізвища Поляків:
Поляків
Старова
Гріценко
Котенко
Нагірний
Никуліна
Костиркин
Казанко
Позднякова
Загарійчук
Іноді виникає необхідність вставляти константи і вирази в пропозиції SELECT, що використовуються з UNION, що є корисною можливістю. Очевидно, що константи і вирази, що використовуються, повинні зустрічати сумісні типи даних. Це властивість корисно, наприклад, щоб відобразити коментарі, вказуючі на те, який запит вивів даний рядок. Модифікуємо попередній запит таким чином:
SELECT 'Студент ' SFAM
FROM STUDENTS
UNION
SELECT 'Викладач' TFAM
FROM TEACHERS;
висновок цього запиту наступний:
Студент Поляків
Студент Гріценко
Студент Котенко
Студент Нагірний
Викладач Никуліна
Викладач Костиркин
Викладач Казанко
Викладач Позднякова
Викладач Загарійчук
Зверніть увагу на те, що виникла необхідність в додаванні додаткових пропусків в рядок 'Студент', щоб зробити її співпадаючою по довжині з рядком 'Викладач'.
Тепер необхідно звести наклеп того. що дані численних запитів виводитимуться в якомусь особливому порядку. Для цього можна використовувати пропозицію ORDER, щоб упорядкувати висновок з об'єднання, аналогічно тому, як це робиться в однотабличних запитах Наприклад, переглянемо останній запит у зв'язку з тим, щоб упорядкувати прізвища:
SELECT 'Студент ' SFAM
FROM STUDENTS UNION
SELECT 'Викладач ' TFAM
FROM TEACHERS ORDER 2 ASC;
Висновок цього запиту буде наступний:
Викладач Никуліна Студент Гріценко Викладач Загарійчук Викладач Казанко Викладач Костиркин Студент Котенко Студент Нагірний Викладач Позднякова Студент Поляків Студент Старова Допускається упорядковувати висновок за допомогою декількох полів, одне усередині іншого і указувати фрази ASC або DESC для кожного, так само. як це робиться для одиночних запитів. Необхідно помітити, що номер 2 в пропозиції ORDER указує, який стовпець з пропозиції SELECT буде впорядкований, оскільки стовпці об'єднання - це стовпці висновку, а значить, вони не мають імен і повинні визначатися по номеру.
Крім того, при виконанні об'єднання більш ніж двох запитів, можна використовувати круглі дужки для того, щоб визначити порядок оцінки. Тобто замість просто запиту query А UNION query В UNION query З; можна вказати (query А UNION query В) UNION query З; або query А UNION (query В UNION query З); Це може принципово вплинути на результати запиту, оскільки об'єднання здійснюється спочатку усередині дужок, а потім - зовні. У такий спосіб, наприклад, запити можуть бути скомбіновані для видалення одних дублікатів і залишення інших.