- •Тема 4. Організація машинної інформаційної бази систем оброблення економічної інформації
- •4.1. Поняття машинної інформаційної бази
- •Постійно-облікові файли характеризують об'єкти і предмети праці,а також ресурси.До них належать файли,що містять дані про основні засоби,малоцінні і швидкозношувальні предмети тощо.
- •4.2. Основи організації автоматизованого банку даних
- •4.3. Реляційна модель даних
- •Дані для формування бд “Постачальники”
- •Постачальники
- •Приклад функціональної залежності
- •4.4.Елементи теорії нормалізації
- •Покупець(Код клієнта, Ім'я, Адреса) та
- •4. 5. Sql: мова структурованих запитів.
- •Оператор переіменування
- •4. 6. Огляд концепцій зберігання інформації
- •Відмінності між бд та dw.
- •Потрібно зауважити, що деякі інструменти etl об'єднують кілька кроків цього процесу, інші- здійснюють їх окремо. Сам процес etl може вимагати дуже багато часу і управління мета-даними.
- •Переваги мolap-систем:
- •Запитання для самоперевірки
Оператор переіменування
SELECT <атрибут> AS <назва колонки>
FROM <таблиця>
Приклад 3
SELECT ТАБНОМ AS Табельний номер,прізвище, м'я,по батькові
FROM КАДРИ
Одержимо внаслідок виконання запиту таблицю ТАБНОМ:
ТАБНОМ
Табельний номер |
Прізвище |
Ім'я |
По батькові |
2004 |
Романов |
Анатолій |
Миколайович |
2009 |
Волков |
Сергій |
Іванович |
2015 |
Алферова |
Зоя |
Василівна |
3610 |
Купріянов |
Валерій |
Іванович |
Для наступного оператора необхідно зробити перелік лише тих рядків, які задовільняють умову.
SELECT <перелік атрибутів> (AS)| *>
FROM <таблиця>
WHERE <текст порівняння: <,<=,<>,=...>
Приклад 4
SELECT*
FROM КАДРИ
WHERE табельний номер <2015
Результатом виконання запиту буде таблиця :
Цех |
Табельний номер |
Прізвище |
Ім'я |
Побатькові |
Стать |
Рік народження |
Оклад |
1 |
2004 |
Романов |
Анатолій |
Миколайович |
ч |
1942 |
800.00 |
2 |
2009 |
Волков |
Сергій |
Іванович |
ч |
1937 |
700.00 |
Тепер розглянемо математичні вирази.
SELECT табельний номер, прізвище,ім'я,оклад/25
FROM КАДРИ
Одержимо:
КАДРИ
Табельний номер |
Прізвище |
Ім'я |
|
2004 2009 2015 3610 |
Романов Волков Алферова Купріянов |
Анатолій Сергій Зоя Валерій |
32.00 28.00 30.00 24.00 |
Ми розраховували середньоденні заробітки, враховуючи, що місяць має 25 робочих днів. Зауважимо, що стовпець із розрахованими значеннями середньоденних заробітків не матиме назви. Щоб назвати новостворюваний стовпець, необхідно використати таку конструкцію запиту:
SELECT табельний номер, прізвище,ім'я, оклад/25 АS середньоденний заробіток
FROM КАДРИ
WHERE оклад /25<30.00
Результатом виконання запиту буде таблиця :
Табельний номер |
Прізвище |
Ім'я |
Середньоденний заробіток |
2009 3610 |
Волков Купріянов |
Сергій Валерій |
28.00 24.00 |
Треба зауважити, що не можна використовувати ім'я змінної в окремому реченні.
Запит входу (in) можна сконструювати так:
SELECT прізвище
FROM КАДРИ
WHERE Рік народження IN (¢1941¢,¢1942¢)
Одержимо такий результат:
-
ПРІЗВИЩЕ
Романов
Алферова
Купріянов
Мовою SQL можна конструювати запит з операціями агрегування, до яких відносяться СОUNT (підрахунок),Max, Min, SUM (сума)… для таблиць або для деяких підгруп таблиці.
Конструкція запиту з операціями агрегування така:
SELECT [операція агрегування] (<атрибут>)
FROM <таблиці>
WHERE ** немає груп
Зауважимо,що
СОUNT (атрибут)- обчислює кількість рядків, що містять (атрибут)
СОUNT (*) – обчислює всі рядки (включаючи нулі).
Приклад 5
SELECT SUM (Оклад)
FROM КАДРИ
Одержимо:
-
2850.00
Але не можна одночасно вибрати агрегати та одиничні значення. Наступна конструкція запиту є недопустимою:
SELECT табельний номер, прізвище, SUM (Оклад)
FROM КАДРИ
Важливою мовою структурованих запитів SQL є конструкція GROUP BY (групувати за):
SELECT <перелік [ атрибут½операція агрегування (<атрибут>)]>
FROM <перелік таблиці (ь)>
[WHERE<умови>]
GROUP BY <перелік атрибутів>
Приклад 6. Нехай є база даних ПОСТАЧАЛЬНИКИ:
Дата поставки |
Назва |
Ціна за одиницю товару |
Кількість поставки |
Сума поставки |
|
постачальника |
товару |
||||
7.11.XX |
АТ “Оріон” |
відеомагнітофон |
800.00 |
5 |
4000.00 |
7.11.XX |
АТ “Оріон” |
відеоплеєр |
600.00 |
3 |
1800.00 |
8.11.XX |
ЗАТ “Карпати” |
Стіл М100 |
350.00 |
2 |
700.00 |
9.11.XX |
ЗАТ “Карпати” |
Стіл М100 |
350.00 |
10 |
3500.00 |
9.11.XX |
АТ “Турбо” |
aвтомобіль Lanos |
40000.00 |
2 |
80000.00 |
10.11.XX |
АТ “Оріон” |
відеоплеєр |
600.00 |
2 |
1200.00 |
Задано запит для агрегування за групами “Назва постачальника, назва товару” з підрахунком суми поставки по кожній назві товару.
SELECT назва постачальника, назва товару, SUM (Сума поставки)
FROM ПОСТАЧАЛЬНИКИ
GROUP BY назва постачальника, назва товару
Результат запиту буде таким:
Назва |
|
||
постачальника |
товару |
|
|
АТ “Оріон” |
відеомагнітофон |
4000.00 |
|
АТ “Оріон” |
відеоплеєр |
3000.00 |
|
ЗАТ “Карпати” |
Стіл М100 |
4200.00 |
|
АТ “Турбо” |
aвтомобіль Lanos |
80000.00 |
І, нарешті, розглянемо конструкцію запиту HAVING (маємо). У загальному випадку такий запит мовою SQL можна записати так:
SELECT<перелік [атрибут½операція агрегування (<атрибут>)]>
FROM <перелік таблиці (ь)>
[ WHERE < умови>]
GROUP BY <перелік атрибутів >
HAVING < умову за групами>
Приклад 7. Необхідно одержати інформацію про поставки товарів однієї назви на суму більшу, ніж 3000.00 грн., в розрізі постачальників (крім постачальника ЗАТ “Карпати”).
Запит до бази даних ПОСТАЧАЛЬНИКИ буде таким:
SELECT назва постачальника, назва товару, SUM (Сума поставки)
FROM ПОСТАЧАЛЬНИКИ
GROUP BY назва постачальника, назва товару
HAVING назва постачальника <> ¢ЗАТ Карпати¢
AND SUM (сума поставки) > 3000.00
Результат запиту буде таким:
Назва |
|
||
постачальника |
товару |
|
|
АТ “Оріон” |
відеомагнітофон |
4000.00 |
|
АТ “Турбо” |
aвтомобіль Lanos |
80000.00 |
Абсолютно неправильною буде конструкція запиту типу:
SELECT назва постачальника, назва товару, SUM (Сума поставки)
FROM ПОСТАЧАЛЬНИКИ
GROUP BY назва постачальника, назва товару
HAVING дата поставки <> ¢8.11.XX¢ ,
оскільки, як вже зазначалося раніше, не можна використовувати ім'я змінної в окремому реченні.
Наведені нами конструкції запитів не охоплюють всього діапазону можливостей мови структурованих запитів SQL, які є значно потужнішими і ширшими, але дають певну уяву про SQL як універсальний інструмент спрощення процедур пошуку даних в БД.