基本的なSQL②

SELECT文で行と列の選択

SELECT 列名, 列名, ... FROM テーブル名 WHERE 条件式;

・WHERE句がなければ全行表示。

ログイン画面から実行。

oddtbs=> select tel, name from emp where gender = 2;
   tel   |   name
---------+----------
 22-2222 | 斎藤洋子
 11-1111 | 鈴木律子
 88-8888 | 吉田美樹
(3 rows)

SELECT文で加工したデータを使用

SELECT データ, データ, ... FROM テーブル名 WHERE 条件式;

ログイン画面から実行。

oddtbs=> select code, name || 'さんの電話番号は' || tel || 'です' from emp;
  code  |              ?column?
--------+-------------------------------------
 564001 | 鈴木義男さんの電話番号は11-1111です
 564002 | 斎藤洋子さんの電話番号は22-2222です
 564008 | 吉田隆士さんの電話番号は88-8888です
 564007 | 鈴木律子さんの電話番号は11-1111です
 564003 | 吉田美樹さんの電話番号は88-8888です
(5 rows)

SELECT文で列の別名を指定

SELECT データ[ AS 別名], データ[ AS 別名], ... FROM テーブル名 WHERE 条件式;

ログイン画面から実行。

oddtbs=> select code as 番号, name || 'さんは' || age || '才です' as 名前と年齢 from emp;
  番号  |       名前と年齢
--------+------------------------
 564001 | 鈴木義男さんは58才です
 564002 | 斎藤洋子さんは44才です
 564008 | 吉田隆士さんは24才です
 564007 | 鈴木律子さんは33才です
 564003 | 吉田美樹さんは33才です
(5 rows)

列指定のINSERT文

INSERT INTO テーブル名(列名, 列名, ...) VALUES(値, 値, ...);

・指定されていない列はNULLがはいる。

  1. 次のSQLをファイルとして作成。(emp_insert012.sql)

    
    
  2. ログイン画面から実行。

    oddtbs=> \i emp_insert012.sql
    ...
    
  3. 確認

    oddtbs=> select * from emp;
      code  |   name   | gender | age |   tel
    --------+----------+--------+-----+---------
            | 鈴木義男 |        |     | 11-1111
     564002 | 斎藤洋子 |        |     |
            | 山田美樹 |        |  33 |
     564004 | 田中秀明 |        |     | 44-4444
    (4 rows)
    

NULL値との比較

基本的にNULLは = などの演算子では比較しても無意味なので、IS NULLIS NOT NULLという特殊な演算子で比較する。

ログイン画面から実行。

oddtbs=> select * from emp where code = null;
 code | name | gender | age | tel
------+------+--------+-----+-----
(0 rows)

oddtbs=> select * from emp where code is null;
 code |   name   | gender | age |   tel
------+----------+--------+-----+---------
      | 鈴木義男 |        |     | 11-1111
      | 山田美樹 |        |  33 |
(2 rows)

oddtbs=> select * from emp where code is not null;
  code  |   name   | gender | age |   tel
--------+----------+--------+-----+---------
 564002 | 斎藤洋子 |        |     |
 564004 | 田中秀明 |        |     | 44-4444
(2 rows)

INSERT,UPDATEでのNULL値の使用

NULLはINSERTやUPDATEのなかでは通常の値と同じように扱うことができる。

  1. 次のSQLをファイルとして作成。(emp_insert013.sql)

    
    
  2. ログイン画面から実行。

    oddtbs=> \i emp_insert013.sql
    ...
    
  3. ログイン画面から実行。

    oddtbs=> select * from emp;
      code  |   name   | gender | age |   tel
    --------+----------+--------+-----+---------
            | 鈴木義男 |        |     | 11-1111
     564002 | 斎藤洋子 |        |     |
            | 山田美樹 |        |  33 |
     564004 | 田中秀明 |        |     | 44-4444
    (4 rows)
    
    oddtbs=> update emp set tel = null;
    UPDATE 4
    oddtbs=> select * from emp;
      code  |   name   | gender | age | tel
    --------+----------+--------+-----+-----
            | 鈴木義男 |        |     |
     564002 | 斎藤洋子 |        |     |
            | 山田美樹 |        |  33 |
     564004 | 田中秀明 |        |     |
    (4 rows)