
Використання замінників імен таблиць
Доволі незручно декілька раз набирати імена таблиць в одній команді - імена можуть бути довгими і повторюватися багато раз в реченнях SELECT, WHERE, ORDER BY. Щоб уникнути цього, можна використовувати тимчасові синоніми (чи замінники) імен таблиць, які задаються в команді FROM і діють тільки в даній команді.
Замінники імен таблиць (які також називаються табличними мітками) слід також задавати в реченні SELECT. Це підвищує ефективність виконання запиту, спрощуючи його ............. дію.
Попередній приклад можна записати в наступному вигляді.
SELECT a Head CITY, в name
FROM PROVINCE a, REGION в
WHERE а. id, в. PROVINCE_ID;
Замінники можуть мати довжину до 30 символів, але чим вони коротші, тим краще. Якщо задаються замінники імен таблиць в реченні FROM, то в реченні SELECT в якості префікса і імен стовбців повинен стояти власне цей замінник, а не ім’я таблиці.
Композиція (добуток)
Коли умову з’єднання задано ...................., або вона взагалі відсутня, то результатом з’єднання буде добуток двох таблиць. Коли кожна стрічка однієї таблиці з’єднується з кожною стрічкою другої таблиці і всі отримані результати поміщаються в таблицю результатів.
З’єднання не по рівності.
З’єднання таблиць можна проводити і не по рівності. Це відбувається в тих випадках, коли значення поля однієї таблиці однієї таблиці потрапляє в діапазон значень іншої. В нашому випадку з’єднання може відбуватися на базі оператора BETWEEN, або..>=....and<=.
Правила для з’єднання таблиць
Щоб з’єднати три таблиці необхідно задати дві умови з’єднання. Для того, щоб з’єднанти чотири таблиці необхідно задати як мінімум три з’єднуючі умови.
Загальне правило просте:
Кількість з’єднуючтих таблиць мінус один = мінімальне число умов з’єднання.
Це правило може не працювати, якщо у вашій таблиці є ...................
(який складається з декількох полів) первинний ключ (PRIMARY NEY), однозначно індетифікуючий кожен запис.
Загальний синтаксис команди SELECT, який містить умови з’єднання таблиць.
SELECT [DISTING] {[таблиця]. * |вираз [замінник], .......}.
FROM таблиця [замінник],.......
[WHERE умова з’єднання]
[AND умова настрічки]
[Or умова настрічки ]
[GROUP BY {вираз, стовбець Y, ....}]
[HAVING критерій відбору груп]
[ORDER BY {вираз/стовбець}[asc/desl] ]
Вправа до лр №4
1. Знайти мінімальну і максимальну дати введення даних в таблицю REGION.
2. Визначити мінімальну і максимальну дати введення інформації в таблицю REGION по кожній з областей.
3. визначити скільки міст є в області, яка задається при виконанні команди. В якості результату видати тільки цифру.
4. Знайти області, в яких кількість міст і назви яких починаються на букву ‘С’ перевищує 5.
5. перевірити чи дійсно всі міста Дніпетровської області мають унікальний код.
6. Виведіть назву компанії, область і місто, її розташування для всіх компаній з датою регістрації і після 01/01/96 і 15/01/97.
7. Видати кількість підприємств у місті CKOLE, Львівської області.
8. видати кількість підприємств по районах Львівської області без міста Львова.
Відповіді до вправ лр №4
1. SELECT MIN (IN_DATE), MAX (IN_DATE)
FROM REGION;
2. SELECT MIN (IN_DATE), MAX (IN_DATE)
FROM REGION;
GROUP BY DROVINCE_NAME;
3. SELECT COUNT (NAME)
FROM REGION;
WHERE PROVINCE_NAME = ‘& ANYNAME’;
4. SELECT PROVINCE_NAME, COUNT(NAME)
FROM REGION;
WHERE NAME LIKE ‘С%’
GROUPBY DROVINCE_NAME
HAVING COUNT(NAME) >5
5. SELECT COUNT (NAME)
FROM REGION;
WHERE PROVINCE_NAME = ‘ДНЕПРОПЕТРОВСКАЯ’
GROUP BY ID
HAVING COUNT (*) >1;
6. SELECT а NAME, в. NAME, с. NAME
FROM B. INFOa, PROVINCEb,REGIONc
WHERE PROVINCE= b. і d
AND PROVINCE = c. PROVINCE_ID
AND REGION = c. ID
AND DATE REG BETWEEN ‘01/01/96’
AND ‘15/01/96’
7. SELECT (а name), в. name
FROM B_INFOa, REGIONb
WHERE PROVINCE= b. і d
AND PROVINCE = c. PROVINCE_ID
AND b. name = ‘СКОЛЕ’
8. SELECT в. name, COUNT(*)
FROM B_INFO REGION
WHERE PROVINCE= b. PROVINCE_ID
AND REGION = b. ID
AND b. PROVINCE_NAME = ‘ ЛЬВОВСКАЯ’
GROUP BY b. PROVINCE_NAME , b. NAME
ORDER BY b. NAME;