Ответ
Основной оператор для фильтрации строк в SQL — WHERE. Он позволяет задавать условия, которым должны соответствовать возвращаемые записи.
Базовый синтаксис:
SELECT column1, column2
FROM table_name
WHERE condition;
Основные типы условий и операторов:
1. Операторы сравнения:
SELECT * FROM Products WHERE Price > 100;
SELECT * FROM Employees WHERE Department = 'Sales';
SELECT * FROM Orders WHERE Status <> 'Cancelled';
2. Логические операторы (AND, OR, NOT):
SELECT * FROM Customers
WHERE Country = 'Germany' AND (City = 'Berlin' OR City = 'Munich');
3. Оператор LIKE для поиска по шаблону:
-- Найти имена, начинающиеся на 'A'
SELECT * FROM Users WHERE Name LIKE 'A%';
-- Найти email-адреса, содержащие '@gmail.com'
SELECT * FROM Users WHERE Email LIKE '%@gmail.com';
4. Операторы IN и BETWEEN:
-- Выбор из списка значений
SELECT * FROM Products WHERE CategoryID IN (1, 5, 7);
-- Выбор диапазона
SELECT * FROM Orders
WHERE OrderDate BETWEEN '2024-01-01' AND '2024-01-31';
5. Проверка на NULL:
SELECT * FROM Customers WHERE PhoneNumber IS NULL;
Критически важное замечание по безопасности: При использовании SQL из кода приложения (например, C#) никогда не встраивайте значения напрямую в строку запроса (конкатенация). Всегда используйте параметризованные запросы для предотвращения SQL-инъекций.
Пример безопасного запроса в C#:
string sql = "SELECT * FROM Users WHERE Username = @username AND IsActive = @isActive";
using (var command = new SqlCommand(sql, connection))
{
command.Parameters.AddWithValue("@username", userInputName);
command.Parameters.AddWithValue("@isActive", true);
// ... выполнение команды
} Ответ 18+ 🔞
Смотри, ну вот это WHERE — это вообще основа основ, без него в SQL нихуя не сделаешь. Это как фильтр в жизни: ты же не будешь жрать всё подряд из холодильника, а выберешь, что тебе надо, правда? Вот и тут так же — отсекаешь всё лишнее и берёшь только нужные строки.
Самая простая схема, как это работает:
SELECT колонка1, колонка2
FROM имя_таблицы
WHERE условие_на_отбор;
А теперь по типам условий, тут всё как в жизни:
1. Просто сравнить что-то с чем-то:
-- Все товары дороже сотни
SELECT * FROM Products WHERE Price > 100;
-- Все сотрудники из отдела продаж
SELECT * FROM Employees WHERE Department = 'Sales';
-- Все заказы, которые НЕ отменены
SELECT * FROM Orders WHERE Status <> 'Cancelled';
2. Собираем условия в кучу (AND, OR, NOT): Тут главное — скобки не забывать, а то получится ерунда. Как будто говоришь: "хочу пиво И (чипсы ИЛИ сухарики)".
SELECT * FROM Customers
WHERE Country = 'Germany' AND (City = 'Berlin' OR City = 'Munich');
3. Поиск по маске с LIKE:
Когда точно не помнишь, но знаешь часть. Знак % — это любое количество любых символов.
-- Найди всех, чьё имя начинается на 'А' (Антон, Александр и т.д.)
SELECT * FROM Users WHERE Name LIKE 'A%';
-- Найди все почты на gmail
SELECT * FROM Users WHERE Email LIKE '%@gmail.com';
4. Выбор из готового списка (IN) или из промежутка (BETWEEN):
-- Товары только из категорий 1, 5 и 7
SELECT * FROM Products WHERE CategoryID IN (1, 5, 7);
-- Заказы за январь 2024
SELECT * FROM Orders
WHERE OrderDate BETWEEN '2024-01-01' AND '2024-01-31';
5. Работа с пустотой (NULL): NULL — это не ноль и не пустая строка, это просто "значение не определено". Поэтому проверяем специальными операторами.
-- Найди всех, у кого не указан телефон
SELECT * FROM Customers WHERE PhoneNumber IS NULL;
А теперь, блядь, самое важное — про безопасность!
Если ты пишешь запрос в коде (например, на C#), НИКОГДА, СУКА, НИКОГДА не лепи строку запроса через сложение строк! Типа "SELECT ... WHERE User = '" + userInput + "'". Это прямой путь на SQL-инъекцию, тебе там любой школьник-хакер весь сервак положит. Используй только параметризованные запросы!
Вот как это должно выглядеть по-человечески:
string sql = "SELECT * FROM Users WHERE Username = @username AND IsActive = @isActive";
using (var command = new SqlCommand(sql, connection))
{
// Подставляем значения безопасно
command.Parameters.AddWithValue("@username", userInputName);
command.Parameters.AddWithValue("@isActive", true);
// ... и выполняем команду
}
Вот и вся магия. Главное — фильтруй с умом и не открывай дыры в безопасности, а то будет тебе не WHERE, а WHY-the-fuck-did-you-do-this.