Oracle SQL. 100 шагов от новичка до профессионала - страница 15
Шаг 12. Более сложные условия. Знакомимся с логикой выбора строк
Введение
Язык SQL позволяет задавать и более сложные фильтры отбора строк с помощью оператора WHERE. Для этого в языке SQL применяются логические операнды, позволяющие комбинировать несколько условий, создавать тем самым сложные логические выражения.
Теория и практика
Итак, логические операнды позволяют объединять несколько условий, чтобы создать более сложные критерии выбора строк в операторе WHERE. Разберемся поподробнее, как это работает.
усл1 AND усл2 – логическое И, позволяет объединить несколько условных выражений, так что запрос вернет строку таблицы, если каждое из условий будет верным.
усл1 OR усл2 – логическое Или, позволяет выбрать строки, если одно из заданных условий верно.
NOT усл – логическое отрицание, выбирает строки, если выражение полностью неверно.
AND OR и NOT – как указано выше, можно гармонично сочетать в запросе.
Синтаксис
Где TABLENAME – имя таблицы, а условие1…условиеn – различные условия (WHERE) в SQL-запросе.
Последовательность логических операндов может комбинироваться.
Примеры
Разберем действие данных логических операндов на примерах:
Выбрать из таблицы AUTO машины (*) BMW синего цвета (COLOR).
Рисунок 18. Запрос на синие авто BMW
Выбрать из таблицы MAN имена (FIRSTNAME) и фамилии (LASTNAME) людей, которым больше 27 лет и меньше 41 года (YEAROLD).
Рисунок 19. Запрос к MAN, где возраст больше 27 и меньше 41
Выбрать из таблицы MAN имена и фамилии людей с именем (FIRSTNAME) Андрей, которым больше 27 лет (YEAROLD).
Рисунок 20. Запрос к таблице MAN: Андрей, возраст больше 27 лет
Выбрать из таблицы MAN имена (FIRSTNAME) и фамилии (LASTNAME) людей, которым не больше 27 лет (YEAROLD).
Рисунок 21. Запрос к таблице MAN: Андрей, возраст больше 27 лет
Выбрать из таблицы MAN имена (FIRSTNAME) и фамилии (LASTNAME) людей с именем Андрей или Алексей.
Рисунок 22. Запрос к таблице MAN: Андрей и Алексей
Выбрать из таблицы CITY города (*) с населением (PEOPLES) 400, 500 тысяч жителей.
Рисунок 23. Запрос: города с населением 300 и 400 тысяч
Выбрать из таблицы CITY города (*) с населением (PEOPLES) не 400, 500 тысяч жителей.
Рисунок 24. Запрос: города с населением не 300 и не 400 тысяч
Важные замечания
Несколько условий можно объединять скобками, например из таблицы MAN нам необходимо вывести те строки, где людям 25 или 28 лет с именем Иван. Это можно сделать с помощью следующего запроса:
Очень важно понимать отличие AND от OR, например выведите авто с марками LADA и BMW – в этом запросе необходимо использовать инструкцию OR и ни в коем случае не AND.
Вопросы учеников
Можно ли неравенство заменить на инструкцию NOT?
Как поменять несколько условий, перечисленных после WHERE в SQL-запросе, на обратные?
Вопрос не очень понятен, но предположим, у нас есть запрос, который возвращает все строки из таблицы AUTO с марками BMW и LADA.
Если необходимо посмотреть авто не BMW и LADA, то запрос обретет следующий вид:
Контрольные вопросы и задания для самостоятельного выполнения
1. Сколько строк вернет запрос?
2. Выберите из таблицы CITY (*) город, где 200 тысяч жителей (PEOPLES); город с наименованием Москва (CITYNAME).
3. Выберите из таблицы CITY города с населением (PEOPLES) не 500 тысяч жителей.
4. Выберите из таблицы AUTO (*) все синие AUDI (COLOR, MARK).
5. Выберите из таблицы AUTO номера (regnum) и марки (MARK) всех VOLVO и BMW.
6. Выберите из таблицы MAN имена, фамилии (FIRSTNAME, LASTNAME) и возраст людей (YEAROLD), которым больше 29 и меньше 35 лет.
Шаг 13. Сортировка результатов запросов
Введение
Данные, выводимые с помощью запроса SELECT, часто необходимо сортировать по одному или нескольким выводимым колонкам.