КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Мова структурованих запитів SQL. Розробка SQL – запитівНадання користувачам можливості здійснювати швидкий пошук необхідної інформації у різних базах даних та отримання відповідей на різноманітні питання є однією з основних функцій маркетингової інформаційної системи. Питання, що формулюються до бази даних, називаються запитами. Наприклад, працюючи з базою даних, яка містить інформацію про продажі, можна отримати відповіді на такі питання: - який обсяг продажів за останній тиждень, місяць, рік? - чи збільшився обсяг продажів? - яких товарів продано найбільше? - які товари приносять найбільший прибуток? - обсяг продажів яких товарів падає? - скільки продано постійним покупцям? - як продажі розподіляються за регіонами? Більш 90% запитів SQL, що зустрічається, засновані на запиті Select (запит на вибірку). Запити Select …into (запити на створення таблиці), Insert …into (запити на додаання записів), Delete (запити на вилучення записів), Update (запити на поновлення таблиці) будуються аналогічно запитам на вибірку у MS Access. Структура запиту на вибірку (інструкція Select). SELECT [ALL | DISTINCT | DISTINCTROW] [TOP n [PERCENT]] список_полів FROM ім.‘я_таблиць [WHERE критерій_відбору] [ORDER BY стобпці_сортування [ ASC | DESC ]]; Предикати ALL | DISTINCT | DISTINCTROW використовуються для обмеження числа записів, що повертаються. ALL – відбираються всі записи, відповідним умовам, заданим в інструкції SQL. Наведені нижче інструкції SQL еквівалентні; вони повертають всі записи з таблиці «Продаж»: SELECT ALL FROM [Продаж] ORDER BY [Товар]; DISTINCT – виключає записи, що містять значення, що повторюються у вибраних полях. Наприклад в таблиці «Продаж» є з однаковими назвами товарів. Якщо декілька записів містять значення «Шафа» в полі «Товар», тоді наступна інструкція SQL поверне тільки одну з них: SELECT DISTINCT [Товар] FROM [Продаж] ; Результат виконання інструкції SQL, що містить предикат DISTINCT, є неоновлюваним і не відбиває наступні зміни, внесені іншими користувачами. DISTINCTROW опускає дані, основані цілком на записах, що повторюються. Наприклад, для відбору товару з таблиці «Продаж» тільки один раз запишемо рядок SQL такого змісту
SELECT DISTINCTROW [Товар] FROM [Продаж] ORDER BY [Товар]; TOP n [PERCENT] повертає n(n%) перших записів з всіх, що відбираються запитом. Наступна інструкція SQL дозволяє отримати список 25 назв товарів 2010 року: SELECT TOP 25 [Товар] FROM [Продаж] WHERE РІК=2010 ORDER BY [Товар]; Список_полів – імена полів, з яких повинні бути відібрані дані. Якщо декілька полів, вони відділяються комами. FROM ім.‘я_таблиць – визначють імена таблиць із яких запит повинен відібрати дані. Якщо у список_полів включені поля із декількох таблиць, у параметрі ім.‘я_таблиць повинні бути вказані всі таблиці через кому. Припустимо, що поле «Відділ» міститься у таблицях «Співробітники» і «Керівники». Наступна інструкція SQL відбире поле «Відділ» з таблиці «Співробітники» і поле «Керівник» з таблиці «Керівники»: SELECT Співробітники. Відділ, Керівники.Керівник FROM Співробітники INNER JOIN Керівники WHERE Співробітники. Відділ=Керівники.Керівник; У випадку, якщо імена полів або таблиць містять пробіли або символи національних алфавітів, що не підтримуються MS Access, імена слід брати у квадратні дужки []. Пропуск дужок в інших випадках не є помилковою. WHERE критерій_відбору – визначає умову відбору вказаних таблиць. Параметр критерій_відбору є вираз з текстовим оператором типу Like для текстових полів або числовим оператором типу >= для чисових полів. Компонент WHERE не обов‘язковий. ORDER BY стобпці_сортування – визначає порядок сортування записів за вказаними полями. Використовуючи ключові слова ASC або DESC, можно визначити сортування по зростанню і по зменшенню відповідно. Якщо необхідно визначити суму, середне або статистичні дані групи записів з загальним значенням атрибуту до оператора SQL додається інструкція GROUP BY разом з HAVING. SELECT [ALL | DISTINCT | DISTINCTROW] статистична_функція ( ім.‘я_поля) as заголовок_поля [, список_полів] FROM імена_таблиць [WHERE умови_відбору] GROUP BY умова_групування [HAVING умова_для_результату] [ORDER BY стобпці_сортування ;
У списку полів список_полів є і статистична функція статистична_функція з ім‘ям одного із полів таблиці (ім‘я_поля) в якості аргумента. Поле, використане як аргумент статистичної функції, повинно мати дані числового типу. Інші ключові слова і параметри SQL, необхідні для створення цього запиту, описані нижче. AS заголовок_поля. Визначає заголовок стовпця з результатом набору записів. У бланку запиту Access такий заголовок створюється за допомогою запису заголовок_поля:статистична_функція(ім‘я_поля) у рядку Field (Поле) структури запиту. GROUP BY умова_групування. Визначає стовпчик, по значенням якого записи об‘єднуються у групи, до кожного із яких застосовується статистична функція. У режимі конструктора запиту SQL GROUP BY відповідає Group By (Групування) в рядку Total(Групова операція) потрібного поля. HAVING умова_для_результату. Одна або декілька умов накладаємих на значення стовпця заголовок_поля, отриманих після виконання групування і застосування статистичної функції статистична_функція. WHERE умова_відборую. Умова для відбору початкових записів перед виконанням групування і з застосуванням статистичної функції. Приклад: SELECT Товар,SUM(Вартість) AS Сума FROM Продаж WHERE Країна=”Україна” AND Реалізація BETWEEN #01/1/2010# AND #31/12/2010# GROUP BY Товар HAVING SUM(Вартість)>500 ORDER BY SUM(Вартість) DESC; Результат запиту буде з двох свпців: Товар і Сума для виробника України за період 2010 рок. Дані будуть відсортовані у порядку зменьшення Вартості продукції. Створення зв‘язків за допомогою SQL. Для створення зв‘язків між двома або більшою кількістю таблиць і їх об‘єднанням за допомогою інструкції SQL використовується структура JOIN…ON, яка визначає таблицю підключення і зв‘язки між полями. SELECT [ALL | DISTINCT | DISTINCTROW] список_полів FROM ім‘я_таблиці {INNER| LEFT|RIGHT} JOIN зв‘язана_таблиця [ім‘я_таблиці {INNER| LEFT|RIGHT} JOIN зв‘язана_таблиця ON умова_зв‘язку] ON умова_зв‘язку [WHERE умови_відбору] [ORDER BY стобпці_сортування ;
Ім‘я_таблиці {INNER| LEFT|RIGHT} JOIN зв‘язана_таблиця. Вказує ім‘я двох зв‘язаних таблиць (справа і зліва від команди JOIN) і тип їх об‘єднання. При цьому замість параметру зв‘язана_таблиця також моде стояти конструкція JOIN…ON, вкладена таблиця. Таким чином перша таблиця об‘єднується з об‘єднанням другої і третьої. Замість імені третьої таблиці знову може стояти об‘єднання таблиць і т.д. ON умова_зв‘язку. Описує два поля і зв‘язок між ними. Одно поле знаходиться у таблиці ім‘я_таблиці, а друге – в таблиці зв‘язана_таблиця. Вираз умова_зв‘язку задаєтьяс операторами порівняння значень полів (=, >, <, <=, >=, <>) і повертає значення True або False.
Приклади запитів. Запит на виборку студентів за номером групи: SELECT Студенти.[Код студента], Студенти.Прізвище, Студенти.Ім’я, Студенти.[По-батькові], Студенти.[Дата народження], Студенти.[Номер групи], Студенти.Телефон, Студенти.Стипендія FROM Студенти WHERE (((Студенти.[Код студента])=[Введіть номер групи]));
Запит на вибір дисциплін по групі з таблиць дисципліни і оцінки: SELECT Студенти.[Номер групи], Дисципліни.[Назва дисципліни], Оцінки.Оцінки FROM Дисципліни INNER JOIN (Студенти INNER JOIN Оцінки ON Студенти.[Код студента] = Оцінки.[Код студента]) ON Дисципліни.[Код дисципліни] = Оцінки.[Код дисципліни]; Рис.5.2.98. SELECT Студенти.Прізвище, Студенти.Ім’я, Студенти.[По-батькові], Студенти.[Номер групи], Дисципліни.[Назва дисципліни], Оцінки.Оцінки FROM Дисципліни INNER JOIN (Студенти INNER JOIN Оцінки ON Студенти.[Код студента] = Оцінки.[Код студента]) ON Дисципліни.[Код дисципліни] = Оцінки.[Код дисципліни] WHERE (((Студенти.[Номер групи])=[Введіть номер групи]) AND ((Дисципліни.[Назва дисципліни])=[Введіть назву дисципліни])); Рис.5.2.99. Запит на створення таблиці: SELECT Студенти.Прізвище, Студенти.Ім’я, Студенти.[По-батькові], Студенти.[Номер групи], Sum(Оцінки.Оцінки) AS [Sum-Оцінки] INTO [Студенты-отличники] FROM Студенти INNER JOIN Оцінки ON Студенти.[Код студента] = Оцінки.[Код студента] GROUP BY Студенти.Прізвище, Студенти.Ім’я, Студенти.[По-батькові], Студенти.[Номер групи] HAVING (((Sum(Оцінки.Оцінки))=20)); Рис.5.2.100. Запит на знищення: DELETE Студенти.Прізвище, Студенти.Ім’я, Студенти.[По-батькові], Студенти.[Номер групи] FROM Студенти WHERE (((Студенти.Прізвище)="Перлов") AND ((Студенти.Ім’я)="Кирило") AND ((Студенти.[По-батькові])="Миколайович") AND ((Студенти.[Номер групи])=152));
Запит на оновлення: UPDATE Викладачі SET Викладачі.Зарплата = [Зарплата]*1.1 WHERE (((([Викладачі].[Зарплата])<"І")>500));
Перехресний запит: TRANSFORM Avg([Дисципліна оцінки групи].Оцінки) AS [Avg-Оцінки] SELECT [Дисципліна оцінки групи].[Назва дисципліни], Avg([Дисципліна оцінки групи].Оцінки) AS [Итоговое значение Оцінки] FROM [Дисципліна оцінки групи] GROUP BY [Дисципліна оцінки групи].[Назва дисципліни] PIVOT [Дисципліна оцінки групи].[Номер групи];
Рис.5.2.101.
Запитання для самоконтролю до розділу 5
1. Що таке база даних, СУБД? В чому полягає відмінність між цими поняттями? 2. Що таке „модель даних”? Перерахуйте різновиди моделей даних. 3. Чи можна використовувати термін “база даних” і “банк даних” як еквівалентні? 4. Що розуміють під терміном „сутність”? 5. Що розуміють під терміном „атрибут”? 6. Як позначаються сутності на ER-діаграмі за методом Чена? Інформаційного методу? 7. Що являє собою ідентифікатор сутності ? 8. Як позначається на ER-діаграмі за інформаційним методом ідентифікатор сутності? 9. Які типи взаємозв’язків (взаємовідношень) можуть існувати між сутностями і як вони позначаються на ER-діаграмі за методом Чена? 10. Як позначаються взаємовідношення на ER-діаграмі за інформаційним методом? 11. Які сутності називають слабкими і як вони позначаються на ER-діаграмі? 12. Як зображуються взаємовідношення між сутностями на ER-діаграмі за методом Чена? 13. Чим датологічні документальні моделі відрізняються від фактографічних? 14. Як виконати сортування записів у базі даних? 15. Що таке фільтрація даних, які різновиди фільтрів для виконання фільтрації даних існують у базі даних MS Excel? 16. Як створити автофільтр? 17. Як створити розширений фільтр? 18. Яке призначення мають проміжні підсумки? 19. Яка технологія створення проміжних підсумків? 20. Яке призначення мають зведені таблиці і зведені діаграми? 21. Яка технологія створення зведених таблиць і зведених діаграм? 22. Яку базу даних називають реляційною? 23. Які об’єкти існують у реляційній базі даних? 24. Які способи створення таблиць існують в Microsoft Access? 25. Як створити таблицю в режимі таблиці? 26. Як створити таблицю в режимі конструктора? 27. Як виконати імпортування таблиці? 28. Які типи полів можна використовувати в Microsoft Access? 29. Які основні властивості мають текстові поля і як їх задати? 30. Які властивості мають числові поля і як їх задати? 31. Скільки символів можна ввести в поле текстового типу? 32. Які властивості має поле МЕМО? Що зберігається в полі МЕМО? 33. Що таке маска введення, як її задати? 34. Які поля мають тип даних поле oб’єкта ОLE? 35. Яке поле таблиці можна вважати унікальним полем? 36. Як надати унікальному полю статусу первинного ключа таблиці? 37. Поле якого типу є ключем в більшості таблиць? 38. Яку назву має запис таблиці реляційної бази даних? 39. Яку назву має поле запису таблиці реляційної бази даних? 40. Як змінити назву поля у таблиці, його властивості чи вилучити його з таблиці? 41. Які режими відображення таблиці існують в Microsoft Access і яке їх призначення? Як встановити відповідний режим? 42. Чи потрібно переходити в режим конструктора при вилученні деякого запису в таблиці? 43. Як і з якою метою зв’язують таблиці в MS Access? 44. Що означають прапорці Обеспечение целосности данных, Каскадное обновление і Каскадное удаление даних у діалоговому вікні Изменение связей? 45. Який зміст має тип даних Мастер подстановок? 46. Які типи відношень між таблицями існують в реляційній базі даних? 47. Який зміст має відношення „один –до – багатьох”? 48. Який зміст має відношення „один –до– одного”? 49. Як активізувати вікно Схема даних? 50. Як виконати зв’язування таблиць? 51. Як додати до Схеми даних нову таблицю? 52. Як вилучити із схеми даних таблицю? 53. Як розірвати зв’язок між таблицями? 54. Яке призначення мають звіти? 55. На основі яких об’єктів бази даних створюються звіти? 56. Які способи створення звітів можливі в MS Access? 57. Чи можна при розробці звітів виконувати групування та обчислення і створювати підсумки? 58. Що являє собою звіт у режимі Конструктора? 59. Які структурні одиниці має звіт у режимі Конструктора? 60. В якій частині звіту розміщуються імена полів? 61. В якій частині звіту розміщуються підсумки по групам? 62. В якій частині звіту розміщуються загальні підсумки? 63. Які функції використовуються у групових підсумкових операціях? 64. Які функції використовуються у загальних підсумках? 65. Які об’єкти управління присутні у звітах, відображених в режимі конструктора? 66. Як створити звіт в режимі конструктора? 67. Яке призначення мають запити і які різновиди запитів існують в MS Access? 68. Як створити запит на вибірку? 69. Як створити запит на оновлення? 70. Як створити запит на додавання записів? 71. Як створити запит на вилучення записів? 72. Як створити запит на створення нової таблиці? 73. Як створити запит на вибірку? 74. Як створити перехресний запит в базі даних в MS Access? 75. Чи можна зв’язати таблиці, в яких не визначені ключові поля? 76. Як створити розрахункове поле у запиті? 77. Які способи створення виразів у запитах існують в MS Access? 78. Які різновиди обчислень можна виконувати в запитах? 79. В чому перевага задання обчислень саме в запитах? 80. Де зберігаються запити і як їх застосувати? 81. Які об’єкти бази даних створюються на основі запитів? 82. Яке призначення має мова SQL? 83. Як відобразити запит в режимі SQL? 84. Які ключові слова містить запит мовою SQL на вибірку? 85. Які ключові слова містить запит мовою SQL на оновлення? 86. Які ключові слова містить запит мовою SQL на вилучення? 87. Які ключові слова містить запит мовою SQL: на додавання записів? 88. Які ключові слова містить запит мовою SQL на створення нової таблиці? 89. Як створити запит в режимі SQL? 90. Які переваги має режим SQL?
|