Практика з SQL

Основи SQL: SELECT, UPDATE, DELETE, INSERT

Базові запити: SELECT, UPDATE, DELETE, INSERT. Робота із одиночними таблицями.

З'єднання таблиць для складних запитів

Використання JOIN для об'єднання даних із різних таблиць

Основи баз даних

Розуміння ролі баз даних у створенні програмного забезпечення, типи баз даних та основні операції.

Роль баз даних у створенні програмного забезпечення

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

Типи баз даних

  1. Реляційні бази даних:
    Цей тип баз даних грунтується на моделі реляцій, де дані організовані як таблиці з рядками (кортежами) і стовпцями (атрибутами). Реляційні бази даних використовують мову структурованих запитів SQL взаємодії з даними.
    Реляційні бази даних використовують мову структурованих запитів SQL взаємодії з даними.
  2. Графові бази даних:
    Цей тип баз даних призначений зберігання даних, де важливі взаємозв'язки між об'єктами.
    Вони особливо корисні для моделювання соціальних мереж, транспортних систем та інших сценаріїв, де складні зв'язки між даними.
  3. Документ-орієнтовані бази даних:
    Цей тип баз даних використовується для зберігання, організації та пошуку документів та їх ієрархічних структур.
    Вони підходять для систем, де документи мають різну структуру.
  4. Ключ-значення бази даних:
    Вони спеціалізовані на швидкому зберіганні та отриманні даних за допомогою унікальних ключів.
    Це корисно для кешування даних та зберігання тимчасової інформації.
  5. Колонкові бази даних:
    Вони оптимізовані для роботи з великими обсягами даних, зберігаючи інформацію про стовпці замість рядків.
    Це дозволяє зменшити використання пам'яті та покращити продуктивність.

Висновок

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

Презентація

або відкрити в новій вкладці Google Презентація

Більше інформації про базу даних

Для отримання додаткового матеріалу потрібно перейти за посиланням
Google Drive

Тести для закріплення знань

Основи баз даних

Структуровані запити

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

Structured Query Language (SQL)

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

Створення структурованих запитів

  1. SELECT:
    Цей запит використовується для вибору даних з однієї або декількох таблиць.
    Він дозволяє задавати умови, фільтрувати дані та сортувати їх.
  2. INSERT:
    Запит для введення нових записів у таблицю бази даних.
  3. UPDATE:
    Використовується для оновлення наявних даних у таблиці.
  4. DELETE:
    Дозволяє видаляти записи з таблиці.
  5. JOIN: Використовується для підключення даних із різних таблиць на основі спільних полів.

Перевірка цілісності даних

Цілісність даних є ключовим аспектом бази даних. Вона гарантує, що дані зберігаються та обробляються у правильному форматі та відповідають заданим правилам. SQL дозволяє встановлювати обмеження на дані, такі як унікальність значень у стовпці, зв'язки між таблицями, відсутність нульових значень, а також запускати тригери – операції, що автоматично виконуються при певних подіях.

Висновок

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

Структуровані запити

Для отримання додаткового матеріалу потрібно перейти за посиланням
Google Drive

Більше практики, тестів та інформації на нашому практикумі https://iqaengineer.com/ua/sql/

або відкрити в новій вкладці Google Презентація

Тести для закріплення знань

Структуровані запити: Вивчення мови SQL для створення структурованих запитів до баз даних та перевірка цілісності даних

Практичні завдання

Налаштування та доступ до бази даних:

Завантаження MySQL Workbench:

    • Перейдіть на офіційний сайт MySQL: https://www.mysql.com/.
    • Завантажте версію MySQL Workbench, що підходить для вашої операційної системи (Windows, MacOS, Linux).
Установка MySQL Workbench
  • Запустіть інсталяційний файл, який ви завантажили.
  • Дотримуйтесь інструкцій майстра установки, вибираючи опції, що підходять для ваших потреб.
Створення нового з'єднання
  • У MySQL Workbench виберіть "Home" і потім "New Connection".
  • Хост: emeli.mysql.tools
  • Ім'я користувача: emeli_qa
  • Пароль: jCB222t8iS
  • Натисніть «Test Connection», щоб переконатися, що підключення встановлено успішно.

SELECT (Вибір даних):

Вибрати всі дані з таблиці:

SELECT * FROM назва_таблиці;

Вибір конкретних стовпців:

SELECT стовпець1, стовпець2 FROM назва_таблиці;

Вибір даних із умовою:

SELECT * FROM назва_таблиці WHERE умова;

Вправи

Вибрати всі дані з таблиці Clients

SELECT * FR0M Clients;

Вибрати тільки імена та прізвища клієнтів:

SELECT client_name, client_surname FR0M Clients;

Вибрати унікальні імена таблиці клієнтів:

SELECT DISTINCT client_name FR0M Clients;

Вправи

Вибрати клієнтів із певним ім'ям (наприклад, "Ilon"):

SELECT * FR0M Clients WHERE client_name = 'Ilon';

Вибрати клієнтів із певним номером телефону (наприклад, "0675453342"):

SELECT * FR0M Clients WHERE client_phone = '0675453342';

Вибрати клієнтів, імена яких починаються з певної літери (наприклад, "T"):

SELECT * FR0M Clients WHERE client_name LIKE 'T%';

Вибрати клієнтів, чиї прізвища містять певне слово (наприклад, "McGregor"):

SELECT * FR0M Clients WHERE client_surname LIKE '%McGregor%';

Вибрати клієнтів в алфавітному порядку на прізвище:

SELECT * FR0M Clients ORDER BY client_surname;

Підрахувати кількість клієнтів у таблиці:

SELECT COUNT(*) AS total_clients FR0M Clients;

Відео інструкція з SELECT

Крок 1: Відкриття MySQL Workbench

Відкрийте програму MySQL Workbench та переконайтеся, що ви підключені до вашої бази даних.


Крок 2: Вікно Query та виконання запитів

У вікні Query ми будемо писати наші запити. Щоб їх виконати, просто натискайте Ctrl+Enter.

INSERT (Додавання даних):

Вставка даних у всі стовпці:

INSERT INTO назва_таблиці VALUES (значення1, значення2, ...);

Вставка даних у вказані стовпці:

INSERT INTO назва_таблиці (стовпець1, стовпець2, ...) VALUES (значення1, значення2, ...);

Вправи

Вставка одного запису із зазначеними значеннями:

INSERT INTO Clients (client_id, client_name, client_surname, client_phone) VALUES (1, 'Mark', 'Tomson', '0675453344');

Вставка кількох записів:

INSERT INTO Clients (client_id, client_name, client_surname, client_phone) VALUES (2, 'Jon', 'Jonson', '0984545555'), (3, 'Robert', 'Somsen', '0675453344'), (4, 'Bill', 'Roberson', '0685453333');

Відео інструкція з INSERT INTO

UPDATE (Оновлення даних):

Оновлення даних у всіх рядках:

UPDATE назва_таблиці SET стовпець = нове_значення;

Оновлення даних із умовою:

UPDATE назва_таблиці SET стовпець = нове_значення WHERE умова;

Вправи

Оновлення імені клієнта за client_id:

UPDATE Clients SET client_name = 'New' WHERE client_id = 1;

Оновлення прізвища клієнта по client_phone:

UPDATE Clients SET client_surname = 'New ' WHERE client_phone = '0675454433';

Зміна номера телефону клієнта за client_id:

UPDATE Clients SET client_phone = '0984544444' WHERE client_id = 2;

Комбіноване оновлення кількох полів client_id:

UPDATE Clients SET client_name = 'New Name', client_surname = 'New surname' WHERE client_id = 3;

Відео інструкція з UPDATE

DELETE (Видалення даних):

Видалення всіх рядків із таблиці:

DELETE FROM назва_таблиці;

Видалення рядків з умовою:

DELETE FROM назва_таблиці WHERE умова;

Вправи

Видалити клієнта за ідентифікатором

DELETE FROM Clients WHERE client_id = 1;

Видалити клієнта на ім'я та прізвище:

DELETE FROM Clients WHERE client_name = 'Ilon' AND client_surname = 'Musk';

Видалити клієнта за номером телефону:

DELETE FROM Clients WHERE client_phone = '0983434444';

Видалити всіх клієнтів із певним ім'ям:

DELETE FROM Clients WHERE client_name = 'Ilon';

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

DELETE FROM Clients WHERE client_phone LIKE '068%';

Видалити клієнтів, у яких немає номера телефону:

DELETE FROM Clients WHERE client_phone IS NULL;

Видалити всіх клієнтів, крім тих, у кого ідентифікатор дорівнює певному значенню:

DELETE FROM Clients WHERE client_id <> 2;

Відео інструкція з DELETE

Завдання

Таблиця Customers і Orders_Products

  1. Список унікальних доменів електронної пошти клієнтів: Отримайте список унікальних доменів електронної пошти, які використовуються клієнтами.
  2. Список клієнтів у алфавітному порядку: Отримайте список клієнтів в алфавітному порядку на їхнє прізвище.
  3. Кількість клієнтів з унікальними іменами: Розрахуйте кількість клієнтів із унікальними іменами.
  4. Список клієнтів із форматованим номером телефону: Отримайте список клієнтів із форматованим номером телефону.
  5. Список клієнтів з короткими іменами: Отримайте список клієнтів із іменами, що містять менше 5 символів.
  6. Середня кількість символів в іменах клієнтів: Розрахуйте середню кількість символів у іменах клієнтів.
  7. Список клієнтів, які не мають номера телефону або електронної пошти: Отримайте список клієнтів, які не мають номера телефону або адреси електронної пошти.
  8. Список клієнтів, у яких електронна пошта містить 'gmail.com': Отримайте список клієнтів, у яких адреса електронної пошти містить домен 'gmail.com'.

Тестування продуктивності баз даних

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

База даних

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

Оцінка продуктивності бази даних

є складним та багатогранним процесом. Вона включає аналіз різних аспектів, що впливають на продуктивність, та визначення тих метрик, які дозволяють об'єктивно оцінити її роботу. Основні показники, які слід враховувати в оцінці продуктивності:

  1. Час відгуку (Response Time): Це час, необхідний системі обробки запиту і повернення результату користувачеві. Вимірюється у мілісекундах або секундах.
  2. Час виконання запитів (Query Execution Time): Цей час займає виконання конкретного запиту в базу даних. Важливо виміряти час виконання різних типів запитів.
  3. Пропускна спроможність (Throughput): Кількість операцій, які система може обробити протягом однієї секунди. Визначається в одиницях виміру на одиницю часу.
  4. Використання ресурсів (Resource Utilization): аналіз використання ресурсів, таких як процесор, пам'ять та дисковий простір під час роботи системи. Стабільність: Здатність системи підтримувати стабільну працездатність навіть під високим навантаженням.

Оптимізація запитів

є ключовою частиною забезпечення високої продуктивності бази даних. Неоптимальні запити можуть призвести до зниження швидкодії та завантаження бази даних. Основні підходи до оптимізації запитів:

  1. Використання індексів: Індекси допомагають прискорити пошук та вибірку даних. Оптимальне використання індексів може покращити продуктивність вибірки даних.
  2. Вибір оптимальних операторів: Вибір правильних операторів для виконання запиту може істотно вплинути на швидкодію виконання.
  3. Правильне написання запитів: Використовуйте WHERE для фільтрації даних, а ORDER BY для сортування лише там, де це потрібно. Уникайте зайвих чи зайвих запитів.
  4. Кешування запитів (Query Caching): Кешування може зменшити кількість повторних виконань однакових запитів та покращити продуктивність.
  5. Використання уявлень та збережених процедур: Подання та процедури можуть знизити кількість мережного трафіку та покращити швидкість виконання.
  6. Аналіз та профільування запитів: Використання інструментів для аналізу та профілювання допомагає виявити недооптимізовані запити та вдосконалити.

Висновок

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

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

Для отримання додаткового матеріалу потрібно перейти за посиланням
Google Drive

або відкрити в новій вкладці Google Презентація

Давайте пройдемо тести

Тестування продуктивності баз даних

З'єднання таблиць для складних запитів

Використання JOIN для об'єднання даних із різних таблиць
Застосування OUTER JOIN для роботи із відсутніми значеннями.

Вправи

Вибрати всі замовлення клієнта (ім'я, прізвище), включаючи деталі продуктів (назва, ціна), які він будь-коли замовляв.

SELECT Clientss.client_name, Clientss.client_surname, Productss.product_name, Productss.product_price FROM Clientss INNER JOIN Orderss ON Clientss.client_id = Orderss.client_id INNER JOIN OrderDetails ON Orderss.order_id = OrderDetails.order_id INNER JOIN Productss ON OrderDetails.product_id = Productss.product_id;

Отримати список всіх клієнтів та кількість продуктів, які вони замовили.

SELECT Clientss.client_id, Clientss.client_name, Clientss.client_surname, COUNT(OrderDetails.product_id) AS total_products FROM Clientss LEFT JOIN Orderss ON Clientss.client_id = Orderss.client_id LEFT JOIN OrderDetails ON Orderss.order_id = OrderDetails.order_id GROUP BY Clientss.client_id, Clientss.client_name, Clientss.client_surname;

Вправи за допомогою аліасів

Вибрати всі замовлення клієнта (ім'я, прізвище), включаючи деталі продуктів (назва, ціна), які він будь-коли замовляв.

SELECT c.client_name, c.client_surname, p.product_name, p.product_price FROM Clientss AS c INNER JOIN Orderss AS o ON c.client_id = o.client_id INNER JOIN OrderDetails AS od ON o.order_id = od.order_id INNER JOIN Productss AS p ON od.product_id = p.product_id;

Отримати список всіх клієнтів та кількість продуктів, які вони замовили.

SELECT c.client_id, c.client_name, c.client_surname, COUNT(od.product_id) AS total_products FROM Clientss AS c LEFT JOIN Orderss AS o ON c.client_id = o.client_id LEFT JOIN OrderDetails AS od ON o.order_id = od.order_id GROUP BY c.client_id, c.client_name, c.client_surname;

Знайти всі продукти та їх категорії, які були замовлені клієнтом із певним телефонним номером

SELECT c.client_name, c.client_surname, p.product_name,p.product_price FROM Clients AS c INNER JOIN Orderss AS o ON c.client_id = o.client_id INNER JOIN OrderDetails AS od ON o.order_id = od.order_id INNER JOIN Productss AS p ON od.product_id = p.product_id WHERE c.client_phone = '0675653333';

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

SELECT Productss.product_name, Productss.product_price, COUNT(OrderDetails.order_id) AS total_orders
FROM Productss
LEFT JOIN OrderDetails ON Productss.product_id = OrderDetails.product_id
GROUP BY Productss.product_name, Productss.product_price;

Знайти середню ціну продуктів у кожній категорії.

SELECT Products.product_category, AVG(Products.product_price) AS avg_price
FROM Products
GROUP BY Products.product_category;

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

SELECT p.product_name, p.product_price, COUNT(od.order_id) AS total_orders
FROM Productss AS p
LEFT JOIN OrderDetails AS od ON p.product_id = od.product_id
GROUP BY p.product_name, p.product_price;

Знайти середню ціну продуктів у кожній категорії.

SELECT p.product_category, AVG(p.product_price) AS avg_price
FROM Products AS p
GROUP BY p.product_category;

Вправи

LEFT JOIN (ліве об'єднання):

Вибрати всі клієнти та продукти, придбані ними (якщо вони купували):

SELECT Customers.name, Customers.lastname, Customers.phone, Customers.email,Orders_Products.product_name, Orders_Products.category,Orders_Products.currency,Orders_Products.price FROM Customers LEFT JOIN Orders_Products ON Customers.id = Orders_Products.customer_id;

SELECT c.name AS customer_name, c.lastname AS customer_lastname, c.phone AS customer_phone, c.email AS customer_email, op.product_name, op.category, op.currency, op.price FROM Customers AS c LEFT JOIN Orders_Products AS op ON c.id = op.customer_id;

RIGHT JOIN (праве об'єднання):

SELECT Customers.name, Customers.lastname, Customers.phone, Customers.email,Orders_Products.product_name, Orders_Products.category,Orders_Products.currency,Orders_Products.price FROM Customers RIGHT JOIN Orders_Products ON Customers.id = Orders_Products.customer_id;

SELECT c.name AS customer_name, c.lastname AS customer_lastname, c.phone AS customer_phone, c.email AS customer_email, op.product_name, op.category, op.currency, op.price FROM Customers AS c RIGHT JOIN Orders_Products AS op ON c.id = op.customer_id;

FULL JOIN (повне об'єднання):

SELECT Customers.name, Customers.lastname, Customers.phone, Customers.email,Orders_Products.product_name, Orders_Products.category,Orders_Products.currency,Orders_Products.price FROM Customers FULL JOIN Orders_Products ON Customers.id = Orders_Products.customer_id;

SELECT c.name AS customer_name, c.lastname AS customer_lastname, c.phone AS customer_phone, c.email AS customer_email, op.product_name, op.category, op.currency, op.price FROM Customers AS c FULL JOIN Orders_Products AS op ON c.id = op.customer_id;

Завдання

  1. Загальна вартість замовлень для кожного клієнта: Розрахуйте загальну вартість всіх замовлень кожного клієнта.
  2. Середня вартість замовлення: Розрахуйте середню вартість замовлення всім клієнтам.
  3. Клієнти без замовлень: Знайдіть клієнтів, які не мають замовлень.
  4. Найдорожче замовлення: Знайдіть найдорожче замовлення та його деталі.
  5. Список клієнтів та їх замовлень: Отримайте список клієнтів разом із інформацією про замовлення (якщо вони є). Увімкніть ім'я, прізвище, номер телефону, електронну пошту клієнта та інформацію про кожне замовлення (назва продукту, категорія, валюта, ціна).
Рубрика для найстійкіших)

ВИКЛИК!

Таблиці Сustomers та Orders_Products

Список клієнтів із найдорожчим замовленням

Отримайте список клієнтів з деталями їх найдорожчого замовлення.

Список клієнтів, які зробили замовлення у всіх категоріях:

Отримайте список клієнтів, які зробили замовлення у кожній категорії.

Список клієнтів, які зробили більше одного замовлення у категорії 'Audio':

Отримайте список клієнтів, які зробили більше одного замовлення у категорії 'Audio'.

Список клієнтів, чиє останнє замовлення було дорожче 1000:

Отримайте список клієнтів, у яких останнє замовлення було дорожче за 1000.

Повноцінний місячний практикум

Basic

Тестування баз даних

Переваги

  • Основи баз даних Розуміння термінів, таких як таблиця, рядок, стовпець, ключ, індекс, SQL і багато інших.
  • Мова запитів SQL Основи мови SQL для виконання запитів, вставки, оновлення і видалення даних.
  • Типи баз даних Реляційні, NoSQL та інші типи баз даних і їх особливості.
  • Навчання на реальних проєктах Виконання практичних завдань та проектів для набуття практичних навичок у тестуванні баз даних.
  • Індивідуальний підхід
  • Сертифікат та визнання
Термін навчання -> 1 місяць
Вечірнє навчання -> 2 рази на тиждень
Формат навчання -> наживо в Skype
Детальніше

Підпишіться на наш Telegram-канал

та отримайте

0 %
знижки на участь у практикумі