SELECT文...db=# select * from customer ; no | name | age | job | date | mail | contno -----+--------------------+-----+-----------+------------+----------------+-------- 101 | Taro Tanaka | 23 | Finance | 1998-02-20 | taro@example.co.jp | 1 102 | Kenji Hayashi | 43 | Bank | 1998-03-12 | kenji@example.co.jp | 1 103 | Yasuyuki Morishita | 19 | Student | 1998-04-11 | yasuyuki@example.co.jp | 2 104 | Tomoyuki Nakajima | 32 | Bank | 1998-05-18 | tomoyuki@example.co.jp | 5 105 | Takao Takahashi | 36 | Transport | 1998-06-09 | takao@example.co.jp | 3 107 | Masashi Ito | 26 | | 1998-06-09 | masashi@example.co.jp | 4 108 | Masaru Oohashi | 46 | Finance | 1998-11-19 | masaru@example.co.jp | 3 109 | Tomoko Kawaguchi | 24 | | 1998-12-04 | tomoko@example.co.jp | 2 110 | Aki Suzuki | 18 | Student | 1998-12-26 | aki@example.co.jp | 3 (9 rows)
db=# select name, age from customer
db-# where age > 29;
name | age
-------------------+-----
Kenji Hayashi | 43
Tomoyuki Nakajima | 32
Takao Takahashi | 36
Masaru Oohashi | 46
(4 rows)
db=# select job from customer;
job
-----------
Finance
Bank
Student
Bank
Transport
Finance
Student
(9 rows)
db=# select distinct job from customer;
job
-----------
Bank
Finance
Student
Transport
(5 rows)
db=# select distinct job, contno from customer;
job | contno
-----------+--------
| 2
| 4
Bank | 1
Bank | 5
Finance | 1
Finance | 3
Student | 2
Student | 3
Transport | 3
(9 rows)
db=# select distinct on (job) job, contno from customer;
job | contno
-----------+--------
| 4
Bank | 1
Finance | 1
Student | 2
Transport | 3
(5 rows)
db=# select distinct on (job) job, max(contno) from customer group by job;
job | max
-----------+-----
| 4
Bank | 5
Finance | 3
Student | 3
Transport | 3
(5 rows)
db=# select name from customer
db-# where ( date >= '1998-05-01' ) and ( age >= 20 ) and ( age < 30 );
name
------------------
Masashi Ito
Tomoko Kawaguchi
(2 rows)
db=# select name from customer
db-# where age >= 40 and ( job = 'Finance' or job = 'Bank' );
name
----------------
Kenji Hayashi
Masaru Oohashi
(2 rows)
db=# select name, age, date from customer
db-# where age between 20 and 40;
name | age | date
-------------------+-----+------------
Taro Tanaka | 23 | 1998-02-20
Tomoyuki Nakajima | 32 | 1998-05-18
Takao Takahashi | 36 | 1998-06-09
Masashi Ito | 26 | 1998-06-09
Tomoko Kawaguchi | 24 | 1998-12-04
(5 rows)
db=# select name, age, date from customer
db-# where ( age >= 20 ) and ( age <= 40 );
name | age | date
-------------------+-----+------------
Taro Tanaka | 23 | 1998-02-20
Tomoyuki Nakajima | 32 | 1998-05-18
Takao Takahashi | 36 | 1998-06-09
Masashi Ito | 26 | 1998-06-09
Tomoko Kawaguchi | 24 | 1998-12-04
(5 rows)
db=# select name from customer
db-# where job in ('Bank','Transport','Finance');
name
-------------------
Taro Tanaka
Kenji Hayashi
Tomoyuki Nakajima
Takao Takahashi
Masaru Oohashi
(5 rows)
db=# select name from customer
db-# where ( job = 'Bank' ) or ( job = 'Transport' ) or ( job = 'Finance');
name
-------------------
Taro Tanaka
Kenji Hayashi
Tomoyuki Nakajima
Takao Takahashi
Masaru Oohashi
(5 rows)
db=# select name from customer
db-# where job is null;
name
------------------
Masashi Ito
Tomoko Kawaguchi
(2 rows)
| ワイルドカード | 説明 |
| _ | 任意の1文字。 |
| % | 0文字以上の任意の文字。 |
db=# select var from test
db-# where var like '%#%%' escape '#';
var
------------------
%abc
a%bc
abc%
(3 rows)
db=# select name, mail from customer
db-# where mail like '%@example.co.jp';
name | mail
-------------------+----------------
Taro Tanaka | taro@example.co.jp
Tomoyuki Nakajima | tomoyuki@example.co.jp
Takao Takahashi | takao@example.co.jp
Aki Suzuki | aki@example.co.jp
(4 rows)
db=# select name, mail from customer
db-# where mail ~~ '%@example.co.jp';
name | mail
-------------------+----------------
Taro Tanaka | taro@example.co.jp
Tomoyuki Nakajima | tomoyuki@example.co.jp
Takao Takahashi | takao@example.co.jp
Aki Suzuki | aki@example.co.jp
(4 rows)
db=# select name from customer db-# where name like 't%'; name ------ (0 rows)
db=# select name from customer
db-# where name ilike 't%';
name
-------------------
Taro Tanaka
Tomoyuki Nakajima
Takao Takahashi
Tomoko Kawaguchi
(4 rows)
| ワイルドカード | 説明 |
| _ | 任意の1文字。 |
| % | 0文字以上の任意の文字。 |
| + | 直前文字の1回以上の繰り返し。 |
| * | 直前文字の0回以上の繰り返し。 |
| () | 1つのグループに分ける。 |
| | | 二者択一 |
db=# select var from test
db-# where var similar to '%#+%' escape '#';
var
------------------
+abc
a+bc
abc+
(3 rows)
db=# select name, mail from customer
db-# where mail similar to '%@example.co.jp';
name | mail
-------------------+----------------
Taro Tanaka | taro@example.co.jp
Tomoyuki Nakajima | tomoyuki@example.co.jp
Takao Takahashi | takao@example.co.jp
Aki Suzuki | aki@example.co.jp
(4 rows)
db=# select name from customer
db-# where age not between 10 and 30;
name
-------------------
Kenji Hayashi
Tomoyuki Nakajima
Takao Takahashi
Masaru Oohashi
(4 rows)
db=# select name from customer
db-# where job NOT IN ('Bank','Finance');
name
--------------------
Yasuyuki Morishita
Takao Takahashi
Aki Suzuki
(3 rows)
db=# select name from customer
db-# where job is not null;
name
--------------------
Taro Tanaka
Kenji Hayashi
Yasuyuki Morishita
Tomoyuki Nakajima
Takao Takahashi
Masaru Oohashi
Aki Suzuki
(7 rows)
db=# select * from customer db-# order by age desc, name; no | name | age | job | date | mail | contno -----+--------------------+-----+-----------+------------+----------------+-------- 108 | Masaru Oohashi | 46 | Finance | 1998-11-19 | masaru@example.co.jp | 3 102 | Kenji Hayashi | 43 | Bank | 1998-03-12 | kenji@example.co.jp | 1 105 | Takao Takahashi | 36 | Transport | 1998-06-09 | takao@example.co.jp | 3 104 | Tomoyuki Nakajima | 32 | Bank | 1998-05-18 | tomoyuki@example.co.jp | 5 107 | Masashi Ito | 26 | | 1998-06-09 | masashi@example.co.jp | 4 109 | Tomoko Kawaguchi | 24 | | 1998-12-04 | tomoko@example.co.jp | 2 101 | Taro Tanaka | 23 | Finance | 1998-02-20 | taro@example.co.jp | 1 103 | Yasuyuki Morishita | 19 | Student | 1998-04-11 | yasuyuki@example.co.jp | 2 110 | Aki Suzuki | 18 | Student | 1998-12-26 | aki@example.co.jp | 3 (9 rows)
db=# select name, date from customer
db-# where date >= '1998-04-01'
db-# order by 2 desc, 1;
name | date
--------------------+------------
Aki Suzuki | 1998-12-26
Tomoko Kawaguchi | 1998-12-04
Masaru Oohashi | 1998-11-19
Masashi Ito | 1998-06-09
Takao Takahashi | 1998-06-09
Tomoyuki Nakajima | 1998-05-18
Yasuyuki Morishita | 1998-04-11
(7 rows)
db=# select name, date from customer
db-# where date >= '1998-04-01'
db-# order by 2, age desc;
name | date
--------------------+------------
Yasuyuki Morishita | 1998-04-11
Tomoyuki Nakajima | 1998-05-18
Takao Takahashi | 1998-06-09
Masashi Ito | 1998-06-09
Masaru Oohashi | 1998-11-19
Tomoko Kawaguchi | 1998-12-04
Aki Suzuki | 1998-12-26
(7 rows)
db=# select contno, count(*) from customer;
ERROR: column "customer.contno" must appear in the GROUP BY clause or be used in an aggregate function
db=# select contno, count(*) from customer
db-# group by contno;
contno | count
--------+-------
5 | 1
4 | 1
3 | 3
2 | 2
1 | 2
(5 rows)
db=# select contno, count(*) from customer
db-# group by contno
db-# having count(*) >= 2;
contno | count
--------+-------
3 | 3
2 | 2
1 | 2
(3 rows)