特集 オープンソースで作るJava+DB
第1回 PostgreSQLで学ぶSQLデータベースの操作 (9/15)
レコードの参照
ここまでで2つのレコードをINSERT文で追加したため、追加したレコードを参照してみよう。レコードを参照するには、SELECT文を使う。SELECT文の基本書式は、次の通りだ。
SELECT 列名1, 列名2, FROM テーブル名
WHERE 抽出条件式
ORDER BY 並び替える列名1, 並び替える列名2, …
One Point!
ここではもっとも単純なSELECT文の構成を示している。SELECT文には、他にも幾つかのオプションを指定できる。また、FROM句に複数テーブルを指定し、WHERE句で複数のテーブルの結合条件を指定すれば、複数のテーブルを集めて1つの結果を得ることもできる。
全レコードを取得するには、次のように構文「SELECT * FROM テーブル名」として実行する。すると、該当テーブルに含まれる全レコードが表示される。
sampledb=# SELECT * FROM Keiji; id | name | email | title | body | writedate | host ----+----------+-------+-----------------+-------------------------------+------ ----------------------+------ 1 | 大澤文孝 | | 掲示板サンプル | 掲示板のサンプルです | 2003- 07-06 05:03:46.092194 | 2 | 中村昇 | | 掲示板サンプル2 | 掲示板のサンプルです。その2。 | 2003- 07-06 05:07:39.746244 | (2 rows)
ここで注目したいのは、「id」と「writedate」列だ。INSERT文では、明示的に値を指定していないが、CREATE TABLE文でのテーブル定義において設定したデフォルト値が採用されているのが分かると思う。
SELECT文では、明示的に列名を指定し、一部の列だけを取り出すこともできる。たとえば次のようにすると、id列とname列だけが表示される。
sampledb=# SELECT id, name FROM Keiji; id | name ----+---------- 1 | 大澤文孝 2 | 中村昇 (2 rows)
またWHERE句を指定すると、特定の条件に合致するレコードだけを取り出すことができる。たとえば次のようにすると、id列が1であるレコードのみが表示される。
sampledb=# SELECT id, name FROM Keiji WHERE id=1; id | name ----+---------- 1 | 大澤文孝 (1 row)
条件には、ANDやORなどを組み合わせ、より複雑な条件式を設定できるが、ここでは省略する。
またORDER BY句を指定すると、順序を並べ替えることができる。昇順(小さいもの順)にするならば、「ORDER BY 列名」、降順(大きいもの順)にするならば、「ORDER BY 列名 DESC」と指定する。たとえば次のようにすると、id列で降順に並べ替えて取得することができる。
sampledb=# SELECT id, name FROM Keiji ORDER BY id DESC; id | name ----+---------- 2 | 中村昇 1 | 大澤文孝 (2 rows)
ORDER BYを指定しない場合には、レコードの取り出し順序は不定である点に注意したい。指定しなくても、id列の小さい順に表示されるように見えるが、これは、PostgreSQLが、「レコードを追加(または更新)した順序」で表示しているだけだ。きちんと決まった順序でレコードを取得したい場合には、必ずORDER BYを指定しなければならない。
前のページ | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 次のページ
[大澤文孝,ITmedia]