Настройка базы данных и простого CTE
На этом первом шаге вы настроите среду базы данных и определите простое Общее Табличное Выражение (CTE). CTE определяются с использованием предложения WITH и действуют как временное представление (view), которое существует только в течение одного запроса. Это делает сложные запросы более читаемыми и управляемыми.
Сначала откройте терминал на вашем рабочем столе.
Подключитесь к серверу MySQL как пользователь root. В этой лабораторной среде вы можете использовать sudo для подключения без пароля.
sudo mysql -u root
После подключения вы увидите приглашение MySQL (mysql>). Теперь создайте базу данных с именем labex_db и переключитесь на нее.
CREATE DATABASE IF NOT EXISTS labex_db;
USE labex_db;
Далее создайте таблицу employees и вставьте некоторые примеры данных. Эта таблица будет хранить основную информацию о сотрудниках, включая их отдел и зарплату.
CREATE TABLE IF NOT EXISTS employees (
employee_id INT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
department VARCHAR(50),
salary DECIMAL(10, 2)
);
INSERT INTO employees (employee_id, first_name, last_name, department, salary) VALUES
(1, 'John', 'Doe', 'Sales', 60000.00),
(2, 'Jane', 'Smith', 'Marketing', 75000.00),
(3, 'Robert', 'Jones', 'Sales', 55000.00),
(4, 'Emily', 'Brown', 'IT', 90000.00),
(5, 'Michael', 'Davis', 'Marketing', 70000.00);
Теперь, когда таблица готова, давайте определим простое CTE для выбора только сотрудников из отдела 'Sales'.
WITH SalesEmployees AS (
SELECT employee_id, first_name, last_name, salary
FROM employees
WHERE department = 'Sales'
)
SELECT * FROM SalesEmployees;
Разберем этот запрос:
WITH SalesEmployees AS (...): Это определяет CTE с именем SalesEmployees.
- Запрос внутри скобок выбирает сотрудников из таблицы
employees, где department равен 'Sales'.
SELECT * FROM SalesEmployees;: Это основной запрос, который извлекает все данные из нашего временного набора результатов SalesEmployees.
Вы должны увидеть следующий вывод, перечисляющий только сотрудников из отдела продаж:
+-------------+------------+-----------+----------+
| employee_id | first_name | last_name | salary |
+-------------+------------+-----------+----------+
| 1 | John | Doe | 60000.00 |
| 3 | Robert | Jones | 55000.00 |
+-------------+------------+-----------+----------+
2 rows in set (0.00 sec)
Это подтверждает, что ваше первое CTE работает правильно. Пожалуйста, оставайтесь в оболочке MySQL для следующего шага.