November 30, 2013
MMAという大学のサークルで、秋号の部詩を発行しました。
2013年 秋号にて公開されています。
他の部員たちも記事を書いているので、是非読んでみてください。
October 3, 2013
コンソール上で
$ psql mydb などのように接続したあと、
\d と入力するか、
select * from pg_tables where not tablename like 'pg%' order by tablename; とクエリを投げると、DB上のテーブル名を取得できる。
September 4, 2013
文字列の連結は、
hoge || poyo とする。
(hoge || poyo) as mozi のようにして、列名をつける事が出来るし、
(hoge || poyo)::Date のようにして、型変換を行うことも出来る。
September 4, 2013
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
本日、陥った罠を忘れないために記録しておきます。
where句でnullが入った値を比較したい時に、<>を用いると、正しく動作しない。なので、is distinct fromを変わりに用いると良い。これは、nullが入っていない場合は、<>と同じ動作をするようです。
参考:9.2. 比較演算子
August 29, 2013
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
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
2種類の書き方があるみたい。
cast(hoge as integer) か
hoge::integer で出来る。個人的には、後者の方が好きかな。
データの型は、公式ドキュメントに纏められている。
参考: 第8章 データ型
August 28, 2013
library("RPostgreSQL") con 簡単ですね。