Роздрукувати сторінку
Главная \ Методичні вказівки \ Методичні вказівки \ 5152 Лабораторна робота №3, Створення запитів до БД

Лабораторна робота №3, Створення запитів до БД

« Назад

ЗМІСТ

Лабораторна робота №3 «Створення запитів до БД». 3

1. Створення запитів за допомогою конструктора. 3

2. Створення запитів з використанням мови T-SQL. 12

3. Використання умов для вибірки. 13

4. Використання в запитах логічних виразів. 15

5. Вибірка з декількох таблиць. 16

6. Сортування. 19

7. Підзапити. 20

8. Групування. 22

9. Створення запитів за допомогою конструктора. 24

Лабораторна робота №3 «Створення запитів до БД»

Завданням лабораторної роботи є вивчення основних можливостей мови запитів DQL (Data Query Language). Приклад реалізації запиті виконаний на тестовому прикладі БД лабораторної роботи №2.

DQL (Data Query Language) – мова запитів, яка є складовою мови SQL складається з однієї команди SELECT. Проте про цю команду написаний не один підручник. Більш детальну інформацію можна отримати при зверненні до довідникової системи MicrosoftMSDN на сайті msdn.microsoft.com.

Запити до БД можна створювати безпосередньо за допомогою операторів мови Transact-SQL, а також за допомогою конструктора. Кожен запит створений конструктором трансформується в запит на мові Transact-SQL.

1. Створення запитів за допомогою конструктора

Спочатку слід активізувати опцію Создать запрос ( ), а потім у меню запит активізувати опцію Создать запрос в редакторе (див. рис.1 )

М5152, Рис. 1 - Вікно для виклику конструктора запитів

Рис. 1 - Вікно для виклику конструктора запитів

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

М5152, Рис. 2 - Вікно конструктора запитів для вибору таблиць

Рис. 2 - Вікно конструктора запитів для вибору таблиць

Наприклад, реалізуємо запит, який надасть інформацію про продаж атомобілів з кодом 2, вказавши кількість продаж та менеджера, який оформлював цей продаж. Для цього вибираємо таблиці avtо, Prodaz та Menedzerі і закриваємо вікно Добавление таблиц. У наступному вікні рис.3 відмічаємо в таблицях атрибути, які необхідно видавати на екран у відповідь на запит, та у стовчику Filter у відповідному рядку задаємо умову вибірки (фільтрації). У нижній частині вікна конструктора система відображає створений запит на мові SQL. Після натиснення кнопки ОК і кнопки ыполнить отримаємо відповідь на сформований запит (рис. 4).

М5152, Рис. 3 - Вікно конструктора запитів для вибору атрибутів та задання умов фільтрації

Рис. 3 - Вікно конструктора запитів для вибору атрибутів та задання умов фільтрації

Відповідь на сформований запит розміщується внизу вікна (рис. 4), у верхній частині вікна представлено запит на мові SQL. Запит на мові SQL модифікуємо для отримання підсумків продаж автомобілів з кодом 2 (рис.5).

М5152, Рис. 4 - Вікно з результатами запиту

Рис. 4 - Вікно з результатами запиту

М5152, Рис. 5 - Вікно з результатами групувального запиту

Рис. 5 - Вікно з результатами групувального запиту

Для збереження запиту необхідно клацнути правою кнопкою мишки по стандартному імені запиту і активізувати опцію збереження. Далі у вікні Сохранить файл как ввести ім’я запиту (рис.6).

М5152, Рис. 6 - Вікно для збереження запиту

Рис. 6 - Вікно для збереження запиту

Переглянути створені запити можна активізувавши в головному меню Файл команди: открыть/файл (рис.7).

М5152, Рис. 7 - Вікно для перегляду запитів

Рис. 7 - Вікно для перегляду запитів

Якщо результати запиту будуть використовуватись при створенні інших запитів, то їх доцільно зберігати в папці Представления (Views). Розглянемо створення наступого запиту: « Надати інформацію про кількість проданих Автомобілів з кодом 1, вказавши їх назву і дату продажіта Менеджерів, що оформлювали Продаж».

Для створення запиту необхідно в оглядачі об’єктів в БД AWTO(див. лабораторну роботу №2)активізувати папку Представления (Views) і вибрати пункт Создать представление (NewViews). З’явиться вікно Добавление таблицы, яке призначене для вибору таблиць і запитів, що приймають участь в новому запиті.

М5152, Рис. 8 - Вікно вибору таблиць при створенні запиту

Рис. 8 - Вікно вибору таблиць при створенні запиту

Спочатку вибираємо таблицю avtoі тиснемо кнопку Добавить(Add). Аналогічно добавляємо таблиці Prodaz і Menedzer і закриваємо вікно добавлення таблиць. Після чого відкриється вікно конструктора зі створення запитів (рис. 8). У верхній частині екрана (перша панель) у вибраних таблицях мишкою ставимо позначку проти полів, які необхідно відображати в результатах запиту: Kod_avto, Name_avto, Date_P, Kol_P, Name_men. На наступній панелі цього вікна визначаємо псевдоніми для кожного з полів, а проти поля Кod_avto у стовпчику Filter ставимо умови вибірки =1. У стовпчику Выход можна знімати позначку видачі на екран.

М5152, Рис. 9 - Вікно конструктора зі створення запитів

Рис. 9 - Вікно конструктора зі створення запитів

Вікно конструктора зі створення запитів складається з таких панелей:

- Фрагмент схеми даних, що відображає таблиці, що приймають участь в реалізації запитів. Таблиці в фрагменті схеми даних обов’язково повинні бути пов’язаними між собою дугами. В таблицях схеми даних мишкою маркеруються ті поля, які необхідно видавати як результат реалізації запиту. Якщо необхідно відобразити всі поля таблиці, то активізується опція Все столбцы (AllColumns). Цю панель можна включати та виключати наступною кнопкою на панелі інструментів М5152, 1. Якщо виникне потреба добавити таблиці чи представлення, то слід на панелі інструментів натиснути на кнопку М5152, 2.

- Друга панель містить стовпчики, які відображають поля, що видаються у відповідь на запит. Маркеруючи мишкою проти певного поля позначку Выход можна керувати його видачею на екран. Для кожного стовпчика (Column) можна задавати псевдонім (Alias) та установлювати тип сортування по одному чи декількох полях (SortType) та задавати порядок сортування (SortOrder). Також в цій таблиці можна задавати умови вибірки, тобто накладати фільтри (Filter і Or…) на відбір певних записів з таблиць. Якщо в запиті необхідно виконувати группування, то слід натиснути кнопку М5152, 3 на панелі інструментів. Після чого після стовпчика, який задає порядок сортування з’явиться стовпчик з назвою Group By. В запиті, що розглядається не потрібно виконувати группування. Другу панель можна включати та виключати наступною кнопкою на панелі інструментів М5152, 4.

- Третя панель містить реалізацію запиту на мові Т-SQL. Цю панель можна включати та виключати наступною кнопкою на панелі інструментів М5152, 5.

- Результат виконання запиту після його вконання включається та виключається наступною кнопкою на панелі інструментів М5152, 6. Запит виконується за допомогою наступної кнопки на панелі інструментів М5152, 7.

Примітка. Якщо при виконанні запиту результат не з’явиться, то необхідно перевірити в першу чергу зв’язки, а потім синтаксис Т-SQL. Виправивши помилку знову виконати запит. Зверніть увагу, що імена полів таблиць БД в результатах запиту замінені на псевдоніми.

Виконаний запит зберігається після його закриття і стверджувальної відповіді у вікні (рис. 10) та визначення його імені у вікні (рис. 11).

М5152, Рис. 10 - Вікно для зберігання запиту, як представлення

Рис. 10 - Вікно для зберігання запиту, як представлення

М5152, Рис. 11 - Вікно для вибору імені запиту, як представлення

Рис. 11 - Вікно для вибору імені запиту, як представлення

Створений і збережений запит можна використовувати для створення інших запитів. Наприклад, потрібно обрахувати вартість проданих автомобілів з кодом 1. Тоді створюємо нове представлення, використовуючи таблицю Sklad і раніше створене представлення Prodaz_avto (див. рис.12 ) і добавляємо новий стовпчик розрахунку вартості dbo.Prodaz_avto.Кількість_продаж * dbo.Sklad.Cina

М5152, Рис. 12 - Вікно створення запиту з обрахунку вартості

Рис. 12 - Вікно створення запиту з обрахунку вартості

2. Створення запитів з використанням мови T-SQL

Обов’язкові ключові слова команди SELECT і FROM.

Вибірка з однієї таблиці.

Якщо потрібно переглянути всі поля і всі рядки таблиці, формується запит:

SELECT * FROM dbo.avto

Результат виконання запиту має наступний вид:

М5152, 8

Вибір окремих полів таблиці можна виконувати наступним чином:

SELECT Name_mod, Kod_avto

FROM Model

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

SELECT Name_mod AS Код_моделі, Kod_avto AS ‘Код авто’

FROM Model

Якщо нова назва поля складається з декількох слів, то її необхідно брати в лапки.

В запит на вибірку можна включати арифметичні операції. Наприклад, в базі є закупочна ціна автомобілів, а продаються вони з націнкою в 20 %. Щоб показати ціну продаж необхідно виконати такий запит:

SELECT Kod_avto AS Код_авто, Cina AS Закупівельна_ціна, Cina*1.2 AS 'Ціна продаж'

FROM Sklad

Дані в базі даних при цьому не зміняться.

3. Використання умов для вибірки

Для вибору певних рядків за певною умовою використовується ключеве слово WHERE. Наприклад, для вибірки кількості автомобілів на складі з кодом, що дорівнює одиниці, запит буде мати такий вид:

SELECT Kod_avto, Kol_S

FROM Sklad

WHERE (Kod_avto = 1)

Оператори умов:

< - менше

> - більше

<= - менше або дорівнює

>= - більше чи дорівнює

<> - перевірка на нерівність

= - перевірка на нерівність

!> - не більше чим

!< - не менше чим

is NULL - перевірка на відсутність запису

Умови можуть бути складними, тобто представляти собою комбінацію декількох операцій порівняння. В них можна використовувати логічні зв’язки AND – логічне І (загальна умова буде вірною, коли всі умови об’єднання є вірними), OR - логічне АБО (ЧИ) (загальна умова буде вірною, коли хоч одна з умов об’єднання є вірною), а також заперечення NOT. Якщо умова полягає в порівнянні поля зі списком значень, то можна використовувати ключеве слово IN.

Приклад запиту зі складною умовою вибірки з використанням логічної зв’язки OR, який надасть інформацію про автомобілі на складі ціна яких попадає у вказаний діапазон:

SELECT*

FROM Sklad

WHERE (Cina > 100000) OR (Cina < 300000)

Для перевірки наявності певного значення в указаному діапазоні також використовується оператор порівняння Between. Наприклад:

SELECT*

FROM Sklad

WHERE Cina between 100000 and 300000

М5152, 9

Також Вetween можно використовувати для роботи з першою буквою рядка. Але це перевірка букв по ASCI кодах. При роботі с цифрами верхній діапазон включається в діапазон перевірки, а при роботі з буквами - ні. Наприклад:

SELECT*

FROM avto

WHERE Name_avto between 'A' and 'P'

М5152, 10

Запит з використанням ключового слова IN:

SELECT Kod_avto, Name_avto

FROM avto

WHERE Name_avto in ('Audi', 'BMW', 'Opel')

Пошук за шаблоном виконує оператор Like. Шаблон - це рядок з службовими символами.

В шаблоні можна указувати такі службові символи і комбінації символів:

% - заміняє будь-яку кількість символів в рядку.

_ - заміняє будь-який один символ.

[набор символів] - визначає, що на цьому місці може стояти один з перерахованих символів.

[перший символ-другий символ] - визначає, що на цьому місці може стояти один из символів з указаного діапазону.

[^набор символів] - визначає, що на цьому місці може стояти будь-який, окрім перерахованих символів.

[^першийй символ-другий символ] - визначає, що на цьому місці може стояти будь-який, окрім символів з указаного діапазону.

Нижче наведено приклад запиту з використанням оператора Like, який видає прізвища менеджерів, які починаються на літеру А і Т.

SELECT*

FROM Menedzer

WHERE Name_men like '[АТ]%'

 

Якщо перед оператором Like поставимо заперечення NOT, то у відповідь на такий запит будуть видані всі прізвища менеджерів за виключенням тих, які починаються на літеру А і Т.

SELECT*

FROM Menedzer

WHERE Name_men NOT like '[АТ]%'

4. Використання в запитах логічних виразів

Для порівняння значень поля з заданим значенням використовується оператор CASE. Приклад його використання в операторі SELECT:

SELECT Kod_men AS 'Код менеджера’, Name_men AS 'Прізвище менеджера', [Продано за місяць], 'Рівень продаж'=

case

when[Продано за місяць]<=2 THEN 'Низький'

 when [Продано за місяць]>=7 THEN 'Високий'

else 'достатній'

END

FROM dbo.[Продано за місяць]

Go

Результат виконання запиту з використанням виразу CASE наведено нижче.

SQL Server допускає у виразі CASE не більше 10 рівнів вкладень.

5. Вибірка з декількох таблиць

Для вибірки даних з декількох таблиць також можливо використовувати ключеве слово WHERE.

Наприклад, надати інформацію про філії, що відкриті в кожному регіоні.

SELECT Filij.Kod_reg, Region.Name_reg, Filij.Kod_fil, Filij.Name_fil

FROM Filij, Region

WHERE Filij.Kod_reg = Region.Kod_reg

Такий же результат отримаємо при використанні оператора JOIN...ON. Ключовими словами при такому об’єднанні таблиць є наступні: [INNER] JOIN - внутрішнє об’єднання таблиць;

LEFT [OUTER]JOIN – ліве зовнішнє об’єднання таблиць;

RIGHT [OUTER] JOIN – праве зовнішнє об’єднання таблиць;

FULL [OUTER] JOIN – повне зовнішнє об’єднання таблиць;

CROS JOIN - декартовий добуток таблиць.

Розглянемо внутрішнє (INNER) об’єднання таблиць. Рядки таблиць об’єднуються при співпаданні значень в умові ON.

SELECT Filij.Kod_reg, Region.Name_reg, Filij.Kod_fil, Filij.Name_fil

FROM Region INNER JOIN

 Filij ON Region.Kod_reg = Filij.Kod_reg

Об’єднувати можна не лише дві таблиці. В Database Engine дозволяється в одному операторі SELECT обєднувати до 64 таблиць. Якщо потрібно об’єднати більше 64 таблиць, то це однозначно свідчить про не оптимальну модель бази даних. Нижче наведено приклад запиту, який об’єднує чотири таблиці: Menedzer, Sklad, Prodaz, avto і надає інформацію про продані автомобілі кожним менеджером, вказуючи їх кількість, ціну та вартість.

SELECT Menedzer.Name_men as Менеджер, avto.Name_avto as Назва_авто, Prodaz.Kol_P as Кількіст_продаж,

Sklad.Cina as Ціна,(Prodaz.Kol_P * Sklad.Cina)as Вартість

FROM Prodaz

INNER JOIN Menedzer ON

Prodaz.Kod_men = Menedzer.Kod_men

INNER JOIN Sklad ON

Prodaz.Kod_dwg = Sklad.Kod_dwg AND Prodaz.Kod_avto = Sklad.Kod_avto AND Prodaz.Kod_mod = Sklad.Kod_mod

NNER JOIN avto

ON Sklad.Kod_avto = avto.Kod_avto

Зовнішнє об’єднання буває: ліве (LEFT), праве (RIGHT) і повне (FULL).

Розглянемо приклад лівого зовнішнього об’єднання. В результат попадуть рядки, для яких співпадають значення полів в умові ON, і ті рядки з лівої таблиці, для яких не нашлось відповідних рядків в правій таблиці. Поля з правої таблиці будуть заповнені значеннями NULL. Таким чином можна виявити, які автомобілі є в наявності на склад, а які відсутні.

SELECT avto.Kod_avto, avto.Name_avto, Sklad.Kol_S, Sklad.Cina

FROM avto LEFT JOIN

Sklad ON avto.Kod_avto = Sklad.Kod_avto

Результат лівого зовнішнього об’єднання таблиць

М5152, 12

Приклад правого об’єднання таблиць. В результат попадуть рядки, для яких співпадають значення полів в умові ON, і ті рядки з правої таблиці, для яких не нашлось відповідних рядків в лівій таблиці. Поля з лівої таблиці будуть заповнені значеннями NULL. Таким чином можна виявити, менеджерів, які не продали жодного автомобіля.

SELECT Prodaz.Date_P, Prodaz.Kol_P, Menedzer.Kod_men, Menedzer.Name_men

FROM Prodaz RIGHT JOIN

 Menedzer ON Prodaz.Kod_men = Menedzer.Kod_men

Результат правого зовнішнього об’єднання таблиць.

М5152, 13

Вибрати ліве чи праве зовнішнє об’єднання таблиць можна в конструкторі клікнувши правою мишкою по дузі. Якщо вибираємо всі рядки з таблиці avto, то в результаті отримаємо ліве зовнішнє об’єднання таблиць, якщо вибираємо всі рядки з таблиці Sklad, то отримаємо повне зовнішнє об’єднання таблиць.

М5152, 14

В доповнення до лівого та правого об’єднання таблиць існує ще повне зовнішнє об’єднання таблиць FULL OUTER JOIN, яке об’єднує разом праве та ліве зовнішнє об’єднання таблиць. В результатному наборі будуть представлені всі рядки обох таблиць. Якщо не має відповідного рядка для одной із таблиц, то її стовпчики мати значення NULL.

Таблиці, що приймають участь в запиті повинні бути пов’язані між собою дугою, яка забезпечує умову вибіркию. Якщо дуга відсутня, то отримаємо декартовий добуток таблиць (CROS JOIN), в якому кожен рядок першої таблиці буде об’єднаний с кожним рядком другої таблиці і т.д. Результат такого об’єднання дає дуже велику таблицю і в переважній більшості він не має економічно обгрунтованого сенсу.

При вибірці з декількох таблиць рекомендується використовувати псевдоніми таблиць. Це повязано з тим, що в різних таблицях є одинакові поля, то завжди потрібно вказувати з якої таблиці береться те чи інше поле, для цього необхідно використовувати наступний синтаксис ім'я_таблиці.ім’я_поля. Але якщо імена таблиць довгі, то краще замінити її на короткі псевдоніми.

6. Сортування

Для сортування використовується директива Order by. Сортування за змовчанням виконується по зростанню. Для сортування по спаданню вказується ключове слово Desc. Є два варіанти написання директиви сортування.

1-й варіант: Order by і’мя_поля [Asc либо Desc]     

2-й варіант: Order by номер_поля [Asc либо Desc]

Номер поля - порядковый номер поля, який видається в запиті.

Можна сортувати рядки навіть по полю, яке не входить в список полів вибірки, а також пожна відсортовувати вихідні дані по декількох полях. Наприклад, результатом наведеного нижче запиту буде список менеджерів відсортованих за алфавітом в розрізі філій.

SELECT Name_men

FROM Menedzer

ORDER BY Kod_fil, Name_men

Сортувати дані можна також по спаданню, та обмежувати кількість рядків в результаті.

В прикладі, запиту з сортуванням буде видана інформація лише два рядки про дві останніх операції з продажу автомобілів зі спаданням дати продаж:

SELECT TOP 2 avto.Name_avto, Prodaz.Date_P, Prodaz.Kol_P FROM Prodaz

INNER JOIN avto ON Prodaz.Kod_avto = avto.Kod_avto

ORDER BY 2 DESC

7. Підзапити

Іноді для більш складних запитів потрібно використовувати підзапити.

Підзапит завжди береться в дужки. Підзапит може буть незвязаним чи коррельованими. Незвязаний підзапит – такий в формулюванні якого немає посилання на головний запит. В цьому випадку підзапит подзапит виконується один раз при виконанні головного запиту. Коррельований підзапит – такий, в якому внутрішній запит залежить від зовнішнього запиту для всіх його значень. Наведений приклад є коррельованим підзапитом, в якому використовується ключове слово IN, так як результат підзапиту може мати декілька значень.

Надати інформацію про автомобілі, які були продані за період з ‘2013-12-01' по '2013-12-31':

SELECT Kod_avto, Name_avto

FROM dbo.avto

WHERE Kod_avto IN

 (SELECT Kod_avto

FROM Prodaz

WHERE Date_P BETWEEN '2013-12-01' and '2013-12-31' )

М5152, 15

Такий же можна записати з використанням ключевого слова ANY. Результат даного запиту співпадатиме з результатом попереднього:

SELECT Kod_avto, Name_avto

FROM dbo.avto

WHERE Kod_avto=ANY

(SELECT Kod_avto

FROM Prodaz

WHERE Date_P BETWEEN '2013-12-01' and '2013-12-31')

В підзапитах може використовуватись функція EXISTS. Ця функція завжди залежить від змінної зовнішнього запиту, тому, як правило, задається в кореляційних запитах. Функція EXISTS сприймає внутрішній запит, як аргумент і приймає значення істина, якщо внутрішній запит видає один чи декілька рядків і приймає - хибність, якщо запит видає нуль рядків. Приклад запиту та його результату з використанням функції EXISTS. Надати інформацію, про автомобілі, які були продані 2013-12-01:

SELECT Kod_avto, Name_avto

FROM dbo.avto

WHERE EXISTS

 (SELECT Kod_avto

FROM Prodaz WHERE avto.Kod_avto= Prodaz.Kod_avto

AND Date_P='2013-12-01' )

М5152, 16

В запитах також можна використовувати функцію NOT EXISTS. Приклад використання цієї функції можна розглянути в попередньому запиті. Надати інформацію, про продані автомобілі, за всі дати за виключенням тих автомобілів, які були продані 2013-12-01:

SELECT Kod_avto, Name_avto

FROM dbo.avto

WHERE NOT EXISTS

(SELECT Kod_avto

FROM Prodaz WHERE avto.Kod_avto= Prodaz.Kod_avto

AND Date_P='2013-12-01' )

Практично всі запити SELECT, в яких виконується об’єднання таблиць з використанням оператора JOIN, можна представити у вигляді підзапитів і навпаки. Обидва способи представлення запитів мають право на існування. Розглянемо, в яких випадках потрібно використовувати той чи інший спосіб написання запиту. Підзапити мають перевагу в тому випадку, коли потрібно швидко обчислити агрегатне значення і використовувати його в зовнішньому запиті для виконання порівняння. Об’єднання таблиць має перевагу над підзапитами у випадку, коли список вибору в SELECT повинен містити дані більше ніж з однієї таблиці.

8. Групування

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

Надати інформацію про кількість та вартість проданих автомобілі менеджером з кодом 1.

SELECT Menedzer.Kod_men AS Код_менеджера, Menedzer.Name_men AS Прізвище,

SUM(Prodaz.Kol_P)AS Кількість_продаж, SUM(Sklad.Cina*Prodaz.Kol_P)AS Вартість продаж

FROM Filij INNER JOIN

Menedzer ON Filij.Kod_fil = Menedzer.Kod_fil INNER JOIN

Sklad INNER JOIN

Prodaz ON Sklad.Kod_dwg = Prodaz.Kod_dwg AND Sklad.Kod_avto = Prodaz.Kod_avto

AND Sklad.Kod_mod = Prodaz.Kod_mod ON

Menedzer.Kod_men = Prodaz.Kod_men

WHERE (Menedzer.Kod_men = 1)

GROUP BY Menedzer.Kod_men, Menedzer.Name_men

М5152, 17

Надати інформацію про кількість філій, відкритих у регіоні з кодом один.

SELECT Region.Kod_reg AS Код_регіону, Region.Name_reg AS Назва_регіону,

COUNT(Filij.Kod_fil)AS Кількість_філій

FROM Filij INNER JOIN

Region ON Filij.Kod_reg = Region.Kod_reg

WHERE Region.Kod_reg=1

GROUP BY Region.Kod_reg, Region.Name_reg

М5152, 18

При группуванні використовуються наступні агрегатні функції:

SUM – обраховує підсумок;

AVG - середнє арифметичне значення, NULL – ігнорується;

COUNT – підрахунок кількості елементів, що рівне кількості рядків;

MAX - знаходить максимальне значення;

MIN – знаходить мінімальне значення;

STDEV – статистичне стандартне відхилення

VAR - статистичне відхилення

Запити до БД можна створювати безпосередньо за допомогою операторів мови Transact-SQL, а також за допомогою конструктора. Кожен запит створений конструктором трансформується в запит на мові Transact-SQL.

9. Створення запитів за допомогою конструктора

Спочатку слід активізувати опцію Создать запрос ( ), а потім у меню запит активізувати опцію Создать запрос в редакторе (див. рис.13 )

М5152, Рис. 13 - Вікно для виклику конструктора запитів

Рис. 13 - Вікно для виклику конструктора запитів

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

М5152, Рис. 14 - Вікно конструктора запитів для вибору таблиць

Рис. 14 - Вікно конструктора запитів для вибору таблиць

Наприклад, реалізуємо запит, який надасть інформацію про продаж атомобілів з кодом 2, вказавши кількість продаж та менеджера, який оформлював цей продаж. Для цього вибираємо таблиці avtо, Prodaz та Menedzerі і закриваємо вікно Добавление таблиц. У наступному вікні рис.15 відмічаємо в таблицях атрибути, які необхідно видавати на екран у відповідь на запит, та у стовчику Filter у відповідному рядку задаємо умову вибірки (фільтрації). У нижній частині вікна конструктора система відображає створений запит на мові SQL. Після натиснення кнопки ОК і кнопки ыполнить отримаємо відповідь на сформований запит (рис. 16).

М5152, Рис. 15 - Вікно конструктора запитів для вибору атрибутів та задання умов фільтрації

Рис. 15 - Вікно конструктора запитів для вибору атрибутів та задання умов фільтрації

Відповідь на сформований запит розміщується внизу вікна (рис. 16), у верхній частині вікна представлено запит на мові SQL. Запит на мові SQL модифікуємо для отримання підсумків продаж автомобілів з кодом 2 (рис.17).

М5152, Рис. 16 - Вікно з результатами запиту

Рис. 16 - Вікно з результатами запиту

М5152, Рис. 17 - Вікно з результатами групувального запиту

Рис. 17 - Вікно з результатами групувального запиту

Завдання. Для БД, яка проектується в лабораторній роботі створити основні типи запитів:

1. Запити з обчисленнями.

2. Запити, які виконують сортування.

3. Запити вибірки за умовами.

4. Групувальні запити.

5. Підзапити.

З повагою ІЦ "KURSOVIKS"!