Oracle SQL. 100 шагов от новичка до профессионала - страница 15

стр.

2. Выбрать из таблицы MAN (*) людей, где возраст (YEAROLD) человека больше 30 лет.
3. Выбрать из таблицы городов все колонки (*), где город (CITYNAME) называется Москва.
4. Выбрать названия (CITYNAME) городов CITY с населением (PEOPLES) больше миллиона человек.
5. Выбрать телефоны людей из MAN, чья фамилия (LASTNAME) не Денисов.
6. Выбрать информацию о машинах car (*) синего цвета (COLOR).

Шаг 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, часто необходимо сортировать по одному или нескольким выводимым колонкам.