PostgreSQL の psql にはヘルプを表示する便利なコマンド \h があります。
使い方は簡単です。
引数なしで実行すると SQL のコマンド一覧が表示されます。
db=# \h
ABORT CREATE LANGUAGE
ALTER AGGREGATE CREATE OPERATOR
ALTER CONVERSION CREATE OPERATOR CLASS
ALTER DATABASE CREATE OPERATOR FAMILY
ALTER DOMAIN CREATE ROLE
ALTER FOREIGN DATA WRAPPER CREATE RULE
ALTER FUNCTION CREATE SCHEMA
ALTER GROUP CREATE SEQUENCE
ALTER INDEX CREATE SERVER
ALTER LANGUAGE CREATE TABLE
引数にコマンドを付けるとコマンドの説明を表示します。
db=# \h COPY
Command: COPY
Description: copy data between a file and a table
Syntax:
COPY tablename [ ( column [, ...] ) ]
FROM { 'filename' | STDIN }
[ [ WITH ]
[ BINARY ]
[ OIDS ]
[ DELIMITER [ AS ] 'delimiter' ]
[ NULL [ AS ] 'null string' ]
[ CSV [ HEADER ]
[ QUOTE [ AS ] 'quote' ]
SQL コマンドの使い方を忘れたときに 手元にリファレンスがなくても その場で確認できるので 便利です。
PHP5 からタイプヒンティングを使用することができます。 これは関数の引数の型を指定することができます。
次のように引数の前に型を宣言します。
function test(array %values) {
.....
}
これで $values は配列を指定しないとエラーになります。
ただし配列とオブジェクト型だけで int などのネイティブ型には指定することができません。
PHP では配列を定義するとき次のように 最後の要素の後ろにカンマがあってもエラーになりません。
$a = array(1, 3, 4,); ~~
このように定義した場合、配列の要素数は 3 です。 最後のカンマは無視されるわけです。
なぜこうなってるかですが、 配列は、要素が長かったり連想配列だと次のように定義することがあります。
$b = array('a' => 3, 'b' => 2, 'c' => 5);
4 つめの要素を追加するときは、最後の要素の後ろにカンマを付けて・・・と やらなくてはなりません。
ところが次のように定義してある場合、全ての要素の行を同じように扱うことができます。
$b = array( 'a' => 3, 'b' => 2, 'c' => 5, );
書く人に、とても優しいですね。 ちゃんと規約にしてしまえば、こちらの方がミスも少なくて良いんじゃないでしょうか。
これは Perl や JavaScript, Java なんかでも同じです。
PostgreSQL の psql では \timing を使うと 実行時間を計測することができます。
db=# \timing
Timing is on.
これで計測が on になりました。
後は通常通り SQL を実行します。
db=# select 1;
?column?
----------
1
(1 row)
Time: 2.422 ms
もう 1 度実行すると off になります。
db=# \timing
Timing is off.
PostgreSQL は PL/pgSQL を使って ORACLE の PL/SQL のように 関数を作ることができますが 手続き言語を SQL でも簡単に関数を作ることができます。
次のように定義します。
CREATE FUNCTION test_func (
i1 integer,
i2 integer
)
RETURNS integer
AS
$$
SELECT $1 + $2
$$
LANGUAGE sql IMMUTABLE STRICT;
呼び出すときは同じです。
db=# SELECT test_func(4, 3);
7