SQL - データの更新 (UPDATE)


■内容

Top

■データの更新

Top

■UPDATE 文の基本

Top
■例題
  1. 担当者表(employee)のすべての担当者の給与額(sal)を1.2倍してください。

    • WHERE 句を指定しないと、すべての行が更新対象になります。
    UPDATE employee SET sal = sal * 1.2
    DB20000I  SQL コマンドが正常に終了しました。
    
    SELECT * FROM employee ORDER BY emp_id;
    
    結果表
    EMP_ID      DEPT_ID     EMP_NAME             BIRTHDAY   HIREDATE   SEX         SAL        
    ----------- ----------- -------------------- ---------- ---------- ----------- -----------
              1          10 羽生 章洋            1978-10-10 1990-12-17           1      960.00
              2          10 釜本 喜美子          1975-05-20 1991-02-20           2     1920.00
              3          20 安部 弘江            1974-06-01 1991-02-22           2     1500.00
              4          20 松村 秀和            1970-09-13 1991-04-02           1     3570.00
              5          30 萩原 恵理子          1985-03-16 2008-09-28           2     1500.00
              6          30 岡田 奈緒子          1983-12-24 2007-05-01           2     3420.00
              7          30 井上 尚志            1971-10-17 2000-11-15           1     2940.00
              8          40 西口 麻衣子          1986-12-14 2008-12-03           2     3600.00
              9          40 滝本 順三            1978-04-02 2004-12-18           1     6000.00
             10          40 工藤 新一            1990-02-10 1999-04-01           1     1800.00
             11          90 毛利光太郎           1970-12-31 1990-04-01           1     9600.00
    
      11 レコードが選択されました。
    
  2. 担当者表(employee)の給与額(sal)が5000以上の担当者の給与額(sal)から1000を引いてください。

    UPDATE employee SET sal = sal - 1000 WHERE sal >= 5000
    
    SELECT * FROM employee ORDER BY emp_id;
    
    結果表
    EMP_ID      DEPT_ID     EMP_NAME             BIRTHDAY   HIREDATE   SEX         SAL        
    ----------- ----------- -------------------- ---------- ---------- ----------- -----------
              1          10 羽生 章洋            1978-10-10 1990-12-17           1      960.00
              2          10 釜本 喜美子          1975-05-20 1991-02-20           2     1920.00
              3          20 安部 弘江            1974-06-01 1991-02-22           2     1500.00
              4          20 松村 秀和            1970-09-13 1991-04-02           1     3570.00
              5          30 萩原 恵理子          1985-03-16 2008-09-28           2     1500.00
              6          30 岡田 奈緒子          1983-12-24 2007-05-01           2     3420.00
              7          30 井上 尚志            1971-10-17 2000-11-15           1     2940.00
              8          40 西口 麻衣子          1986-12-14 2008-12-03           2     3600.00
              9          40 滝本 順三            1978-04-02 2004-12-18           1     5000.00
             10          40 工藤 新一            1990-02-10 1999-04-01           1     1800.00
             11          90 毛利光太郎           1970-12-31 1990-04-01           1     8600.00
    
      11 レコードが選択されました。
    
  3. 担当者表(employee)の部門ID(dept_id)が40の担当者の給与額(sal)を、全社員の平均給与額(sal)にしてください。

    UPDATE employee SET sal = (SELECT avg(sal) FROM employee) WHERE dept_id = 40
    ;
    
    SELECT * FROM employee ORDER BY emp_id;
    
    結果表
    EMP_ID      DEPT_ID     EMP_NAME             BIRTHDAY   HIREDATE   SEX         SAL        
    ----------- ----------- -------------------- ---------- ---------- ----------- -----------
              1          10 羽生 章洋            1978-10-10 1990-12-17           1      960.00
              2          10 釜本 喜美子          1975-05-20 1991-02-20           2     1920.00
              3          20 安部 弘江            1974-06-01 1991-02-22           2     1500.00
              4          20 松村 秀和            1970-09-13 1991-04-02           1     3570.00
              5          30 萩原 恵理子          1985-03-16 2008-09-28           2     1500.00
              6          30 岡田 奈緒子          1983-12-24 2007-05-01           2     3420.00
              7          30 井上 尚志            1971-10-17 2000-11-15           1     2940.00
              8          40 西口 麻衣子          1986-12-14 2008-12-03           2     3164.54
              9          40 滝本 順三            1978-04-02 2004-12-18           1     3164.54
             10          40 工藤 新一            1990-02-10 1999-04-01           1     3164.54
             11          90 毛利光太郎           1970-12-31 1990-04-01           1     8600.00
    
      11 レコードが選択されました。
    
  4. 担当者表(employee)のすべての担当者の誕生日(birthday)を空白値にしてください。

    • 空白値にするときは、NULL を代入します。
    UPDATE employee SETbirthday = NULL
    
    SELECT * FROM employee ORDER BY emp_id;
    
    結果表
    EMP_ID      DEPT_ID     EMP_NAME             BIRTHDAY   HIREDATE   SEX         SAL        
    ----------- ----------- -------------------- ---------- ---------- ----------- -----------
              1          10 羽生 章洋            -          1990-12-17           1      960.00
              2          10 釜本 喜美子          -          1991-02-20           2     1920.00
              3          20 安部 弘江            -          1991-02-22           2     1500.00
              4          20 松村 秀和            -          1991-04-02           1     3570.00
              5          30 萩原 恵理子          -          2008-09-28           2     1500.00
              6          30 岡田 奈緒子          -          2007-05-01           2     3420.00
              7          30 井上 尚志            -          2000-11-15           1     2940.00
              8          40 西口 麻衣子          -          2008-12-03           2     3164.54
              9          40 滝本 順三            -          2004-12-18           1     3164.54
             10          40 工藤 新一            -          1999-04-01           1     3164.54
             11          90 毛利光太郎           -          1990-04-01           1     8600.00
    
      11 レコードが選択されました。
    
Top
■実習

  1. 部門表(department)で、部門ID(dept_id)が20以上30以下の部門の場所(loc)を神奈川県川崎市にします。

    => UPDATE ...
    DB20000I  SQL コマンドが正常に終了しました。
    
    SELECT * FROM department ORDER BY dept_id;
    
    DEPT_ID     DEPT_NAME            LOC                  MGR_ID      ADEPT_ID   
    ----------- -------------------- -------------------- ----------- -----------
             10 営業部               東京都千代田区                 1          30
             20 開発部               神奈川県川崎市                 3          30
             30 企画部               神奈川県川崎市                 5          40
             40 管理部               東京都台東区                   8          40
             50 製造部               東京都大田区                   -          50
    
      5 レコードが選択されました。
    
  2. 部門表(department)で、管理部門ID(adept_id)が40の部門の管理者ID(mgr_id)を、従業員表(employee)の中で、最低給与(給与額(sal)の最小値)の担当者の担当者ID(emp_id)にします。

    => UPDATE ...
    DB20000I  SQL コマンドが正常に終了しました。
    
    SELECT * FROM department ORDER BY dept_id;
    
    DEPT_ID     DEPT_NAME            LOC                  MGR_ID      ADEPT_ID   
    ----------- -------------------- -------------------- ----------- -----------
             10 営業部               東京都千代田区                 1          30
             20 開発部               神奈川県川崎市                 3          30
             30 企画部               神奈川県川崎市                 1          40
             40 管理部               東京都台東区                   1          40
             50 製造部               東京都大田区                   -          50
    
      5 レコードが選択されました。
    
Top

■UPDATE文 の構文

Top

inserted by FC2 system