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= «Олег».
Контрольные вопросы и задания для самостоятельного выполнения