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