Oracle SQL. 100 шагов от новичка до профессионала. 20 дней новых знаний и практики. Максим Михайлович Чалышев
Чтение книги онлайн.

Читать онлайн книгу Oracle SQL. 100 шагов от новичка до профессионала. 20 дней новых знаний и практики - Максим Михайлович Чалышев страница 24

СКАЧАТЬ style="font-size:15px;">      Введение

      В определенных запросах SQL как неприятный побочный результат выводится множество одинаковых, повторяющихся записей. Иногда нам необходимо уйти от данных повторений, убрать дубли из результатов запроса.

      Теория и практика

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

      Синтаксис

      Примеры

      Вывести из таблицы AUTO марки автомобилей (MARK), исключить повторения – дубли.

      Запрос без DISTINCT:

      Рисунок 37. Запрос: дубли марок

      Есть дублирующиеся марки авто AUDI, LADA в результате вывода.

      Используем DISTINCT:

      SELECT DISTINCT MARK FROM AUTO

      Дубли строк не выводятся.

      Рисунок 38. Запрос: марки авто

      Вывести из таблицы AUTO марки и цвета автомобилей (MARK, COLOR), исключить повторения.

      Рисунок 39. Запрос: марки авто и цвета

      Несколько синих AUDI, используем DISTINCT.

      Рисунок 40. Запрос: марки, цвета авто, только уникальные записи

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

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

      С помощью DISTINCT очень удобно просмотреть, какие вообще значения есть в заданной колонке, например автомобили каких цветов присутствуют в таблице AUTO:

      SELECT DISTINCT COLOR FROM AUTO

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

      Есть ли еще какой-либо способ исключить дубли из запроса?

      Да, подобный способ называется группировка записей, и мы изучим его позже.

      Можно ли использовать DISTINCT с ROWNUM?

      Да, но тогда оператор DISTINCT бесполезен, его использование потеряет смысл.

      Можно ли использовать DISTINCT с WHERE?

      Конечно, это возможно, нет никаких ограничений, и вот пример такого запроса.

      Выведите из таблицы AUTO автомобили марки LADA уникальных цветов.

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

      1. Повторите материалы данного шага.

      2. Выведите из таблицы AUTO цвета автомобилей, исключите повторения, напишите SQL-запрос.

      3. Выведите из таблицы MAN имена людей, исключите повторения, напишите SQL-запрос.

      День пятый

      Шаг 21. Математика в запросах

      Введение

      Мы уже использовали математику в SQL-командах ранее: вспомните, в одном из примеров СКАЧАТЬ