SQL - WHERE Clause

Добро пожаловать, будущие маги баз данных! Сегодня мы погружаемся в один из самых мощных инструментов вашего набора SQL: оператор WHERE. Как ваш доброжелательный сосед по компьютерным наукам, я здесь, чтобы помочь вам в этом захватывающем путешествии. Так что возьмите свои виртуальные палочки (клавиатуры), и давайте наведем немного магии SQL!

SQL - Where Clause

The SQL Where Clause

Представьте, что вы находитесь в огромной библиотеке с миллионами книг. Вы ищете конкретную книгу о драконах. Вы бы прошли через каждую книгу? Конечно нет! Вы бы попросили библиотекаря помочь вам найти книги о драконах. В SQL оператор WHERE ваш верный библиотекарь.

Оператор WHERE позволяет нам фильтровать данные на основе конкретных условий. Это как сказать базе данных: "Эй, я хочу видеть только эту информацию, которая соответствует этим критериям."

Вот базовая синтаксис:

SELECT column1, column2, ...
FROM table_name
WHERE condition;

Не волнуйтесь, если это выглядит немного пугающе. Мы разберем это по частям, и вскоре вы будете фильтровать данные как профессионал!

WHERE Clause with SELECT Statement

Давайте начнем с простого примера. Представьте, что у нас есть таблица students с колонками id, name, и age. Мы хотим найти всех студентов, которые هستند 18 лет.

SELECT *
FROM students
WHERE age = 18;

В этом запросе:

  • SELECT * означает, что мы хотим видеть все колонки.
  • FROM students specifies таблицу, которую мы запрашиваем.
  • WHERE age = 18是我们的条件. Это как сказать: "Покажи только те строки, где возраст точно 18."

Давайте представим, что мы хотим видеть только имена этих 18-летних студентов:

SELECT name
FROM students
WHERE age = 18;

См. как мы changed * на name? Теперь мы увидим только имена, а не все колонки.

WHERE Clause with UPDATE Statement

Оператор WHERE не только для SELECT запросов. Он также super полезен при обновлении данных. Давайте представим, что мы хотим обновить возраст всех студентов по имени "Alice" до 19 лет.

UPDATE students
SET age = 19
WHERE name = 'Alice';

Этот запрос изменит возраст до 19, но только для студентов по имени Alice. Без оператора WHERE мы бы случайно изменили возраст всем!

WHERE Clause with IN Operator

Что, если мы хотим найти студентов, которые هستند 18, 19 или 20 лет? Мы могли бы использовать несколько условий OR, но есть более elegant способ: оператор IN.

SELECT *
FROM students
WHERE age IN (18, 19, 20);

Этот запрос вернет всех студентов, чей возраст 18, 19 или 20. Это как сказать: "Есть ли возраст в этом списке значений? Если да, включите его!"

WHERE Clause with NOT IN Operator

Теперь, что, если мы хотим найти всех студентов, которые не هستند 18, 19 или 20 лет? Легко! Мы просто добавляем NOT перед IN:

SELECT *
FROM students
WHERE age NOT IN (18, 19, 20);

Этот запрос даст нам всех студентов, чей возраст не 18, 19 или 20.

WHERE Clause with LIKE Operator

Иногда нам нужно искать Patterns в текстовых данных. Тогда на помощь приходит оператор LIKE. Давайте представим, что мы хотим найти всех студентов, чьи имена начинаются с 'A':

SELECT *
FROM students
WHERE name LIKE 'A%';

В этом запросе, '%' - это wildcard, который matches любуюsequence из символов. Так 'A%' означает "начинается с A, за которым следует что-то еще."

Мы также можем искать имена, которые заканчиваются на 'n':

SELECT *
FROM students
WHERE name LIKE '%n';

Или имена, в которых есть 'li' где-то:

SELECT *
FROM students
WHERE name LIKE '%li%';

WHERE Clause with AND, OR Operators

Часто нам нужно combinate несколько условий. Тогда на помощь приходят AND и OR.

Давайте найдем всех студентов, которые هستند 18 лет и чьи имена начинаются с 'A':

SELECT *
FROM students
WHERE age = 18 AND name LIKE 'A%';

Или, может быть, мы хотим студентов, которые هستند 18 лет или чьи имена начинаются с 'A':

SELECT *
FROM students
WHERE age = 18 OR name LIKE 'A%';

Вы можете combinate эти операторы, чтобы создать сложные условия:

SELECT *
FROM students
WHERE (age = 18 OR age = 19) AND (name LIKE 'A%' OR name LIKE 'B%');

Этот запрос найдет студентов, которые هستند или 18 или 19 лет и чьи имена начинаются с 'A' или 'B'.

Вот таблица, резюмирующая операторы, которые мы изучили:

Оператор Описание Пример
= Равен WHERE age = 18
<> или != Не равен WHERE age <> 18
> Больше WHERE age > 18
< Меньше WHERE age < 18
>= Больше или равен WHERE age >= 18
<= Меньше или равен WHERE age <= 18
IN Подходит для любого значения в списке WHERE age IN (18, 19, 20)
NOT IN Не подходит для любого значения в списке WHERE age NOT IN (18, 19, 20)
LIKE Подгонка шаблона WHERE name LIKE 'A%'
AND Оба условия должны быть true WHERE age = 18 AND name LIKE 'A%'
OR Либо условие может быть true WHERE age = 18 OR name LIKE 'A%'

И вот и все,朋友们! Вы только что узнали все о операторе WHERE. Помните, что практика делает мастера. Попробуйте написать свои запросы, поэкспериментируйте с разными условиями, и вскоре вы будете фильтровать данные как опытный администратор баз данных.

Счастливо работайте с запросами, и пусть ваши операторы WHERE всегда находят то, что вы ищете!

Credits: Image by storyset