Добавил:
інстаграм _roman.kob, курсові роботи з тєрєхова в.в. для КІ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Розрахункова

.docx
Скачиваний:
7
Добавлен:
31.05.2020
Размер:
855.72 Кб
Скачать

Міністерство освіти і науки України

Технічний коледж

Національного університету “Львівська політехніка”

Кафедра інформаційних технологій

Розрахункова робота

Натему: Запити на вибір даних з таблиць бази даних

Аналітичні та підсумкові запити

Виконав:

Студент групи: 31-КІ

Кобринович Р.В.

Прийняла:

Заяць М.М.

Львів – 2020

Мета роботи: освоїти принципи створення вибірок інформації з бази даних за допомогою мови SQL.

Теоретичні відомості

Будь-яка система керування базами даних реляційного типу дозволяє вирішити два основні питання, пов’язані з маніпуляцією інформацією:

  1. Збереження інформації в базі даних.

  2. Отримання інформації з бази даних та її опрацювання.

Для вирішення першого питання в базі даних відповідними засобами SQL слід створити таблиці наперед визначеної структури та забезпечити необхідні обмеження цілісності.

Для вирішення другого питання слід навчитися будувати запити на вибірку (SELECT-запити). В простішому варіанті SELECT-запити має наступний вигляд:

SELECT [DISTINCT]

вираз [AS псевдонім_колонки],…

FROM {таблиця|з’єднання_таблиць|підзапит} [[AS] псевдонім_таблиці]

[WHERE предикат]

[ORDER BY вираз [ASC|DESC],…]

Цей запит складається з кількох частин, кожна з яких починається відповідним ключовим словом:

  1. SELECT;

  1. FROM;

  2. WHERE;

  3. ORDER BY.

Частина SELECT стоїть першою в синтаксичній структурі, однак вона не є першим логічно виконуваним кроком цього запиту. Це є декларативна частина на відміну від інших частин SELECT-запиту, які приймають участь у формуванні результату запиту. В частині SELECT визначається структура майбутнього результату, тобто ця частина визначає набір стовпчиків результуючої таблиці. SELECT може повертати як значення полів таблиць бази даних, так і значення виразів, побудованих на основі полів таблиць. Вирази в SELECT-запиті можуть бути числового, стрічкового чи часового типу.

Частина SELECT може містити:

  1. Символ “*”, який означає, що всі поля таблиці чи підзапиту з частини FROM є вихідними даними;

  1. Звертання “специфікатор.*”, де специфікатор позначає назву (псевдонім) таблиці чи підзапиту, на яку існує посилання в частині FROM. Всі поля цієї таблиці чи підзапиту включаються у вихідні дані;

  2. Назви полів таблиць, вказаних в частині FROM. Крім того назви полів можна включати у вирази для обчислення потрібних значень;

  3. Якщо вихідний стовпчик будується на основі одного поля таблиці без побудови перетворюючого виразу, то цей стовпчик автоматично приймає назву цього поля. При бажанні цю назву можна перевизначити через AS.

Директива DISTINCT означає, що в результуючу таблицю попадають лише повністю різні рядки.

Частина FROM вказує на назви усіх таблиць чи підзапитів, які використовуються в SELECT-запиті. Замість таблиць можна використовувати перегляди – іменовані SELECT-запити. Для таблиць можна використовувати альтернативні назви як псевдоніми. Псевдонім записується після назви таблиці через AS і її визначення діє лише під час виконання заданого SELECT-запиту. Визначення псевдоніму_таблиці є необов’язковим для таблиць та переглядів, але він потрібен при роботі з підзапитами. Псевдоніми можна використовувати в якості префіксів для стовпчиків SELECT-запиту, які відділяються від назви стовпчика за допомогою крапки. Псевдоніми не є обов’язковими елементами запиту на вибірку і використовуються лише в деяких випадках для зрозумілішого запису SELECT-запиту.

В частині FROM при створенні достатньо складного SELECT-запиту зустрічається не одна таблиця чи підзапит, а кілька, і неявно вони всі вважаються з’єднаними. Тобто можна отримати всі можливі комбінації рядків кожної з таблиць, а саме їх декартовий добуток. Але найчастіше потрібно виключити більшість рядків декартового добутку і виділити окремі дані, що переважно реалізується за допомогою умов в частині WHERE. Іншим способом визначення умов є встановлення вбудованих з’єднань. Результатом цього з’єднання є породжена з’єднана таблиця, яка повинна оброблятися рештою операторів запиту.

З’єднана таблиця – це результат наступного з’єднання:

З’єднана_таблиця ::=

таблиця_A тип_з’єднання JOIN таблиця_B

ON предикат

тип_з’єднання ::=

{INNER | {LEFT | RIGHT}}

З’єднання можуть бути внутрішніми та зовнішніми.

INNER – внутрішнє з’єднання. З двох таблиць з’єднуються лише ті рядки, на яких предикат приймає істинне значення (TRUE).

Рис. 1. Внутрішнє з’єднання таблиць в SELECT-запиті.

LEFT та RIGHT – зовнішні з’єднання. В результат включаються всі рядки з однієї таблиці та рядки з іншої таблиці, на яких предикат приймає істинне значення. Зокрема, LEFT – ліве зовнішнє з’єднання. Це з’єднання включає усі рядки таблиці A. Для рядків з таблиці B, для яких предикат приймає хибне значення (FALSE), у відповідні стовпчики з’єднаної таблиці заносяться значення NULL. Аналогічно, RIGHT – праве зовнішнє з’єднання. Воно включає усі рядки таблиці B, а для рядків з таблиці A, для яких предикат приймає хибне значення, у відповідні стовпчики з’єднаної таблиці заносяться значення NULL.

Рис. 2. Зовнішнє з’єднання таблиць в SELECT-запиті.

Частина WHERE містить предикат, який може включати кілька логічних виразів та приймати одне з трьох значень: TRUE, FALSE чи UNKNOWN. В результат SELECT-запиту включаються усі рядки, для яких предикат з частини WHERE приймає значення TRUE. Найчастіше предикат містить оператори порівняння =, <, <=, >, >= та <>. Слід відзначити, що порівняння значення NULL з будь-яким іншим значенням, в тому числі і NULL, дає результат UNKNOWN (NULL). Для конструювання виразів дозволяється використовувати стандартні оператор *, /, +, - та || (конкатенація).

Крім традиційних операторів порівняння SQL дозволяє використовувати спеціальні предикати: BETWEEN, IN, LIKE, IS NULL.

Предикат_BETWEEN ::=

вираз [NOT] BETWEEN нижня_межа AND верхня_межа

Предикат BETWEEN перевіряє чи потрапляє значення виразу в проміжок, описаний нижньою та верхньою межами.

Предикат_IN ::=

вираз [NOT] IN {підзапит | (список_значень)}

Цей предикат перевіряє чи значення виразу з’являється в списку значень чи в підзапиті. В якості підзапиту тут виступає деякий SELECT-запит.

Предикат_LIKE ::=

вираз [NOT] LIKE шаблон

Предикат LIKE перевіряє відповідність виразу до шаблону. В якості шаблону виступає стрічка, що може містити символи маски. Стандарт SQL передбачає наступні символи маски: ‘%’ (будь-яка кількість довільних символів) та ‘_’ (один довільний символ). В Microsoft Access символами маски відповідно служать ‘*’ (будь-яка кількість довільних символів) та ‘?’ (один довільний символ). Далі подаються приклади масок разом з їх інтерпретацією.

Microsoft Access

Значення маски

‘а*’

Починається з ‘а’

‘*а*’

Містить ‘а’

‘*а’

Закінчується на ‘а’

‘???*’

Містить не менше 3-х символів

‘*а?а*’

Містить 2-і букви ‘а’, які розділені одним символом

Предикат_IS_NULL ::=

вираз IS [NOT] NULL

Предикат IS NULL створений спеціально для перевірки наявності значення NULL. Предикат IS NULL приймає значення TRUE, якщо значення виразу є NULL і FALSE в протилежному випадку. Предикат IS NOT NULL приймає значення TRUE, якщо значення виразу не є NULL і FALSE в протилежному випадку.

Усі предикати можна комбінувати, використовуючи булеві оператори AND, OR та NOT. Якщо предикати мають значення TRUE або FALSE, то вони виконуються традиційно. Якщо в логічний вираз входить значення UNKNOWN, отримуються наступні результати:

Вираз

Значення

unknown OR true

True

unknown AND false

False

NOT unknownunknown OR falseunknown OR unknownunknown AND trueunknown AND unknown

Unknown

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

При побудові SELECT-запитів вибріки можна здійснювати на основі інших SELECT-запитів, тобто допускається наступна конструкція:

SELECT … FROM (SELECT …) AS підзапит

В цьому випадку є два SELECT-запити, один з яких є зовнішнім (або головним), а інший – внутрішнім (або підзапитом).

Для виконання запиту на вибірку в MS Access слід скористатися кнопкою «Конструктор запитів» піктографічного меню вікна бази даних.

При створенні нового запиту MS Access пропонує скористатися графічним конструктором запиту. Для переходу в режим SQL необхідно скористатися кнопкою РежимSQL (Вигляд SQL). Наприклад, MS Access дозволяє варіант запиту як показано на рис. 3.

Рис. 3. Запит на вибірку.

Для виконання запиту на вибірку необхідно скористатися пунктом меню Query/Run (Запит/Виконати). В результаті на екран виводиться таблиця, яку повертає SELECT-запит.

Рис. 4. Результат виконання запиту на вибірку.

Індивідуальне завдання:

Моєю придметною областю є Авіакомпанія, схема даних складається з чотирьох таблиць а саме:

  • Рейси

  • Вильоти

  • Працівники

  • Літак

Результати виконання запитів над своєю базою даних:

2 простих запити

чотири SELECT-запити з використанням предикатів: BETWEEN, IN, LIKE, IS NULL