- •Створення таблиць бази даних
- •Теоретичні відомості
- •1.1. Проектування бази даних
- •1.2. Створення таблиць з використанням Конструктора
- •1.3.2. Керуючий запит на створення таблиці
- •1.3.3. Запит на створення таблиці з інших таблиць
- •1.3.4. Запит на додавання
- •1.3.5. Запит на видалення
- •1.3.6. Запит на оновлення
- •Лабораторна робота №2 Проектування qbe-запитів
- •Теоретичні відомості
- •2.1. Прості запити
- •2.2. Конструктор запитів
- •2.3. Обчислення в запиті
- •2.4. Параметричні запити
- •2.5. Перехресні запити
- •Контрольні запитання
- •Лабораторна робота №3 Створення запитів на вибірку з допомогою мови sql
- •Теоретичні відомості
- •3.1. Структура запиту. Умови пошуку.
- •3.2. Параметричні запити
- •3.3. Перехресні запити
- •3.4. Пошук у зв'язаних таблицях
- •3.5. Агрегація даних і форматування результатів пошуку
- •3.6. Підлеглі запити
- •3.7. Запити на об'єднання
- •Контрольні запитання
- •Лабораторна робота №4 Створення форм
- •Теоретичні відомості
- •4.1. Автоформи
- •4.2. Створення форми за допомогою «Майстра форм»
- •4.3. Створення складеної форми
- •4.4. Створення діаграми
- •4.5. Додавання елементів управління у форму
- •Контрольні запитання
- •Лабораторна робота №5 Розробка звітів
- •5.1. Робота з простими звітами
- •5.2. Створення звіту за допомогою Майстра
- •5.3. Розробка звіту в режимі Конструктора
- •Контрольні запитання
- •Лабораторна робота №6 Створення бази даних побутової техніки
- •Список літератури
Контрольні запитання
У яких випадках при створенні запиту доцільніше скористатися Майстром запитів, а в яких – Конструктором?
Як в таблиці СТУДЕНТ знайти відомості про усіх студентів, прізвища яких починаються на букву 'К'?
Якщо таблиця СТУДЕНТ містить стовпці Прізвище і Середній бал, то як вивести відомості про усіх студентів з найбільшим балом?
Як здійснити сортування даних в запиті?
Створіть запит, що дозволяє дізнатися про усіх відмінників вашої групи.
Створіть параметричний запит, що дозволяє отримати оцінку певного студента по певній дисципліні.
Побудуйте перехресний запит, що виводить оцінки усіх студентів по дисципліні "Вища математика" за перший (код дисципліни дорівнює 1) і другий (код дорівнює 2) семестри.
Створіть запит із групуванням, що виводить середній бал кожного студента з урахуванням усіх дисциплін.
Лабораторна робота №3 Створення запитів на вибірку з допомогою мови sql
Порядок виконання
Використовуючи базу даних УНІВЕРСИТЕТ, створіть і проаналізуйте усі запити, описані в теоретичній частині розділу.
За індивідуальним завданням сформуйте найбільш типові запити до бази даних, враховуючи необхідність реалізації усіх розглянутих в теоретичній частині видів запитів.
Реалізуйте типові запити до бази даних, проаналізуйте правильність їх виконання.
Теоретичні відомості
3.1. Структура запиту. Умови пошуку.
Розглянемо формування запитів на мові SQL в російській версії Access. Пошук здійснюється за допомогою інструкції select. По цій інструкції ядро СУБД повертає дані з бази даних у вигляді набору записів. Інструкція select має наступний формат:
При описі синтаксису прийняті наступні позначення. Замість слів в кутових дужках необхідно вказати імена реальних таблиць, стовпців і тому подібне. Аргументи, вказані в прямих дужках, не є обов'язковими. Якщо вказано декілька аргументів, розділених символом "," то можна використовувати тільки один аргумент. Фігурні дужки означають список елементів, записаних через кому.
Розглянемо коротко аргументи інструкції select. Після ключового слова select приводиться список значень, кожне з яких визначає стовпець результуючого набору даних. Як правило, це імена стовпців таблиць, перерахованих після слова from, причому стовпці виводяться у вказаному порядку. Іноді - це значення, вичислені деякими функціями, наприклад, середнє значення. Символ "*" вказує на включення в результуючий набір усіх стовпців усіх таблиць, перерахованих після слова from. Якщо в результуючий набір виводяться значення стовпців, що мають однакові імена у таблицях, що використовуються в запиті, то слід застосовувати складене ім'я <таблиця>.<значення>. Конструкція <таблиця>.* означає включення в результат усіх стовпців однієї з таблиць. Конструкція as <псевдонім> означає, що <псевдонім> стане заголовком стовпця в результуючому наборі даних.
Предикат (умова) distinct виключає записи, які містять значення, що повторюються, у обраних полях. Предикат distinctrow виключає записи, що повторюються, отримані в результаті з'єднання таблиць. Предикат distinctrow впливає на результат тільки у тому випадку, якщо в запит включені не усі поля з таблиць, що аналізуються. Предикат distinctrow ігнорується, якщо запит містить тільки одну таблицю або усі поля усіх таблиць. Предикат all дозволяє включення в результат однакових рядків. За умовчанням (якщо немає жодного предиката) діє all. Предикат top n повертає n перших записів результуючого набору (з урахуванням сортування результату за наявності виразу order by). Предикат top n percent повертає певний відсоток записів.
У пропозиції from перераховуються імена таблиць, в яких здійснюється пошук. Для таблиць можна призначати нові імена - псевдоніми, що діятимуть в межах запиту. Можна також вказувати таблиці із зовнішньої бази даних.
У пропозиції where вказуються умови (предикати) пошуку. Умови можуть використовувати булеві оператори and (логічне І), or (логічне АБО), xor (додавання за модулем 2), eqv (логічна еквівалентність), imp (імплікація), not (заперечення) і дужки.
Вирази group і having задають групування і умови групування результатів пошуку. Вираз order by задає сортування результатів.
При виконанні інструкції select СУБД знаходить вказані таблиці, можливо, сполучає таблиці, витягає задані стовпці, виділяє рядки, відповідні умові відбору, сортує або групує результуючі рядки у вказаному порядку.
Розглянемо завдання умов пошуку на прикладах запитів до однієї таблиці. Найчастіше в умовах пошуку застосовуються предикати порівняння =, <> (не дорівнює), >, >=, <, <=. Наприклад, щоб отримати дату народження студента «Рассказова», необхідно створити запит
У запитах часто використовуються булеві оператори. Наприклад, щоб отримати інформацію про усіх дівчат групи 01АО1, сформуємо запит
Оператор NOT повинен передувати булевому виразу, значення якого він повинен змінити, але не може розташовуватися безпосередньо перед оператором порівняння. Наприклад, отримати дані про студентів усіх груп, окрім 01АО1, можна за допомогою запиту
Якщо в умовах пошуку використовуються дати, то використовується американський формат дати: першим записується номер місяця. Наприклад, знайти студентів, що народилися раніше 1 жовтня 1984 р. можна за допомогою наступного запиту:
При перегляді цього запиту в Конструкторі дата в умовах пошуку відображається в російському форматі 01.10.84
В умовах пошуку можна використовувати предикати in, between..and, like і is null. Предикат in перевіряє, чи співпадає значення вираження з одним з елементів вказаного списку. Наприклад, для отримання відомостей про студентів двох груп можна використати запит
У останньому прикладі можна застосувати умову пошуку WHERE Група=01АЭ1 OR Група=01А01. За складних умов застосування предиката in виявляється простішим і більш наочним.
Предикат between..and визначає приналежність значення виразу вказаному діапазону. Предикат є таким, що включає, тобто перевіряє вказані граничні значення. Предикат часто використовують для перевірки, чи потрапляє значення поля у вказаний діапазон чисел. Але можна застосовувати цей предикат і для роботи із строковими даними. Наприклад, видати усі відомості про студентів, прізвища яких починаються з 'А' по 'К' включно можна оператором
У останньому прикладі відомості про студентів, прізвища яких починаються на букву Л не будуть видані, оскільки рядки, що представляють прізвища, будуть довші за рядок 'Л', яка для порівняння буде доповнена пропусками. Оскільки пропуск передує в кодовій таблиці будь-якій букві, то рядок 'Л' передує будь-якому прізвищу, що починається на букву Л.
Предикат like перевіряє, чи входить вказаний зразок в строкове значення. У зразку може бути задане повне значення (наприклад, Like "Іванов") або використані знаки заміщення для пошуку діапазону значень. Знаки заміщення - спеціальні символи, на місці яких в зразку можуть стояти певні символи. Знак зірочки (*) відповідає довільному числу будь-яких символів. Наприклад, усіх студентів, прізвища яких починаються на літеру "К", можна знайти інструкцією
Знак питання відповідає будь-якому поодинокому символу. Знак номера (#) відповідає одній довільній цифрі. Послідовність символів, поміщених в квадратні дужки ([ ]), замінює будь-який символ, поміщений в дужки. Знак оклику перед списком символів означає відповідність будь-якому символу, не включеному в список. Наприклад, запит
дозволяє знайти дані про студенток з прізвищем Букина або Бякина. Відповідність діапазону символів, наприклад, від А до П, включаючи крайні значення, можна задати таким чином [А-П].
Знаки *, ?, # і [ розглядаються як зразок для пошуку цього символу тільки якщо знаходяться в квадратних дужках.
Предикат is null повертає значення Істина, якщо поле має невизначене значення (null). Наприклад, дізнатися, по яких дисциплінах не призначені викладачі, можна за допомогою запиту
