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

стр.

SELECT TABLE_NAME.* FROM TABLE_NAME

или

SELECT TABLE_NAME. column_NAME1, TABLE_NAME. column_NAME1, TABLE_NAME. column_NAMEn FROM TABLE_NAME

Прорешаем задания, которые мы уже выполнили, с использованием такого синтаксиса:

SELECT CITY.* FROM CITY

При выполнении этого запроса SELECT получается результат, совершенно аналогичный тому, что и в примерах выше.

Небольшой лайфхак.


Как я составляю запросы? Сначала пишу SELECT *, затем FROM, имя таблицы, выполняю запрос, а уже после перечисляю колонки, которые необходимо вывести на экран, и далее выполняю запрос повторно.

Фильтр строк WHERE в запросе SELECT


Итак, мы научились выводить на экран все данные из заданной таблицы, но как же поступить, если нам необходимо вывести на экран только избранные строки? Допустим, что в заданной таблице миллион строк, а нам необходимо посмотреть из них лишь 10.


К счастью, язык SQL позволяет это сделать. Для этого в языке SQL и в частности в команде SELECT предусмотрен специальный оператор – WHERE.

Рассмотрим синтаксис команды SELECT с оператором WHERE:

SELECT * или перечень колонок FROM TABLE_NAME WHERE условие отбора строк

Примеры:

Выберем названия городов, где население 300 000 человек.

SELECT * FROM CITY WHERE PEOPLES = 300000

Альтернативная форма записи:

SELECT CITY.* FROM CITY WHERE CITY.PEOPLES = 300000

Выражение в WHERE формируется с помощью математических операндов сравнения, рассмотрим этот момент подробнее.


Операнды сравнения

>  больше
<меньше
= строгое равенство
или неравенство! =

Примеры


Выберем все колонки (*) из таблицы городов, где население больше 300 000 человек.

SELECT * FROM CITY WHERE PEOPLES> 300000


Рисунок 9. Запрос таблице CITY с условием


Выберем название города с кодом города, равным 2, из CIty



Альтернативная форма записи:



Рисунок 10. Запрос к таблице CITY по заданному CITYCODE


Выберем все имена и фамилии из таблицы MAN:



Рисунок 11. Запрос двух колонок к таблице MAN


Все колонки (*) возраст больше 27 лет из таблицы MAN:



Рисунок 12. Запрос к таблице MAN, где возраст больше 27 лет


Из таблицы AUTO выберем номера автомобилей, выпущенных после 1 февраля 2005 года.



Рисунок 13. Запрос к таблице AUTO с ограничением по дате


Из таблицы AUTO выберем только зеленые автомобили.



Рисунок 14. Запрос к таблице AUTO, где цвет авто зеленый


Из таблицы MAN выберем только людей с именем Миша.



Рисунок 15. Запрос к таблице MAN: выбираем людей с именем Миша


Если осуществляется сравнение строковых данных, то есть тип данных в колонке сравнения VARCHAR, VARCHAR2, то строка сравнения заключается в одинарные кавычки.


Примеры


Выбрать из таблицы MAN все колонки (*), где имя Миша (равно Миша).


Рисунок 16. Запрос к MAN, где имя равно Миша


Выбрать из таблицы MAN все колонки (*), где имя не Олег (не равно Олег).



Рисунок 17. Запрос к MAN, где имя не равно Олег

Важные замечания

Несмотря на то что в SQL можно сочетать большие и маленькие буквы, в выражении в одинарных кавычках, при отборе и фильтрации текстовых данных регистр должен соблюдаться, иначе запрос отработает некорректно.


Выражение DATE’YYYY-MM-DD» работает только в СУБД ORACLE, в MS SQL SERVER и POSTGREESQL работа с данными типа «дата» осуществляется по-другому (смотрите подробности документации к этим СУБД).


Следует учитывать, что в некоторых типах баз данных для неравенства можно использовать <> или знак!=, подобную информацию необходимо уточнять в документации к СУБД.

Вопросы учеников

Какой способ написания команды SELECT наиболее часто используется?

Вы можете использовать любой способ записи, но наиболее удобным, с точки зрения синтаксиса и читаемости запроса, я считаю способ с указанием имени таблицы после оператора SELECT.

Так все-таки какой смысл в этой звездочке вместо перечисления колонок?

SELECT * выведет информацию о всех колонках в заданной таблице, и это можно использовать, чтобы посмотреть, какие именно колонки присутствуют и как они называются.

Мы можем использовать форму записи с именем таблицы в фильтре WHERE?

Да, и вот пример. SELECT * FROM MAN WHERE MAN.FIRSTNAME= «Олег».

Контрольные вопросы и задания для самостоятельного выполнения

1. Чем отличаются разные формы записи SQL-запроса SELECT?