SQL-выражение – это комбинация одного или более значений, операторов и функций, которая имеет определенный результат. Выражения SQL похожи на формулы, написанные на языке запросов. Также с их помощью можно запрашивать из БД конкретные наборы данных.
Выражения SQL можно разделить на следующие категории:
- Логические
- Числовые
- Даты
Давайте попробуем разобраться в типах выражений, рассмотрев пару примеров.
Логические выражения SQL
Логическое выражение SQL извлекает данные на основе условия, которое является частью запроса SQL. При выполнении запроса такое выражение должно выдавать только одно значение. Его синтаксис выглядит так:
SELECT column FROM table_name WHERE SINGLE_VALUE_MATCHING_EXPRESSION;
Чтобы понять, как работают логические выражения, давайте взглянем на следующую таблицу.
EmpId | EmpName | EmpAge | EmpSalary |
1 | John | 32 | 2000 |
2 | Smith | 25 | 2500 |
3 | Henry | 29 | 3000 |
Отправим такой тестовый запрос:
SELECT EmpName FROM Employee WHERE EmpId = 1;
Приведенный выше запрос выдаст единственное значение, в данном случае это John. Чтобы всегда получать только один результат, логические выражения SQL следует использовать с первичными ключами. Это необходимо делать в случае применения вложенных запросов select.
select posts.title, posts.author_id from posts, authors where posts.author_id = authors.id and posts.author_id = (select id from authors where name = 'Pankaj');
Приведенный выше запрос вернет все имена и идентификаторы сообщений, имя автора которых — Pankaj. В подобной ситуации вложенный SQL-запрос всегда должен возвращать только одну строку. Если подзапрос возвращает более 1 строки, вы получите сообщение об ошибке.
Числовые выражения SQL
Числовое выражение SQL используется для выполнения математических операций в запросе SQL. Его синтаксис выглядит так:
SELECT NUMERICAL_EXPRESSION as OPERATION_NAME FROM table_name
NUMERICAL_EXPRESSION — это математическая формула функции, которая будет использоваться в SQL-запросе. Давайте попробуем разобрать следующий пример:
SELECT count(*) FROM Employee; -- 3
Приведенный выше запрос вернет 3, потому что функция COUNT(*) предоставит общее количество строк на основе условия в операторе WHERE. Например, выражение
select count(*) from employee where empsalary > 2400;
вернет 2. Существуют и другие функции — sum(), avg(), min(), max() и т. д. Они используются для математических операций. Давайте рассмотрим еще пару фрагментов кода, которые используют числовые выражения SQL.
SELECT sum(EmpSalary) as "Salary" FROM Employee; -- 7500 select min(EmpSalary) from Employee; -- 2000 select max(EmpSalary) from Employee; -- 3000 select sum(EmpSalary) from Employee; -- 7500 select avg(EmpSalary) from Employee; -- 2500.0000
SQL-выражения даты
Выражения даты выдают в качестве результата временное значение. Давайте рассмотрим следующий пример:
SELECT CURRENT_TIMESTAMP; -- 2018-01-20 10:32:37 -- For MYQSL SELECT now(); -- 2018-01-20 10:32:57 -- For SQL Server SELECT GetDate(); -- For Oracle DB select sysdate from Dual; -- 20-JAN-18
Вышеупомянутые запросы выведут текущее время системы. Обратите внимание: у каждого вендора реляционных баз данных есть определенные методы для извлечения текущих значений даты и времени, поэтому есть небольшой шанс, что одна и та же функция может не сработать в двух разных БД.
Подводим итоги
В целом это все, что следует знать новичкам о работе с выражениями SQL. Вы наверняка часто будете использовать их в своей работе с SQL.
Читайте также:
- Как работают операторы SQL LIKE и NOT LIKE
- Документация Oracle