Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Access i SQL.doc
Скачиваний:
18
Добавлен:
07.02.2016
Размер:
1.2 Mб
Скачать

5 Лабораторна робота № 5

Тема роботи: Створення запитів мовою SQL.

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

5.1 ІнструкціяSelect мовиSql

При створенні запитів в режимі конструктора автоматично ство­рюється інструкція на мові SQL. Її можна переглянути за допомогою меню і внести зміни. Оптимізатор запитів (Query Optimizer) обробляє запит після запуску і будує найефективніший план його виконання. Оптимізатор може навіть змінити структуру запиту.

Інструкція Select має такі розділи:

SELECT перелік полів або виразів

INTO ім’я нової таблиці

FROM перелік таблиць, з яких вибрані поля

WHERE умови відбору записів

GROUP BY поля або вирази для угруповання даних

HAVING умови відбору записів після угруповання

UNION

ORDER BY перелік полів для сортування

Обов’язковими є тільки розділи SELECT та FROM. Інші розділи краще використовувати в тому порядку, в якому вони тут записані.

5.1.1 Розділ select

Він визначає потрібні для запиту поля та вирази. Полю можна надати нове ім’я – псевдонім (alias). Можна створювати обчислю­вальні поля. Синтаксис розділу:

SELECT [ ALL | DISTINCT | DISTINCTROW] <список полів > ;

  • ALL – використовується за замовчанням і дозволяє включати до запиту однакові рядки;

  • DISTINCT – аналізується результат вибірки, і з однакових значень виводиться лише одне, тобто всі рядки вибірки різні.

  • DISTINCTROW – кожен рядок вибірки буде створений з уні­кальної комбінації записів базових таблиць, але в залежності від того, які поля вибрані, може статися так, що вибірка матиме однакові ряд­ки. Параметр DISTINCTROW впливає на результат вибірки тільки тоді, коли використовувалась операція JOIN та до вибірки були вклю­чені не всі стовпці таблиць.

Задача 5.1. Створити запит на вибірку даних, до якого увійдуть усі відомості про робітника з таблиці tvidom.

SELECT * FROM tvidom ;

Такий вигляд матиме інструкція SQL. Результати роботи запиту матимуть майже такий самий вигляд, як таблиця 1.6, тільки вибірка даних буде упорядкована за табельним номером. Access за замовчан­ням упорядковує дані за ключовим полем, якщо не вказаний якийсь інший варіант. Символ * використовується, якщо вибираються всі поля таблиці. Ім’я таблиці tvidom вказується у розділі FROM.

Задача 5.2. Вивести прізвища тих робітників, яким була нара­хована заробітна плата.

SELECT DISTINCT tzarobitok.tn

FROM tzarobitok ;

Така інструкція створює вибірку табельних номерів з табли­ці tzarobitok. Але замість них виводяться прізвища, тому що в конструк­торі таблиці tzarobitok була використана підстанов­ка. Кожне прізвище виводиться лише один раз завдяки використанню ключового слова DISTINCT. Якщо його НЕ писати, то кожне прізвище буде виведено стільки разів, скільки воно зустрічається в таблиці.

5.1.2 Розділ from

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

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

Головна таблиця JOIN TYPE дочірня таблиця ON умови зв’язку

таблиць

ON умови зв’язку таблиць вказує які поля таблиць треба порів­нювати і яким чином. Найчастіше використовується оператор =. Інші оператори порівняння <, >, <=, >=, <> можна використовувати тільки в інструкції SQL, в режимі конструктора запитів це неможливо.

JOIN TYPE – тип з'єднання таблиць. Можливі такі типи:

  1. INNER JOIN – встановлюється за замовчанням. До запиту включаються лише ті записи з обох таблиць, в яких співпадають зна­чення відповідних полів.

Задача 5.3. Створити запит на вибірку даних, до якого увійдуть прізвище робітника, його табельний номер, дата та сума заробітку.

SELECT tvidom.tn, tvidom.fio, tzarobitok.dat, tzarobitok.zar

FROM tvidom INNER JOIN tzarobitok

ON tvidom.tn = tzarobitok.tn

ORDER BY tzarobitok.dat ;

З обох таблиць відбираються тільки ті записи, у яких співпада­ють значення табельних номерів. Розділ ORDER BY забезпечує сорту­вання вибірки за датою. Інструкція відповідає запиту для задачі 2.1.

  1. LEFT [OUTER] JOIN – до запиту включаються всі записи головної (лівої) таблиці, незалежно від того чи існують для них відпо­відні записи в дочірній (правій) таблиці. Якщо в правій таблиці немає даних для вибірки, в стовпці запиту їхнє місце вільне. Якщо в попередньому прикладі змінити тип зв’язку, то виведуться й прізвища тих робітників, які ще не працювали.

Задача 5.4. Знайти відомості про робітників, які ще не працю­вали, тобто їхні заробітки відсутні в таблиці tzarobitok.

SELECT tvidom.pidrozdil, tvidom.fio

FROM tvidom LEFT JOIN tzarobitok ON tvidom.tn = tzarobitok.tn

WHERE (((tzarobitok.tn) Is Null)) ;

Ця інструкція відповідає запиту для задачі 2.6. З таблиці tvidom спочатку вибираються всі записи, а потім розділ WHERE уточнює умову відбору. Умова Is Null залишає у виборці тільки ті записи з таб­лиці tvidom, які не мають зв’язаних з ними записів у таблиці tzarobitok.

  1. RIGHT [OUTER] JOIN – до запиту включаються всі записи правої таблиці, незалежно від того чи існують для них відповідні за­писи в лівій таблиці.

  2. FULL [OUTER] JOIN – в MS Access відсутній. В SQL Server до запиту ввійдуть усі записи з двох таблиць: ті, що задовольняють умові з’єднання, і ті, що не задовольняють.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]