AND или OR расширяет опцию, созданную с помощью WHERE. Или ограничьте его, указав дополнительные значения. Используйте ключевое слово BETWEEN, чтобы указать диапазон значений для выбора.
SQL запросы быстро. Часть 1
Язык SQL прочно вошел в жизнь бизнес-аналитиков и заказчиков благодаря своей простоте, легкости и распространенности. Исходя из собственного опыта, я могу сказать, что SQL чаще всего используется для создания извлечений, сопоставления (и создания отчетов на основе этих сопоставлений) и управления базой данных. А поскольку повседневная работа аналитика неизбежно связана с выгрузкой данных и составлением карт, умение писать SQL-запросы может стать фактором, который либо даст кандидату преимущество, либо откажет ему. Плохая новость заключается в том, что не каждый может рассчитывать на успех, будучи студентом. Хорошей новостью является то, что изучение SQL совсем не сложно, оно быстрое, а написание запросов простое и понятное. Это особенно актуально для тех, кто раньше работал с более сложными языками.
Я разделил изучение SQL-запросов на три части. Эта часть охватывает базовый синтаксис, который используется 80-90% времени. Следующие две части посвящены подзапросам, соединениям и специальным операторам. Цель этих руководств — дать вам возможность быстро и практически освоить синтаксис SQL и добавить его в свой арсенал навыков.
Практика
Введение в синтаксис дается на примере открытой базы данных, специально разработанной для практики SQL. Чтобы сделать обучение максимально эффективным, пожалуйста, откройте ссылку ниже в новой вкладке и перейдите непосредственно к примерам; так вы сможете закрепить материал и отработать синтаксис. Нажмите здесь
Щелкните по ссылке, чтобы увидеть сам редактор запросов и вывод данных в средней части экрана, а также список таблиц базы данных справа.
Структура sql-запросов
Общая структура запроса выглядит следующим образом:
SELECT ('Колонки или * для выбора всех колонок; необязательно') FROM ('Таблица; необязательно') WHERE ('Условие/фильтр, например, город = 'Москва' - необязательно') GROUP BY ('Колонка, по которой мы хотим сгруппировать данные - необязательно') HAVING ('Условие/фильтр на уровне сгруппированных данных - необязательно') ORDER BY ('Колонка, по которой мы хотим отсортировать вывод - необязательно').
Давайте проанализируем структуру. Для простоты текущий элемент запроса обозначается КАПИТАЛЬНЫМИ БУКВАМИ.
Структура SQL-запроса
Запрос для классификации данных выглядит следующим образом
SELECT ('столбцы, разделенные запятыми, или символы * для выбора всех столбцов') FROM ('таблицы, разделенные запятыми') WHERE ('условие или фильтр') GROUP BY ('столбцы, разделенные запятыми, по которым должны быть сгруппированы данные') HAVING ('условие для уже сгруппированного
Обычно нам нужна некоторая информация из таблицы. Но как найти его быстро? WHERE помогает вам получить информацию, отфильтровав ее на основе одного или нескольких условий. Это очень практично!
SELECT и FROM
Опция WHERE реализует такие функции:
Некоторые функции приведены в нескольких вариантах, поскольку в разных СУБД они определены по-разному. Чтобы узнать, какие функции используются в вашей СУБД, ознакомьтесь с ее документацией.
- К примеру, выбрать фамилии сотрудников из таблицы Employees:
А теперь вернемся к практике. Например, вам нужно выбрать имена сотрудников с зарплатой выше 1000. Давайте воспользуемся словом WHERE:
- Получить только фамилию и размер зарплаты из этой же таблицы:
1000
Если вам нужно указать значение строки, заключите его в круглые скобки:
-
SELECT * FROM employees WHERE department = ‘sales’.
Фильтр с различными условиями
Вы можете фильтровать данные с помощью более чем одного условия или значения. Для этого используйте операторы IN, NOT IN, AND, OR.
SELECT * FROM employees WHERE department IN (‘IT’, ‘Marketing’)
WHERE
Этот запрос выбирает всех сотрудников из отделов ИТ и маркетинга.
SELECT * FROM Employees WHERE Department NOT IN (‘IT’, ‘Marketing’)
Выбирает всех сотрудников, кроме тех, кто работает в отделах ИТ и маркетинга.
1000
SELECT last_name FROM Employees WHERE salary>1000
Необязательный пункт GROUP BY используется для создания групп данных. Это полезно для создания итогов. Например, вы хотите выяснить, сколько человек работает в отделе продаж. Команда может выглядеть следующим образом:
Иногда нам нужны данные из нескольких таблиц. Давайте рассмотрим пример:
SELECT first_name, last_name, order_id FROM employees, orders WHERE employees. employee_id = orders.employee_id.
Этот код возвращает имена и фамилии сотрудников из таблицы Employees и номера заказов из таблицы Orders, которые выполняются соответствующими сотрудниками. В команде WHERE имена столбцов идентифицируются именами соответствующих таблиц. Это необходимо для того, чтобы RMS могла различать столбцы employee_id из разных таблиц.
- Отфильтровать по нескольким значениям с дополнительными условиями:
Такая конкатенация называется внутренней конкатенацией. Вы можете использовать специальный синтаксис с ключевым словом INNER JOIN. Следующий код дает те же результаты, что и предыдущий фрагмент:
SELECT first_name, last_name, order_id FROM employees INNER JOIN orders ON employees.employee_id = orders.employee_id.
- Отфильтровать по нескольким значениям с исключением:
Пункт WHERE заменяется пунктом ON с тем же синтаксисом, что и пункт WHERE.
Количество таблиц, которые можно объединить в SQL, неограниченно, но может варьироваться от базы данных к базе данных. Примечание: Чем больше столов подключено, тем ниже производительность. Поэтому мы не рекомендуем объединять таблицы без необходимости.
- Выбрать сотрудников из ИТ-подразделения с зарплатой свыше 1000:
SELECT * FROM Employees WHERE department = 'IT' AND salary>1000
- Выбрать сотрудников из ИТ-подразделения или с зарплатой свыше 1000:
SELECT * FROM Employees WHERE department = 'IT' OR salary>1000