要点
- PL/pgSQLを理解するには、PL/SQLを理解する
- PL/SQL, PL/pgSQLは、SQL(非手続き型言語)に加えて、繰り返し処理、条件分岐、配列、例外処理、トリガーなどといった便利な機能を備えたもの
- 各RDBMSに特化して拡張されたSQLという認識でok
- PLは、Procedural Language(手続き型言語)の略
- 繰り返し処理、条件分岐などの処理のことを手続き処理という
SQLとは
- RDBMSにおいて、データを操作するためのデータベース言語。クエリ言語とも呼ばれる。プログラミング言語とは区別される。
- データベース言語はDBMSに命令を出すためのもので、基本的にそれ以外の用途に使用することができない。
- ソフトウェア開発に使用されるプログラミング言語とは異なり、シンプルな構成になっているため、文法や使い方も独特なものとなっている
- 標準化されているため、様々なRDBMSで利用することができる
- 具体例)Oracle Database、MySQL、PostgreSQL、SQLiteなど
PL/SQL
- Oracle Databaseでデータを管理するためにSQLを拡張して開発されたプログラミング言語。
- SQLではできない、繰り返し処理や条件分岐などの処理を使用することができる
- PL/SQLで記述された関数はSQLから呼び出すことやトリガーによって実行することもできる
- Oracle Database:Oracle社が提供するRDBMS
PL/pgSQL
- PostgreSQLでデータを管理するためにSQLを拡張して開発されたプログラミング言語。
- PL/SQLの拡張であるため、文法など似ているところがある
- 機能については、PostgreSQLに特化したものになっているがPL/SQLのPostgreSQL版に拡張しているという認識でok
PL/SQL, PL/pgSQLを使うことのメリット
- 繰り返し処理、条件分岐などを使用することができる
- パフォーマンスが向上する
- SQLを含めたプログラム全体をまとめてRDBMSに送信することができる
- PL/SQL, PL/pgSQL以外のプログラミング言語(C, Javaなど)では、プログラムに含まれるSQLが文単位でRDBMSに送信される
- 両者の最終的に得られる結果は同じだが、効率に大きな差がある
-
SQLで定義する関数に比べて、制御文、条件分岐を使った関数を作成することができる
- SQLでも関数を定義することは可能
その他(PL/python, PL/Perl)
- PostgreSQLでは、標準でPL/python, PL/Perlなどを配布しているためインストールして使用することができる
- PL/pythonをインストールして使用する場合、関数定義などをpythonで記述することができる