We consider several private database query problems. The starting point of this work is the element rank problem: the server holds a database of n integers, and the user an integer q; the user wishes to find out how many database records are smaller than q, without revealing q; nothing else about the database should be disclosed. We show a non-interactive communication-efficient solution to this problem. We then use it to solve more complex private database queries: range queries, range queries in plane and higher-dimensional generalizations of element rank. We also show an improved solution to the kth ranked element problem [1], and a solution to private keyword search [11] using weaker assumptions than those of [11]. All our solutions assume semi-honest adversarial behaviour.