Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Mova_SQL.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
106.5 Кб
Скачать

1.3. Таблиці sql

До тепер поняття "таблиця", як правило, зв'язувалося з реальною чи базовою таблицею, тобто c таблицею, для кожного рядка якої в дійсності мається деякий двійник, що зберігається у фізичній пам'яті ЕОМ. Однак SQL використовує і створює ряд віртуальних (начебто існуючих) таблиць: представлень, курсорів і неіменованих робочих таблиць, у яких формуються результати запитів на одержання даних з базових таблиць і, можливо, представлень. Це таблиці, що не існують у базі даних, але як би існують з погляду користувача.

Базові таблиці створюються за допомогою команди CREATE TABLE (створити таблицю).

Представлення - це порожня іменована таблиця, обумовлена переліком тих стовпців таблиць і ознаками тих їхніх рядків, що хотілося б у ній побачити. Представлення є як би "вікном" в одну чи кілька базових таблиць. Воно створюється за допомогою пропозиції CREATE VІEW (створити представлення).

Курсор - це порожня іменована таблиця, обумовлена переліком тих стовпців базових таблиць і ознаками тих їхніх рядків, що хотілося б у ній побачити. У чому ж розходження між курсором і представленням?

Для користувача представлення майже не відрізняються від базових таблиць (є лише деякі обмеження при виконанні різних операцій маніпулювання даними). Вони можуть використовуватися як в інтерактивному режимі, так і в прикладних програмах. Курсори ж створені для процедурної роботи з таблицею в прикладних програмах.

Розділ 2. Запити з використанням єдиної таблиці

2.1. Про команду select

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

Команда SELECT може використовуватися як:

  • самостійна команда на одержання і висновок рядків таблиці, сформованої зі стовпців і рядків однієї чи декількох таблиць (представлень);

  • елемент WHERE- чи HAVіNG-условия (скорочений варіант команди, названий "вкладений запит");

  • фраза вибору в командах CREAT VІEW, DECLARE CURSOR чи ІNSERT;

  • засіб присвоєння глобальним змінним значень з рядків сформованої таблиці (ІNTO-фраза).

У даній і наступній главах будуть розглянуті тільки дві перші функції команди SELECT, а тут - її синтаксис, обмежений конструкціями, використовуваними при реалізації цих функцій. Тут (так само як і в інших главах книги) у синтаксичних конструкціях використовуються наступні позначення:

- зірочка (*) для позначення "усі" - вживається в звичайному для програмування змісті, тобто "усі випадки, що задовольняють визначенню";

- квадратні дужки ([]) - означають, що конструкції, укладені в ці дужки, є необов'язковими (тобто можуть бути опущені);

- три крапки (...) - указує на те, що безпосередньо попередня йому синтаксична одиниця факультативно може повторюватися один чи більш раз;

- пряма риса (|) - означає наявність вибору з двох чи більш можливостей. Наприклад позначення ASC|DESC указує, можна вибрати один з термінів ASC чи DESC; коли ж один з елементів вибору укладений у квадратні дужки, те це означає, що він вибирається за замовчуванням (так, [ASC]|DESC означає, що відсутність усієї цієї конструкції буде сприйматися як вибір ASC);

- крапка з комою (;) - завершальний елемент пропозицій SQL;

- кома (,) - використовується для поділу елементів списків;

- пробіли ( ) - можуть уводитися для підвищення наочності між будь-якими синтаксичними конструкціями пропозицій SQL;

- прописні жирні латинські букви і символи - використовуються для написання конструкцій мови SQL і повинні (якщо це спеціально не обговорено) записуватися в точності так, як показано;

КомандаSELECT (вибрати) має наступний формат:

SELECT

<(вибрати) дані з зазначених стовпців і (якщо необхідно) виконати перед висновком їхнє перетворення відповідно до зазначених виражень і (чи) функціями >

FROM

<(з) перерахованих таблиць, у яких розташовані ці стовпці >

WHERE

<(де) рядка з зазначених таблиць повинні задовольняти зазначеному переліку умов добору рядків >

GROUP BY

<(групуючи по) зазначеному переліку стовпців для того, щоб одержати для кожної групи єдине агрегированное значення, використовуючи у фразі SELECT SQL-функції SUM (сума), COUNT (кількість), MІ (мінімальне значення), MAX (максимальне значення) чи AVG (середнє значення) >

HAVІNG

<(маючи) у результаті лише ті групи, що задовольняють зазначеному переліку умов добору груп>

Фраза WHERE включає набір умов для добору рядків:

Крім традиційних операторів порівняння (= | <> | < | <= | > | >=) у WHERE фразі використовуються умови BETWEEN (між), LІKE (схоже на), ІN (належить), ІS NULL (не визначене) і EXІSTS (існує), що можуть випереджатися оператором NOT (не). Критерій добору рядків формується з одного чи декількох умов, з'єднаних логічними операторами:

AND - коли повинні задовольнятися обоє поділюваних за допомогою AND умови;

OR - коли повинно задовольнятися одне з поділюваних за допомогою OR умов;

AND NOT - коли повинне задовольнятися перша умова і не повинна друге;

OR NOT - чи коли повинне задовольнятися перша чи умова не повинна задовольнятися друге, причому існує пріоритет AND над OR (спочатку виконуються всі операції AND і тільки після цього операції OR). Для одержання бажаного результату WHERE умови повинні бути введені в правильному порядку, якому можна організувати введенням дужок.

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

За допомогою фрази HAVІNG можна виключити з результату групи, не задовольняючим заданим умовам

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]