October 3, 2013

テーブル一覧を取得

コンソール上で $ psql mydb などのように接続したあと、 \d と入力するか、 select * from pg_tables where not tablename like 'pg%' order by tablename; とクエリを投げると、DB上のテーブル名を取得できる。

September 4, 2013

PostgreSQLにおける文字列の連結

文字列の連結は、 hoge || poyo とする。 (hoge || poyo) as mozi のようにして、列名をつける事が出来るし、 (hoge || poyo)::Date のようにして、型変換を行うことも出来る。

September 4, 2013

PostgreSQLでfrom句を使う時に気をつける事

from句で、テーブルを複数選択したい時に from table1,table2 や from (select * from table1) as t1, (select * from table2) as t2 とするのは良いが、 from table1, (select * from table2) as t2 が出来ないと思ってたが、出来た。(twitterで教えて頂きましたので、修正しました。) 作業している時に、サブクエリに関するエラーが出ていたのですが、手元で動かしても再現出来ないので、再び出会ったら記事にします。(もしかしたら、エラーメッセージを勘違いしてたのかも)

September 4, 2013

PostgreSQLでnullの比較をする

本日、陥った罠を忘れないために記録しておきます。 where句でnullが入った値を比較したい時に、<>を用いると、正しく動作しない。なので、is distinct fromを変わりに用いると良い。これは、nullが入っていない場合は、<>と同じ動作をするようです。 参考:9.2. 比較演算子

August 29, 2013

PythonからPostgreSQLにアクセスする

psycopg2を使うと便利なようです。 以下は、最低限必要になりそうなサンプル。 import psycopg2 con = psycopg2.connect( database = "database" , user = "username" , password = "password" , host = "host" , port = 5432 ) cur = con.cursor() cur.execute("select * from tablename") cur.fetchall()

August 28, 2013

PostgreSQLに条件式の書き方

case式を用いる。 select a, case a when 0 then 'zero' when 1 then 'one' else a end from table; すると、次のように得られる. a | case ————- | ————- 0 | ‘zero’ 1 | ‘one’ 2 | 2 参考:6.12. 条件式

August 28, 2013

PostgreSQLにおけるキャストの方法

2種類の書き方があるみたい。 cast(hoge as integer) か hoge::integer で出来る。個人的には、後者の方が好きかな。 データの型は、公式ドキュメントに纏められている。 参考: 第8章 データ型

© gepuro 2013