Настройка среды SQL

Шаг 1: Установите MySQL Server

Скачайте MySQL Server с официального сайта

Посетите сайт MySQL Downloads

Запустите программу установки

Выберите тип установки (Typical, Complete или Custom)

Следуйте инструкциям по установке для завершения установки

Шаг 2: Установите MySQL Workbench

Скачайте MySQL Workbench

Посетите сайт MySQL Workbench Downloads

Запустите программу установки

Следуйте инструкциям по установке для завершения установки

Шаг 3: Настройка сервера MySQL

Откройте MySQL Workbench

Подключитесь к серверу MySQL

Нажмите на значок + для создания нового соединения

Введите имя соединения, имя хоста (localhost), порт (по умолчанию 3306), имя пользователя (root) и пароль

Проверьте соединение

Нажмите Test Connection для проверки соединения

Шаг 4: Настройка начальной базы данных и таблицы

1. Создайте базу данных

sql
CREATE DATABASE sample_db;

2. Используйте базу данных

sql
USE sample_db;

3. Создайте таблицу

sql
CREATE TABLE employees ( id INT AUTO_INCREMENT PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50), department VARCHAR(50), salary DECIMAL(10, 2));

4. Вставьте выборочные данные

sql
INSERT INTO employees (first_name, last_name, department, salary) VALUES('John', 'Doe', 'Engineering', 60000.00),('Jane', 'Smith', 'Sales', 55000.00),('Sam', 'Brown', 'HR', 50000.00);

ОНЛАЙН-ПРАКТИКУМ
ЗАПУСК нейросети DEEPSEEK R1 ЛОКАЛЬНО НА СВОЕМ КОМПЬЮТЕРЕ
ЧТО БУДЕТ НА ОБУЧЕНИИ?
  • ПОКАЖЕМ, КАК РАЗВЕРНУТЬ МОДЕЛЬ нейросети DEEPSEEK R1 ПРЯМО НА СВОЁМ КОМПЬЮТЕРЕ
  • Где и как применять? Потестируем модель после установки на разных задачах
  • Как дообучить модель под себя?

Верификация

Выполните базовый запрос

sql
SELECT * FROM employees;

Заключение

Эта настройка позволит вам продолжить работу над проектом, фильтруя таблицы данных с помощью SQL. Убедитесь, что MySQL Server и Workbench работают правильно, и проверьте начальную настройку данных с помощью предоставленных команд SQL.

Простой пример SELECT-запроса с использованием WHERE

sql
-- Select specific columns from a table
SELECT first_name, last_name, email
FROM customers;

-- Select all columns from a table
SELECT *
FROM orders;

-- Filter rows based on a condition
SELECT order_id, order_date, customer_id
FROM orders
WHERE order_date = '2023-10-01';

-- Filter rows with multiple conditions using AND
SELECT product_id, product_name, price
FROM products
WHERE price > 100 AND category = 'Electronics';

-- Filter rows with multiple conditions using OR
SELECT employee_id, first_name, department
FROM employees
WHERE department = 'Sales' OR department = 'Marketing';

-- Using a NOT condition
SELECT customer_id, first_name, last_name
FROM customers
WHERE NOT country = 'USA';

-- Using LIKE for pattern matching
SELECT product_id, product_name
FROM products
WHERE product_name LIKE 'A%'; -- Products that start with 'A'

-- Using IN for filtering specific values
SELECT customer_id, first_name, last_name
FROM customers
WHERE country IN ('USA', 'Canada', 'UK');

-- Using BETWEEN for range filtering
SELECT order_id, order_date, total_amount
FROM orders
WHERE total_amount BETWEEN 500 AND 1000;

-- Combining multiple clauses
SELECT employee_id, first_name, last_name, department
FROM employees
WHERE department = 'Engineering' AND hire_date BETWEEN '2020-01-01' AND '2023-10-01';

Каждый SQL-запрос должен помочь вам отработать навыки эффективного извлечения и фильтрации данных из таблиц базы данных. Вы можете запустить эти запросы в своей среде SQL.

sql
-- Filtering records from a 'customers' table

-- Assuming we have a 'customers' table structured as follows:
-- customers (customer_id INT, name VARCHAR, age INT, country VARCHAR, active BOOLEAN)

-- Filtering customers who are active AND from the USA
SELECT *
FROM customers
WHERE active = true
 AND country = 'USA';

-- Filtering customers who are either from the USA OR older than 30
SELECT *
FROM customers
WHERE country = 'USA'
 OR age > 30;

-- Filtering customers who are active AND (from the USA OR older than 30)
SELECT *
FROM customers
WHERE active = true
 AND (country = 'USA' OR age > 30);

-- Filtering customers who are not active OR are younger than 25
SELECT *
FROM customers
WHERE active = false
 OR age < 25;

-- Filtering customers who are not from the USA and are older than 40 or inactive
SELECT *
FROM customers
WHERE country 'USA'
 AND (age > 40 OR active = false);

sql
-- Let's assume we have a table named 'employees' with columns 'id', 'name', and 'email'

-- Pattern Matching with LIKE
-- Fetch employees whose names start with 'A'
SELECT * FROM employees
WHERE name LIKE 'A%';

-- Fetch employees whose email contains 'example'
SELECT * FROM employees
WHERE email LIKE '%example%';

-- Regular Expressions with PostgreSQL
-- Fetch employees whose name contains exactly 5 letters
SELECT * FROM employees
WHERE name ~ '^\w{5}

sql
#39;; -- Fetch employees whose email ends with '.com' SELECT * FROM employees WHERE email ~ '\.com

sql
#39;; -- MySQL REGEXP examples -- Fetch employees whose name starts with 'A' and ends with 'n' SELECT * FROM employees WHERE name REGEXP '^A.*n

sql
#39;; -- Fetch employees whose email contains a digit SELECT * FROM employees WHERE email REGEXP '[0-9]'; 

Примечания

В этих примерах LIKE использует % в качестве подстановочного знака для любой последовательности символов.

Оператор ~ в PostgreSQL используется для регулярных выражений. REGEXP используется для регулярных выражений в MySQL.

Примените эти запросы для фильтрации данных в вашей собственной среде баз данных SQL.

Работа с NULL-значениями в SQL

1. Выборка строк с NULL-значениями

sql
-- Select rows where 'column_name' is NULL
SELECT *
FROM your_table
WHERE column_name IS NULL;

2. Выбор строк без NULL-значений

sql
-- Select rows where 'column_name' is NOT NULL
SELECT *
FROM your_table
WHERE column_name IS NOT NULL;

3. Обработка NULL с помощью COALESCE

sql
-- Replace NULL with a default value
SELECT COALESCE(column_name, 'default_value') AS column_name
FROM your_table;

4. Использование NULLIF

sql
-- Return NULL if two expressions are equal
SELECT NULLIF(column1, column2) AS result
FROM your_table;

5. Условный подсчет с игнорированием NULL

sql
-- Count rows ignoring NULLs in 'column_name'
SELECT COUNT(column_name) AS non_null_count
FROM your_table
WHERE column_name IS NOT NULL;

6. SUM Игнорирование NULL-значений

sql
-- Calculate sum ignoring NULLs
SELECT SUM(column_name) AS total_sum
FROM your_table;

7. Обновление NULL-значений

sql
-- Update NULL values to a specified default value
UPDATE your_table
SET column_name = 'default_value'
WHERE column_name IS NULL;

8. Объединение таблиц с обработкой NULL

sql
-- Left join, ensuring rows with NULL in 'column_b' are maintained
SELECT a.*, b.*
FROM table_a a
LEFT JOIN table_b b ON a.id = b.a_id
WHERE b.column_b IS NULL OR b.column_b IS NOT NULL;

Эти SQL-сниппеты могут быть непосредственно использованы в реальных проектах для эффективной работы со значениями NULL в задачах Data Engineering.

Фильтрация по дате и диапазонные запросы в SQL

Фильтрация по дате

Сценарий: у вас есть таблица transactions со столбцом transaction_date.

sql
-- Filtering transactions on a specific date
SELECT * 
FROM transactions 
WHERE transaction_date = '2023-10-01';

Сценарий: фильтрация транзакций за определенный месяц.

sql
-- Using the MONTH() and YEAR() functions 
SELECT * 
FROM transactions 
WHERE MONTH(transaction_date) = 10 
AND YEAR(transaction_date) = 2023;

Запросы диапазона

Сценарий: вам нужно найти транзакции между двумя определенными датами.

sql
-- Filtering transactions between two dates
SELECT *
FROM transactions
WHERE transaction_date BETWEEN '2023-10-01' AND '2023-10-31';

Сценарий: поиск транзакций до определенной даты или после определенной даты.

sql
-- Filtering transactions before a specific date
SELECT *
FROM transactions
WHERE transaction_date '2023-10-01';

Сценарий: поиск транзакций за последние 7 дней.

sql
-- Using DATE_SUB() to get transactions from the last 7 days
SELECT *
FROM transactions
WHERE transaction_date >= CURDATE() - INTERVAL 7 DAY;

Практическая комбинация запросов

Сценарий: сложный запрос, сочетающий фильтрацию по дате и запросы диапазона, для поиска транзакций за последний месяц на сумму более 1000 долларов.

sql
-- Combining date range and amount filtering
SELECT *
FROM transactions
WHERE transaction_date >= CURDATE() - INTERVAL 1 MONTH
AND amount > 1000;

Эта реализация позволяет выполнять фильтрацию по конкретным датам, диапазонам и условиям, обеспечивая практическое использование выбора данных на основе даты в SQL.

РОССИЙСКИЕ НЕЙРОСЕТИ ДЛЯ ЖИЗНИ И КАРЬЕРЫ В 2025
Присоединяйся к онлайн-вебинару.
В прямом эфире разберем и потестируем лучшие на сегодняшний день отечественные ИИ!
Вы узнаете о том:
  • Выполним базовые задачи на российских нейросетях и посмотрим на результаты!
  • Файл-инструкцию «Как сделать нейро-фотосессию из своего фото бесплатно, без иностранных карт и прочих сложностей»
  • Покажем 10+ способов улучшить свою жизнь с ИИ каждому — от ребенка и пенсионера до управленца и предпринимателя
Участвовать бесплатно
ОБЗОРНЫЙ ПРАКТИКУМ ПО НАШУМЕВШИМ НЕЙРОСЕТЯМ
Нейросети DEEPSEEK И QWEN
За 2 часа сделаем полный обзор новых мощных ИИ-моделей, которые бросают вызов нейросети ChatGPT
Вы узнаете:
  • Возможность получить Доступ в Нейроклуб на целый месяц
  • Как ИИ ускоряет работу и приносит деньги
  • За 2 часа вы получите четкий план, как начать работать с ИИ прямо сейчас!
Участвовать бесплатно