サイトアイコン なんくる日記

PostgreSQL関数の作り方入門|CREATE FUNCTIONの基本と具体例

【初心者必見】PostgreSQL関数作成入門:基本から応用まで徹底解説

※ この記事にはアフィリエイトリンクが含まれます

PostgreSQLは、高性能で柔軟なオープンソースのリレーショナルデータベースとして広く利用されています。その中でも関数は、複雑な処理を簡潔にまとめ、再利用可能な形で実装するための強力な機能です。

関数を活用することで、データベース内での処理効率が向上し、アプリケーション側での余分なロジックを減らすことができます。また、一度作成した関数は何度でも再利用できるため、保守性の向上にも貢献します。

本記事では、PostgreSQLでの関数の基本的な作成方法から、実践的な応用例までをわかりやすく解説します。初心者の方はもちろん、すでにSQLに慣れている方にも役立つ内容になっていますので、ぜひ参考にしてみてください。

これから本格的にプログラミングを学びたい方へ

もしあなたがSQLのスキルだけでなく、「正規表現だけじゃなく、もっと本格的にプログラミングを学びたい」と思っているなら、実務レベルでのスキルが身につく「RareTECH」という学習サービスがおすすめです。

なんくる

本気でやってみたい。でも何から始めたらいいか分からない。そんなときこそ、信頼できる学習環境に頼っていいんです。一人で悩む時間を、実務レベルの力に変えられます!

少しでも気になった方は、まずは無料カウンセリングで話を聞いてみるのがおすすめです。

[ RareTECHの無料カウンセリングはこちら

PostgreSQLの関数とは?

PostgreSQLにおける関数とは、一連のSQL処理やロジックをまとめて定義し、必要に応じて呼び出せる再利用可能なコードの単位です。アプリケーションで言う「メソッド」や「プロシージャ」に近い概念で、複雑な処理を簡潔に記述できるのが特徴です。

関数の主な特徴

関数の代表的なユースケース

PostgreSQLでは、SQLだけでなく、PL/pgSQL、PL/Python、PL/Perlなどのさまざまな言語で関数を作成することができます。この記事では、特に一般的なPL/pgSQLを中心に解説していきます。

基本的な構文の解説

PostgreSQLで関数を作成するには、主に CREATE FUNCTION 文を使用します。ここでは、関数の基本構文と各要素の役割について詳しく解説します。

CREATE [OR REPLACE] FUNCTION 関数名(引数1 データ型, 引数2 データ型, ...)
RETURNS 戻り値のデータ型
LANGUAGE 言語
AS $$
BEGIN
    -- 関数内で実行する処理
    RETURN 戻り値;
END;
$$;

基本構文の中の各要素の説明をします。


例として、2つの数値を足す関数の実装例を見ていきましょう。

CREATE OR REPLACE FUNCTION add_numbers(a INTEGER, b INTEGER)
RETURNS INTEGER
LANGUAGE plpgsql
AS $$
BEGIN
    RETURN a + b;
END;
$$;

実行例

SELECT add_numbers(5, 10);

結果

15

PostgreSQLの関数を使った実践的なシナリオ

ここでは、PostgreSQLの関数を使ったより実践的な例を紹介します。実際の業務で役立つ、複雑なロジックやデータ処理をどのように関数化するかを学んでいきましょう。

条件分岐を含む売上データの割引計算関数

顧客の購入金額に応じて、割引率を適用する関数を作成します。

CREATE OR REPLACE FUNCTION calculate_discount(amount NUMERIC)
RETURNS NUMERIC
LANGUAGE plpgsql
AS $$
DECLARE
    discount_rate NUMERIC;
BEGIN
    IF amount >= 10000 THEN
        discount_rate := 0.20;  -- 10,000円以上なら20%割引
    ELSIF amount >= 5000 THEN
        discount_rate := 0.10;  -- 5,000円以上なら10%割引
    ELSE
        discount_rate := 0.05;  -- それ以外は5%割引
    END IF;

    RETURN amount * (1 - discount_rate);
END;
$$;

実行例

SELECT calculate_discount(12000); -- 結果: 9600(20%割引)
SELECT calculate_discount(6000);  -- 結果: 5400(10%割引)
SELECT calculate_discount(3000);  -- 結果: 2850(5%割引)

ポイント解説


ループ処理で数列の合計を計算する関数

指定された数値までの合計値(1 + 2 + 3 + … + N)を求める関数です。

CREATE OR REPLACE FUNCTION sum_up_to_n(n INTEGER)
RETURNS INTEGER
LANGUAGE plpgsql
AS $$
DECLARE
    total INTEGER := 0;
    i INTEGER := 1;
BEGIN
    WHILE i <= n LOOP
        total := total + i;
        i := i + 1;
    END LOOP;

    RETURN total;
END;
$$;

実行例

SELECT sum_up_to_n(5);  -- 結果: 15(1+2+3+4+5)
SELECT sum_up_to_n(10); -- 結果: 55

ポイント解説


関数を活用することで、SQLの表現力が飛躍的に向上し、複雑な業務ロジックもシンプルかつ効率的に実装できます。

まとめ

この記事では、PostgreSQLでの関数の作成方法について、基礎から応用まで幅広く解説しました。関数は、複雑な処理を効率的に管理し、再利用性やパフォーマンスの向上に貢献する強力なツールです。

PostgreSQLの関数を使いこなすことで、SQLの可能性はさらに広がります。ぜひ、日々の業務やプロジェクトで積極的に活用してみてください!

PostgreSQLは、現場でも広く使われている信頼性の高いデータベースです。もしこれから本格的に学び、実務で通用する力をつけたい方には、RareTECHをチェックしてみてください。実案件ベースのカリキュラムで、あなたのスキルを次のステージへ引き上げてくれるはずです。

なんくる

「本当にエンジニアとしてやっていけるか不安…」という方も、実践的な開発に関わることで、転職後の働き方を事前に体感できますよ。

実務で使えるDBスキルとともに、プログラミングスキルをちゃんと身につけたいなら、
RareTECH無料カウンセリングで、学ぶ目的やゴールをプロと一緒に明確にしてみましょう。独学では得られない「実践的な成長の道筋」が見えてきます。

▷ [ RareTECHの無料カウンセリングはこちら ]

もしこの内容を通して、PostgreSQLについてさらに理解を深めたいと感じられたなら、信頼できる講座や書籍を紹介した別記事をご覧いただくのも良いかと思います。ご自身の学びに、きっとお役立ていただけるはずです。

モバイルバージョンを終了