Для работы с таблицами и базами данных пользователям, а также системным администраторам требуется знать SQL. Это язык запросов, который открывает довольно широкий спектр возможностей. К примеру, если вы знакомы с SQL, вы сможете уверенно работать с такой популярной системой управления базами данных, как PostgreSQL. В данной статье будет рассказано об основах применения подобной «лексики», а также о ее subquery.

Краткое определение

PostgreSQL – свободная система управления реляционными БД с открытым исходным кодом. Имеет поддержку:

  • транзакций;
  • схем;
  • внешние ключи.

Более строго соответствует требованиям SQL. Выступает в качестве безопасного средства составления подзапросов.

PostgreSQL – запрос, вложенный в другой. Работает с предложением Where. Представляет собой subquery для применения во время функционирования баз информации на устройствах.

С чем применяются

Для того, чтобы полноценно использовать таблицы и БД, программеру может потребоваться рассматриваемых подзапрос. Здесь предстоит запомнить следующую информацию:

  • подзапрос нужен для возврата информации, которая задействована в основном запросе в качестве своеобразного ограничителя сведений, подлежащих извлечению;
  • subquery применяется с select, insert, update, delete. In;
  • может использоваться совместно с операторами =, >, <, >=, <=.

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

Правила составления

Подзапрос мало изучить – требуется уяснить несколько правил, которые помогут в конечном итоге грамотно составлять соответствующие «посылы». Обратить внимание необходимо на такие принципы:

  • подзапрос составляется с круглыми скобками;
  • в предложении select может быть только один столбец, если в ключевом запросе нет нескольких подобных элементов для сравнения;
  • order by не используют в подзапросе – только в основном «обращении»;
  • group by применяется точно так же, как и order by в основном запросе;
  • подзапросы, которые возвращают больше одной строки, могут быть задействованы с операторами значений IN, Exists not in, any, some, all;
  • between – оператор, который не используется с подзапросом.

Также стоит обратить внимание на то, что МЕЖДУ разрешено использовать в подзапросе. Эти правила помогут работать с базами данных и грамотно обращаться к таблицам через PostgreSQL.

Управляющие структуры

Управляющие структуры помогают работать с PS/pgSQL. Они помогают гибко и эффективно манипулировать информацией в имеющихся таблицах.

Возврат значения функции

Первое, на что стоит обратить внимание – команды, с помощью которых осуществляется возврат значения функции. Речь идет о return и return next.

Return

Самый простой запрос. Имеет вид «Return выражение»;. Прекращает выполнение функции и возвращает значение выражения в вызванную утилиту. Применяется для подзапросов, которые не возвращают набор строк.

Стоит отметить следующие моменты:

  1. Функции, отвечающие за возврат скалярного типа, предусматривают автоматическое приведение результирующего выражения к типу возвращаемого значения. Но, если возвращаемый тип является составным (строка), возвращаемое выражение должно обязательно содержать необходимый набор столбцов. Здесь иногда нужно провести явное приведение типов.
  2. Функции, которые имеют выходные параметры, спокойно используются с return. Для этого выражение не требуется. Это повлечет за собой возврат текущих значений выходных параметров.
  3. Если происходит возврат void, return может быть поставлен в любом месте, но без выражения – только после return.
  4. Возвращаемое значение функций не может быть неопределенным. Если конец верхнего блока достигнут, а return не встретился, появляется ошибка времени реализации. Соответствующий принцип не имеет никакого отношения к функциям с выходными параметрами или возвращающих void.

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

PostgreSQL – как правильно работать

Выше – несколько примеров, которые помогут сориентироваться на изученной команде.

Return Next и Return Query

Обладает видом:

Return next выражение;

Return query запрос;

Return query execute строка-команды [using выражение, […]];

Применяется для операций подзапроса, которые возвращают setof некий_тип. Отдельные составляющие возвращаемого значения будут формироваться командами return next и return query. Итоговая команда return без аргументов отвечает за завершение функции.

Здесь стоит обратить внимание на такие данные:

  1. Return next применяется со скалярными и составными типами информации.
  2. Для того, чтобы использовать скалярный тип, результат будет возвращаться в виде таблицы.
  3. Return next и query не будут осуществлять возврат из функции. Они лишь добавляют строки в результирующие множества, после чего работа продолжается со следующего оператора в функции.
  4. Если return (next, query) прошел обработку успешно, будет сформировано множество строчек результатов.
  5. Для того, чтобы выйти из функции, применяется return, но без аргументов.
  6. У Return query есть return query executive, которая предназначается для динамической обработки сформированного пользователем запроса. В текст можно добавлять различные параметры при помощи using или execute.
  7. Для подзапроса с выходными параметрами рекомендуется задействовать return next без аргументов. Тогда текущие значения оных сохранятся для последующего возврата в качестве результирующей строки.
PostgreSQL – как правильно работать
PostgreSQL – как правильно работать

Выше представлены примеры использования соответствующих структур.

Условные операторы

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

  • If … then… end if;
  • If… then… else…. End if;
  • If … then… elsif … then…else…end if.

У Case две формы представления:

PostgreSQL – как правильно работать

Первый if – самый простой. Операторы между then и end будут выполняться, если условие (логическое выражение) выступает в качестве истины. Когда подобный принцип не соблюден, оные будут пропускаться системой.

Второй тип подзапроса if добавляет к if-then возможность указания альтернативного набора операторов. Они обрабатываются, если прописанное требование – это ложь или null.

Третий тип подзапроса if позволяет проверять несколько альтернатив в порядке очереди. Условия в If будут последовательно проверяться до тех пор, пока не будет обнаружена «истина». После операторы, которые относятся к соответствующему условию, пройдут стадию обработки. Управление перейдет к следующей после end if команде. Если же if не истина во всех ситуациях, будет реализован блок else (при наличии).

А вот эти сведения помогут разобраться с case:

  1. Первая форма подзапросов отвечает за реализацию условного выполнения на основе сравнивания операндов. Выражение поиска вычисляется всего один раз, после чего сравнивается с каждым выражением в when. При наличии совпадений начинается работа тех или иных операторов. Управление будет передано команде, идущей за «концом» подзапроса. При отсутствии совпадений начинается реализация условий из блока else. Когда таковой отсутствует, вызывается исключение case_not_found.
  2. Case с перебором условий отвечает за условное выполнение на основе истинности логических условий. Каждое выражение в when вычисляется по порядку до тех пор, пока не обнаруживается истина. Далее происходит обработка соответствующих запросов и переход к следующей команде. В противном случае выполняется else или вызывается case_not_found.
PostgreSQL – как правильно работать

Выше представлен пример if-then-elsif подзапроса. Исключение здесь только одно – при невыполнении заданных условий, а также отсутствии else, if-then-elsif ничего не будет делать. В случае с case на экране появится ошибка.

Продолжение статьи читайте здесь.

Интересует PostgreSQL? Обратите внимание на специализированный курс Otus!