SQL · SELECT … WHERE · База данных компаний
SELECT WHERE по таблице компаний
Таблица «companies» — 300 строк детерминированно сгенерированных данных. Показанный ниже SELECT … WHERE реально выполнен движком FileDB: 20 строк в результате, 5.3 мс на выполнение, полным сканом таблицы.
Структура таблицы companies
Поля и типы данных
| Поле | Тип | Nullable | Индекс |
|---|---|---|---|
id | int | нет | да (PK) |
name | varchar(80) | нет | — |
city | varchar(80) | нет | — |
industry | varchar(80) | нет | — |
founded_year | int (1991–2023) | нет | — |
employees_count | int (5–5000) | нет | — |
revenue_mln | real | нет | — |
website | varchar(80) | нет | — |
phone | varchar(80) | нет | — |
email | varchar(80) | нет | — |
is_active | boolean | нет | — |
legal_form | varchar(80) | нет | — |
tax_id | varchar(80) | нет | — |
rating | real | нет | — |
registered_date | date | нет | — |
Пример строк (8 из 300)
| id | name | city | industry | founded_year | employees_count | revenue_mln | website | phone | is_active | legal_form | tax_id | rating | registered_date | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 261 | Техно-Инвест | Санкт-Петербург | Логистика | 1992 | 268 | 4752.43 | bestplus.org | +7 (962) 276-79-30 | user7631@example.com | true | ПАО | 5123007 | 3.92 | 2025-03-17 |
| 262 | Столица-Пром | Москва | Производство | 2004 | 4392 | 856.03 | proinvest.ru | +7 (978) 662-43-37 | user3275@example.com | false | НКО | 6234025 | 3.19 | 2025-02-25 |
| 263 | Актив-Тех | Краснодар | Торговля | 2000 | 48 | 5083.48 | techgroup.net | +7 (952) 413-84-32 | user3833@example.com | false | АО | 6012002 | 3.32 | 2025-04-08 |
| 264 | РусИнвест | Ростов-на-Дону | Реклама | 1997 | 3153 | 2419.25 | uniservis.com | +7 (987) 828-84-91 | user8412@example.com | true | НКО | 7078025 | 2.84 | 2025-09-06 |
| 265 | ОсноваТех | Казань | Строительство | 2022 | 3296 | 8392.20 | novahub.com | +7 (900) 121-57-87 | user2559@example.com | false | АО | 5078020 | 3.64 | 2025-06-25 |
| 266 | Зенит-Маркет | Саратов | Финансы | 1991 | 527 | 1319.34 | smartline.ru | +7 (920) 450-97-32 | user6898@example.com | false | ЗАО | 2456004 | 1.08 | 2025-09-29 |
| 267 | Рус-Групп | Нижний Новгород | Финансы | 1997 | 169 | 2973.84 | techcorp.org | +7 (950) 479-70-23 | user5837@example.com | true | ИП | 9056030 | 1.07 | 2025-02-20 |
| 268 | СинтезСтрой | Омск | IT | 1997 | 1244 | 4551.73 | proinvest.org | +7 (981) 743-61-05 | user9622@example.com | true | НКО | 4567025 | 2.69 | 2026-03-15 |
SQL-запрос: SELECT … WHERE
Задача: отобрать строки таблицы «companies» по условию на поле industry — базовый паттерн любой выборки.
Результат выполнения
В результате 20 строк из 300 (около 6%). Если бы условие возвращало почти всю таблицу, фильтр был бы бесполезен; ноль строк — повод проверить значения в данных, а не синтаксис.
Первые строки результата
| id | name | city | industry | founded_year |
|---|---|---|---|---|
| 116 | СтандартТрейд | Тольятти | IT | 2013 |
| 124 | ЛидерЛогистик | Ижевск | IT | 1999 |
| 150 | Вектор-Маркет | Уфа | IT | 2005 |
| 155 | Орбита-Пром | Воронеж | IT | 2002 |
| 164 | ЮнионИнвест | Нижний Новгород | IT | 2016 |
Показаны 5 из 20 строк результата.
Как читать этот запрос
WHERE — это фильтр по строкам: движок оставляет только те записи companies, для которых условие истинно. Читайте запрос справа налево: сначала «откуда» (FROM), потом «какие строки» (WHERE), и только потом «какие колонки» (SELECT).CREATE INDEX.SELECT … WHERE в разных СУБД
| СУБД | Синтаксис | Отличие |
|---|---|---|
| PostgreSQL | WHERE поле >= 4 | идентичен, строгая типизация дат |
| MySQL | WHERE поле >= 4 | сравнение дат-строк допускает неявное приведение типов |
| SQLite | WHERE поле >= 4 | дата хранится как TEXT — важен формат ISO 8601 |
| FileDB | WHERE поле >= 4 | синтаксис ANSI SQL, B-Tree индекс используется автоматически |
Скачать структуру и данные
Файлы собираются из текущего датасета (seed v1): структура таблицы, 300 строк данных и этот запрос.
Похожие запросы
Вопросы и ответы
Почему запрос выполняется за 5.3 мс на 300 строках, а не мгновенно?
«Мгновенно» физически не бывает: движку нужно время на поиск по B-Tree, чтение строк из кэша или с диска и сборку результата. Единицы миллисекунд на такой таблице — это и есть быстро.
Что вернёт условие при NULL в поле?
Сравнение с NULL не истинно и не ложно — такие строки не попадают в результат ни при условии, ни при его отрицании. Для них есть отдельные IS NULL / IS NOT NULL.
Чем WHERE отличается от HAVING?
WHERE фильтрует строки до группировки и агрегации, HAVING — уже посчитанные группы. В этом запросе группировки нет, поэтому используется только WHERE.