Самоучитель. Курс SQL. Базы данных. ORACLE. Илья Леонидович Хохлов

Читать онлайн.
Название Самоучитель. Курс SQL. Базы данных. ORACLE
Автор произведения Илья Леонидович Хохлов
Жанр
Серия
Издательство
Год выпуска 1985
isbn



Скачать книгу

уходит в прошлое. Его уже почти никто не использует. Но, если Вы придете работать в компанию, которая существует уже много лет, и Вам нужно будет в рамках некоторой задачи доработать отчет, вернее его запрос, на основе которого формируются данные, и если Вы там увидите ASC, то теперь Вы будет знать, что это означает! Язык SQL, подобно любому человеческому языку, также стремится к простоте. Отбрасывая то, что можно опустить, не использовать. И при этом сохраняя однозначность выполнения.

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

      4.4. Выборка данных по нескольким условиям. Использование AND и OR. Приоритеты операторов

      Теперь рассмотрим, как сочетать несколько условий в одном блоке WHERE. Выведем сотрудников, работающих в филиале 2 или 3, упорядоченных по ФИО. По сути, нужно вывести все строчки из таблицы Persons, в которых в столбце FilialID значение равно 2 или 3. Если в строчке в графе FilialID = 2 – показываем такую строку! Если 3 – тоже показываем!

      Результат:

      Одна из типичных ошибок, которую совершают начинающие специалисты SQL, они иногда пишут так:

      И потом удивляются, почему запрос не может «отработать»? Так писать неправильно, так как ORACLE (или другая СУБД) не сможет однозначно понять, что имелось ввиду. ORACLE, получая такой запрос, «думает»: нужно вывести строчки в которых в столбце FilialID значение равно двум или… три. И тут не понятно, что – «три»?! Значение в каком столбце должно быть равно трем? На эту тему есть старинный анекдот:

      Летят Петька и Василий Иванович в самолёте. Василий Иванович:

      –  Петька, приборы?

      –  Девять!

      Летят дальше. Через некоторое время Василий Иванович снова:

      –  Петька, приборы?!

      –  Девять!

      –  Что «девять»–то?

      –  А что «приборы»?

      Всегда нужно указывать и второе условие (то, что после OR) полностью! Правильно так:

      В SQL запросе, для комбинации условий, мы использовали OR. С помощью него из таблицы будет выведена всякая строчка в случае, если выполняется одно, либо другое условие. То есть, минимум одно из них. ORACLE, пробегая по всей таблицы (Persons) и решая какую строчку выбрать нам в результирующий набор, будет сначала пробовать первое условие. То есть смотреть значение «2» ли в поле FilialID. Если нет, то может в поле FilialID значение «3»? Если да, то строчка будет выбрана, и мы ее увидим.

      В следующем примере выведем строчки таблицы, соответствующие одновременно двум условиям. Для наглядности, добавим еще и вывод идентификатора департамента сотрудника:

      Из таблицы Persons отберутся такие строчки, в которых в столбце FilialID значение равно 1 и одновременно в этой же строке в столбце DepartamentID значение равно 2. Результат:

      В одном запросе можно одновременно использовать AND и OR:

      Беглым взглядом не понятно, какие