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

Что такое SQL-выражение?
Давайте начнем с азов. SQL-выражение похоже на формулу или расчет, который вы можете использовать в своих SQL-запросах. Это комбинация одного или нескольких значений, операторов и SQL-функций, которая evalюируется в значение. Представьте это как секретный соус, который добавляет flavor вашим запросам к базе данных!
например, давайте представим, что у вас есть таблица продуктов, и вы хотите применить скидку 10% ко всем ценам. Вы могли бы использовать выражение, такое как:
SELECT product_name, price, price * 0.9 AS discounted_price
FROM products;
В этом запросе, price * 0.9是我们的 SQL-выражение. Оно принимает цену и умножает ее на 0.9 (что то же самое, что вычесть 10%).
SQL Логические выражения
Теперь перейдем к логическим выражениям. Это как да/нет вопросы в мире SQL. Они всегда заканчиваются TRUE, FALSE или NULL (что означает "неизвестно").
Логические выражения超级 полезны, когда вы хотите отфильтровать свои данные или принимать решения в своих запросах. Вот некоторые из часто используемых операторов в логических выражениях:
| Оператор | Описание |
|---|---|
| = | Равно |
| <> | Не равно |
| > | Больше чем |
| < | Меньше чем |
| >= | Больше или равно |
| <= | Меньше или равно |
| AND | Логическое И |
| OR | Логическое ИЛИ |
| NOT | Логическое НЕ |
Давайте посмотрим, как это работает на примерах:
-- Найти все продукты, costing более $100
SELECT * FROM products WHERE price > 100;
-- Найти все заказы за последние 30 дней
SELECT * FROM orders WHERE order_date >= CURRENT_DATE - INTERVAL '30 days';
-- Найти всех активных клиентов в Нью-Йорке или Калифорнии
SELECT * FROM customers
WHERE (state = 'NY' OR state = 'CA') AND is_active = TRUE;
В каждом из этих примеров, часть после WHERE является логическим выражением. Это как будто вы задаете базе данных да/нет вопрос для каждой строки данных.
SQL Числовые выражения
Следующий пункт, числовые выражения. Это как математические задачи в SQL - они включают числа и арифметические операции.
Вот основные арифметические операторы, которые вы можете использовать:
| Оператор | Описание |
|---|---|
| + | Сложение |
| - | Вычитание |
| * | Умножение |
| / | Деление |
| % | Модуль (остаток) |
Давайте рассмотрим несколько примеров:
-- Рассчитать общую стоимость запасов
SELECT product_name, quantity, price, quantity * price AS total_value
FROM inventory;
-- Рассчитать возраст сотрудников
SELECT first_name, last_name, EXTRACT(YEAR FROM CURRENT_DATE) - EXTRACT(YEAR FROM birth_date) AS age
FROM employees;
-- Рассчитать процент потраченного бюджета
SELECT project_name, budget, spent, (spent / budget) * 100 AS percent_spent
FROM projects;
В этих примерах мы используем числовые выражения для выполнения расчетов на наших данных. Это incredibly полезно для получения новых инсайтов из существующих данных.
SQL Выражения с датами
Last but not least, давайте поговорим о выражениях с датами. Работа с датами в SQL может быть сложной, но она также incredibly мощная. Выражения с датами позволяют вам манипулировать и сравнивать даты в ваших запросах.
Вот некоторые из часто используемых функций с датами:
| Функция | Описание |
|---|---|
| CURRENT_DATE | Возвращает текущую дату |
| CURRENT_TIMESTAMP | Возвращает текущую дату и время |
| DATE_ADD | Добавляет указанный временной интервал к дате |
| DATE_SUB | Вычитает указанный временной интервал из даты |
| DATEDIFF | Рассчитывает разницу между двумя датами |
Давайте посмотрим, как это работает на примерах:
-- Найти заказы, размещенные сегодня
SELECT * FROM orders WHERE order_date = CURRENT_DATE;
-- Найти клиентов, которые не размещали заказы в последние 90 дней
SELECT * FROM customers
WHERE customer_id NOT IN (
SELECT DISTINCT customer_id
FROM orders
WHERE order_date >= CURRENT_DATE - INTERVAL '90 days'
);
-- Рассчитать, сколько дней назад был размещен каждый заказ
SELECT order_id, order_date,
DATEDIFF(CURRENT_DATE, order_date) AS days_ago
FROM orders;
Эти выражения с датами позволяют вам выполнять сложные операции с датами, что необходимо для анализа данных, основанных на времени.
И вот мы и arrived! Мы прошли через мир SQL-выражений, от логики до вычислений с числами и manipulations с датами. Помните, что практика makes perfect, поэтому не бойтесь экспериментировать с этими выражениями в своих запросах.
Before we wrap up, here's a little SQL joke for you: Why did the database administrator leave his wife? She had one-to-many relationships! (Ba dum tss!)
Счастливо работайте с запросами, и пусть ваши объединения всегда будут быстрыми, а запросы никогда не timeout!
Credits: Image by storyset
