Багатотабличні і вкладені запити
⇐ ПредыдущаяСтр 3 из 3
Багатотабличні запити працюють з даними, що знаходяться в декількох таблицях. При об'єднанні відношень використовуються умови, що задаються в частині WHERE. Таке об'єднання таблиць називається внутрішнім. У цьому випадку в результуюче відношення попадають тільки зчеплені по заданих умовах кортежі вихідних відношень, для яких ці умови були визначені і правильні.
Цей запит складений не чітко, тому що якби в групі були студенти, що за якимись причинами не здавали іспити, то вони також були б відібрані. По-цьому запит необхідно доповнити ще умовою на відсутність порожніх значень у полі Оцінка.
Раніше було зазначено, що для введення даних у таблиці оператором ІNSERT ІNTO може використовуватися оператор SELECT. Це зручно, коли для заповнення полів однієї таблиці використовуються значення полів інших таблиць.
Агрегатні функції можуть застосовуватися як у вираженні виводу результатів рядка SELECT, так і у вираженні умови обробки сформованих груп HAVІNG. Тут агрегатна функція обчислюється для кожної виділеної групи. Значення, отримані при обчисленні агрегатних функцій, можуть бути використані, для виводу результатів чи для умови добору груп.
Вкладені запити За допомогою SQL можна вкладати запити усередину один одного. Щоб виконати основний запит, SQL спочатку повинний оцінити внутрішній запит (його називають підзапитом) усередині речення WHERE чи HAVІNG. Відбувається це традиційним чином, тобто виповнюється вкладений запит, що витягає необхідні для визначення значення предиката дані, а тільки потім - основний. Підзапит повинний вибрати тільки одне поле, а тип даних цього поля повинний збігатися з тим значенням, з яким він буде порівнюватися в предикаті. Можлива ситуація, коли результатом підзапита є кілька різних значень, це унеможливлює оцінку предиката основного запиту і СКБД видасть помилку. Тому обов'язково потрібно переконатися, що підзапит буде відображати тільки один рядок виводу. Крім того, при використанні підзапиту, що узагалі не виводить ніяких значень, основний запит не виведе ніяких значень: його предикат буде мати невідоме значення. У деяких випадках варто використовувати DІSTІNCT для того, щоб у під запиті одержати одиночне значення. Наприклад, запит - вивести ПІБ тих, хто здав всі іспити - повинний бути вкладеним. Для його виконання спочатку треба скласти і виконати запит - скільки іспитів повинний здавати кожен студент (табл. ТаблГруппа і ТаблДисціплина). Потім скласти і виконати запит - скільки іспитів здав кожен студент (табл. ТаблСтудент). І, нарешті, порівняти результати двох запитів - якщо значення збігаються, то ПІБ вивести в результат підсумкового запиту. Для приклада спочатку виконаємо всі запити окремо, а потім покажемо, що результат буде еквівалентний одному вкладеному запиту.
Тепер порівнюючи результати виконання двох запитів можна зробити висновок про те, що сесію здали Іванова Е. А. і Трофімов П. А. Аналогічний результат виходить відразу при виконанні вкладеного запиту.
Питання для самоконтролю по ТЕМІ 8 1. Охарактеризуйте мову запитів SQL. 2. Назвіть оператори визначення даних мови SQL.
3. Назвіть оператори маніпулювання даними мови SQL. 4. Назвіть основні типи даних мови SQL. 5. Назвіть основні убудовані функції мови SQL. 6. Приведіть приклад запиту на створення таблиць на SQL. 7. Приведіть приклади запитів на зміну структури таблиць на SQL. 8. Приведіть приклад запиту на вилучення таблиці на SQL. 9. Приведіть приклад запиту на додавання нових записів у таблиці на SQL. 10. Приведіть приклад запиту на створення ключового поля для таблиці. 11. Приведіть приклад запиту на завдання зовнішнього ключа для таблиці. 12. Приведіть приклад запиту на створення і вилучення індексу з таблиці. 13. Охарактеризуйте структуру запиту з оператором SELECT. 14. Приведіть приклад запиту на вивід усіх полів з таблиці. Змініть порядок виводу полів. 15. Приведіть приклад запиту на вивід даних з таблиці, так щоб значення в полях не повторювалися. 16. Приведіть приклад запиту на вивід даних відповідно до однієї умови. 17. Приведіть приклад запиту на вивід даних відповідно до декількох умов. 18. Приведіть приклад запиту з параметрами. 19. Приведіть приклад запиту на вивід даних із сортуванням. 20. Приведіть приклад запиту на вивід даних з угрупованням. 21. Приведіть приклад запиту на вивід даних з угрупованням і використанням групових операцій. 22. Приведіть приклад запиту на вибірку даних з декількох таблиць. 23. Приведіть приклад вкладеного запиту.
Воспользуйтесь поиском по сайту: ![]() ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|