Программирование баз данных postgresql

Программирование баз данных postgresql

PL/pgSQL это процедурный язык для СУБД PostgreSQL . Целью проектирования PL/pgSQL было создание загружаемого процедурного языка, который:

используется для создания функций, процедур и триггеров,

добавляет управляющие структуры к языку SQL ,

может выполнять сложные вычисления,

наследует все пользовательские типы, функции, процедуры и операторы,

может быть определён как доверенный язык,

Функции PL/pgSQL могут использоваться везде, где допустимы встроенные функции. Например, можно создать функции со сложными вычислениями и условной логикой, а затем использовать их при определении операторов или в индексных выражениях.

В версии PostgreSQL 9.0 и выше PL/pgSQL устанавливается по умолчанию. Тем не менее это по-прежнему загружаемый модуль и администраторы, особо заботящиеся о безопасности, могут удалить его при необходимости.

43.1.1. Преимущества использования PL/pgSQL

PostgreSQL и большинство других СУБД используют SQL в качестве языка запросов. SQL хорошо переносим и прост в изучении. Однако каждый оператор SQL выполняется индивидуально на сервере базы данных.

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

PL/pgSQL позволяет сгруппировать блок вычислений и последовательность запросов внутри сервера базы данных, таким образом, мы получаем силу процедурного языка и простоту использования SQL при значительной экономии накладных расходов на клиент-серверное взаимодействие.

Исключаются дополнительные обращения между клиентом и сервером

Промежуточные ненужные результаты не передаются между сервером и клиентом

В результате это приводит к значительному увеличению производительности по сравнению с приложением, которое не использует хранимых функций.

Кроме того, PL/pgSQL позволяет использовать все типы данных, операторы и функции SQL .

43.1.2. Поддерживаемые типы данных аргументов и возвращаемых значений

Функции на PL/pgSQL могут принимать в качестве аргументов все поддерживаемые сервером скалярные типы данных или массивы и возвращать в качестве результата любой из этих типов. Они могут принимать и возвращать любой именованный составной тип (тип кортежа). Также есть возможность объявить функцию на PL/pgSQL как принимающую record , то есть ей может быть передан любой составной тип, или как возвращающую record , то есть её результатом будет кортеж, столбцы которого определит спецификация вызывающего запроса, как описано в Подразделе 7.2.1.4.

Использование маркера VARIADIC позволяет объявлять функции на PL/pgSQL с переменным числом аргументов. Это работает точно так же, как и для функций на SQL, как описано в Подразделе 38.5.6.

Функции на PL/pgSQL могут также принимать и возвращать полиморфные типы, описанные в Подразделе 38.2.5, вследствие чего фактические типы данных, обрабатываемые функцией, могут меняться от вызова к вызову. Примеры приведены в Подразделе 43.3.1.

Функции на PL/pgSQL могут возвращать « множества » (или таблицы) любого типа, которые могут быть возвращены в виде одного объекта. Такие функции генерируют вывод, выполняя команду RETURN NEXT для каждого элемента результирующего набора или RETURN QUERY для вывода результата запроса.

Наконец, при отсутствии полезного возвращаемого значения функция на PL/pgSQL может возвращать void . (С другой стороны, её также можно оформить в виде процедуры.)

Функции на PL/pgSQL можно объявить с выходными параметрами вместо явного задания типа возвращаемого значения. Это не добавляет никаких фундаментальных возможностей языку, но часто бывает удобно, особенно для возвращения нескольких значений. Нотация RETURNS TABLE может использоваться вместо RETURNS SETOF .

Конкретные примеры рассматриваются в Подразделе 43.3.1 и Подразделе 43.6.1.

Источник

Практический курс для новичков по SQL и PostgreSQL

Программирование баз данных: с СУБД PostgreSQL и языком SQL: теория и практика с разборами ДЗ. Все знания, которые вы получите на курсе легко применимы и к другим СУБД, таким как MySQL, Microsoft SQL Server, Oracle.

О курсе

Учите SQL быстро и эффективно!

От автора бестселлера: «Полное руководство по Python 3: от новичка до специалиста»

Вы научитесь читать и писать сложные запросы к базам данных, используя один из самых востребованных языков программирования — SQL и супер востребованную СУБД (систему управления базами данных) — PostgreSQL. Все те знания, которые вы получите на курсе легко применимы и к другим СУБД, таким как MySQL, Microsoft SQL Server, Oracle.

Изучение SQL это один из самых быстрых способов подняться по карьерной лестнице и начать зарабатывать ещё больше. На курсе вы будете учиться и получать задания для собственной проверки и улучшения понимания материала.

На данный момент курс покрывает:

  • Введение в SQL: концепции, реляционная модель, инсталляция postgres, создание БД, таблиц, виды отношений, типы данных
  • Простые выборки: SELECT, DISTINCT, COUNT, WHERE, AND / OR, BETWEEN, IN, ORDER BY, MIN/MAX/AVG, LIKE, LIMIT, GROUP BY, HAVING, UNION/INTERSECT/EXCEPT, проверки на NULL
  • Соединения: INNER, LEFT, RIGHT, SELF, USING и NATURAL JOIN
  • Подзапросы: WHERE EXISTS, подзапросы с квантификаторами
  • DDL: управление ключами (PK, FK), ограничения, последовательности, INSERT, UPDATE/DELETE/RETURNING
  • Проектирование БД: основы, рекомендации, нормальные формы (НФ)
  • Представления (Views): основы, создание, обновления через views, опция check
  • Логика с CASE WHEN, COALESCE и NULLIF
  • Функции SQL: основы, скалярные функции, IN/OUT/DEFAULT, возврат наборов данных
  • Функции PL/pgSQL: основы, возврат и присвоение, декларация переменных, логика с if-else, циклы, RETURN NEXT
  • Ошибки и их обработка
  • Индексы: основы, методы сканирования, виды, EXPLAIN, ANALYZE
  • Массивы: основы, создание, нарезка (slicing), операторы, VARIADIC и FOREACH
  • Продвинутая группировка с CUBE/ROLLUP
  • Пользовательские типы: домены, композитные типы, перечисления
  • psql и импорт данных
  • транзакции
  • безопасность
  • оконные функции
  • триггеры
  • и ещё кое-какие менее значимые темы

Зачисляйтесь на курс прямо сейчас!

Для кого этот курс

Новички в программировании, желающие научиться работать с данными через SQL и PostgreSQL

Начальные требования

Источник

Читайте также:  Delphi язык программирования языки программирования
Оцените статью