Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОБД / лабки / БД_Лабораторна робота13 Бойко

.doc
Скачиваний:
0
Добавлен:
27.01.2024
Размер:
167.42 Кб
Скачать

Лабораторна робота 13

Тема: Закріплення навичок розроблення виконання простих запитів до БД з використанням оператора SELECT.

Мета: Закріпити навички розроблення виконання простих запитів до БД з використанням оператора SELECT.

Форма звіту: електронний звіт.

Бойко Евген 310-і

ЗАВДАННЯ

Виконати завдання на закріплення знань виконання запитів з таблиць учбової бази даних (college_2) згідно списку завдань. Результати подати у вигляді синтаксису запиту та скрін-шоту результату виконання запиту з екрану.

БЛОК 1. Використання спеціальних операторів в розділі WHERE

    1. побудувати запит для отримання даних про ім'я та прізвища всіх співробітників компанії, коефіцієнт бонусу яких дорівнює 1.2, 1.5, 1.7, відсортованих по зменшенню бонусу в алфавітному порядку прізвища

SELECT employee.first_name, employee.second_name FROM employee WHERE employee.coef_bonus IN (1.2, 1.5, 1.7) ORDER BY employee.coef_bonus DESC, employee.second_name ASC

    1. побудувати запит для отримання даних про назву проектів, імені та країні всіх клієнтів компанії з України, відсортованих в алфавітному порядку за прізвищем

SELECT project.project_title, client.client_name, client.country FROM project, client WHERE project.client_id=client.client_id AND client.country LIKE "Украина" ORDER BY client.client_name ASC

    1. побудувати запит для отримання даних про посади і структурних підрозділах компанії співробітників, чиї прізвища починаються на «М», відсортованих за посадами

SELECT position.position_name, structure.structure_name, employee.second_name FROM position, structure, employee WHERE structure.structure_id=position.structure_id AND employee.position_id=position.position_id AND employee.second_name LIKE "Я%" ORDER BY position.position_name ASC

    1. побудувати запит для отримання даних про прізвища, посади та графіку роботи співробітників, при якому кількість годин роботи знаходиться в діапазоні між 40 і 60 годинами на тиждень

SELECT employee.second_name, position.position_name, schedule.schedule_name FROM employee, position, schedule WHERE employee.position_id=position.position_id AND employee.schedule_id=schedule.schedule_id AND schedule.hours BETWEEN 40 AND 60

БЛОК 2. Обробка NULL-значень

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

SELECT * FROM `employee` WHERE adress IS null

БЛОК 3. Вбудовані функції. агрегатні функції

3.1 побудувати запит для отримання даних про дату народження старшого співробітника компанії в кожному відділі

SELECT MIN(employee.bdate) FROM employee, structure, position WHERE structure.structure_id=position.structure_id AND employee.position_id=position.position_id GROUP BY structure.structure_name

3.2 побудувати запит для отримання даних про назву відділу і кількості співробітників в кожному відділі компанії

SELECT structure_name, position_amount FROM `structure` GROUP BY structure_name

3.3 побудувати запит для отримання даних про кількість завдань в проектах, за умови, що виконаних завдань більше 6

3.4 побудувати запит для отримання даних про прізвище та ім'я співробітників, які виконали більше 10 завдань

БЛОК 4. Вбудовані функції. Функції рядків

4.1 побудувати запит для отримання даних про прізвище та ім'я співробітника, розділених пропуском в одній терміні, і повному місце роботи працівника в один рядок (посада, графік і відділ), розділеним дефісом

SELECT concat (`employee`.`second_name`, " ", `employee`.`first_name`) AS "Дані", concat(position.position_name, "-", schedule.schedule_name, "-", structure.structure_name) AS "Місце роботи" FROM employee, position, schedule, structure WHERE structure.structure_id=position.position_id AND employee.position_id=position.position_id AND schedule.schedule_id=employee.schedule_id

4.2 побудувати запит для отримання даних про перелік назв посад, виведених на екран в зворотному порядку

SELECT position.position_name FROM position ORDER BY position.position_name DESC

4.3 побудувати запит для отримання даних для формування коду проекту, який складається з перших букв назви проекту, типу проекту і роки почала роботи над проектом. Всі символи повинні виводиться великими літерами

SELECT CONCAT(lpad(upper(`project`.`project_title`), 1, "_"), lpad(upper(`project`.`project_type`), 1, "_"), lpad(upper(`project`.`date_start`), 4, "____")) AS "Код" FROM project

БЛОК 5. Вбудовані функції. Функції дати і часу

5.1 побудувати запит для отримання даних про прізвища і віці кожного співробітника компанії в роках, відсортованого по збільшенню

SELECT employee.second_name, (YEAR(CURRENT_DATE)-YEAR(`bdate`)) AS `age` FROM `employee` ORDER BY bdate DESC

5.2 побудувати запит для отримання даних про прізвища і віці, в якому співробітники відділу тестування і аналітики отримали вищу освіту

SELECT DISTINCT(employee.second_name) AS "Прізвище", YEAR(CURRENT_DATE)-YEAR(education.education_date) as "Вік" FROM employee, structure, education, position WHERE employee.employee_id=education.employee_id AND education.education_name LIKE "ВО%" AND position.position_id=employee.position_id AND position.structure_id=structure.structure_id AND structure.structure_name IN ("Analyst", "Tester")

5.3 побудувати запит для отримання даних про назву проекту з розробки мобільних додатків, із завершенням роботи над яким пройшло не більше 60 днів.

SELECT project.project_title AS "название", DATEDIFF(CURRENT_DATE, project.date_end) AS "Количество дней" FROM project WHERE project.project_type LIKE "mobile%" AND project.project_status LIKE "завершен" AND DATEDIFF(CURRENT_DATE, project.date_end)<60

6