Максим Чалышев - Oracle SQL. 100 шагов от новичка до профессионала
- Название:Oracle SQL. 100 шагов от новичка до профессионала
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:11
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Максим Чалышев - Oracle SQL. 100 шагов от новичка до профессионала краткое содержание
Более 500 практических заданий.
Более 1000 разобранных примеров.
Учебник справочник по языку SQL.
Oracle SQL. 100 шагов от новичка до профессионала - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
День третий
Шаг 11. Простые запросы
Введение
А сейчас отвлечемся на некоторое время от структуры таблиц и поговорим о том, как извлекать данные из базы.
Логично предположить, что если у нас есть данные, нам необходимо их выбирать из базы, обрабатывать и выводить на экран в удобном, понятном, читаемом виде.
В нашей рабочей схеме уже есть три таблицы с данными — это таблицы AUTO, CITY, MAN.
Напомню, что в таблице MAN хранятся сведения о покупателях: их имена, их возраст, CITY — это данные о городах, а таблица AUTO содержит сведения об автомобилях некоторого автосалона.
Если человек приобретает автомобиль, то в таблице AUTO в колонке PHONEnum выставляется номер телефона человека, который приобрел машину.
Для извлечения данных из базы и вывода этих данных на экран используются команды, называемые запросами к базе данных, специальная команда SQL — SELECT. Эта команда является наиболее часто используемой командой в языке SQL и постоянно применяется на практике.
Теория и практика
Начнем с самого легкого запроса, рассмотрим синтаксис самого простого оператора SELECT:
SELECT * FROM TABLE_NAME
Здесь TABLE_NAME — имя таблицы, из которой мы запрашиваем данные.
Символ * означает, что мы выводим на экран данные из всех колонок.
Откройте тестовую среду и выполните запрос
SELECT * FROM CITY;
Рисунок 7. Запрос из таблицы CITY
На экран выведены названия колонок в первой строке, а также данные в каждой колонке из таблицы CITY.
А теперь другой вариант синтаксиса такого же простого запроса SQL:
SELECT column_NAME1, column_NAME1, column_NAMEn FROM TABLE_NAME
В этом варианте вместо звездочки используются наименования колонок и на экран будут выведены только перечисленные колонки из заданной в поле FROM таблицы.
Пример (выполните в нашей тестовой среде):
SELECT CITYCODE, CITYNAME FROM CITY;
Рисунок 8. Запрос к таблице CITY по колонкам CITYCODE, CITYNAME
Результат запроса — на экран выведены только те две колонки, которые мы указали после оператора SELECT.
Существует и другой вариант синтаксиса для SQL-запросов:
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?
2. Выбрать из таблицы MAN (*) людей, где возраст (YEAROLD) человека больше 30 лет.
3. Выбрать из таблицы городов все колонки (*), где город (CITYNAME) называется Москва.
4. Выбрать названия (CITYNAME) городов CITY с населением (PEOPLES) больше миллиона человек.
5. Выбрать телефоны людей из MAN, чья фамилия (LASTNAME) не Денисов.
6. Выбрать информацию о машинах car (*) синего цвета (COLOR).
Интервал:
Закладка: