MENU
👇しうが厳選・おすすめのブログ!
しう
【テニス好きブロガー】 
テニス、読書が好きです。IT企業で学んだこともブログに書いています。高校教諭(テニス部顧問)→IT企業。テニス歴12年。人生をより有意義なものにしたいと思い、ブログを書き始めました。Twitterもしています。
アーカイブ

Oracle DB でのUPDATE文の使い方【しうの備忘録】

Oracle Database(以下Oracle DB)は世界でもトップクラスのシェアを誇るDBです。

 

今回は、Oracle DBでのUPDATE文についてご紹介します。

 

SQL文の知識は他のDBでも使えることが多いです。

また、プログラミング言語と比べて変化も速くないので、ここで身に付けたことは今後も活かせるでしょう。

 

しう

実務では、UPDATE文でテストデータを更新して、改修が上手くいってるか見たりするで!

 

記事の信頼性:未経験からIT企業の受託企業へ転職に成功。現役プログラマーの「しう」がOracle DBのUPDATE文について書いています。

 

目次

UPDATE文【行の更新】

Oracle DB database

UPDATE文での行の更新方法について、ご紹介します!

 

UPDATEで更新する場合、簡単な書き方から複雑な書き方まであります。

 

今回は

 

  • UPDATE文の構文
  • UPDATE文で複数の列の更新
  • サブクエリの利用
  • 相関問い合わせの利用
  • UPDATE文の注意点【全件更新】

の順でご紹介します。

UPDATE文の構文

UPDATE文の構文は、次のようになっています。

 

UPDATE <表名>  SET <列名>=<値> [WHERE 条件式];

 

SET ~ の部分で行をどのような値で更新するか指定します。

 

また、WHEREでどの行を更新するかを指定できます。

 

例として、次のテーブルを更新してみます。

SELECT * FROM student;

 

 

UPDATE文の具体例としては次のようになります。

UPDATE student
  SET student_hight = 175
  WHERE student_nm = '安藤';

 

更新の実行結果をSELECT文で表示した場合、次のようになります。

 

6行目の安藤さんのstudent_hightの項目が更新されたことが確認できますね。

UPDATE文で複数の列の更新

UPDATE文では、複数の列の更新をすることができます!

 

具体例としては次のような文になります。

UPDATE student
  SET student_score = 50,
      student_hight = 175
  WHERE student_nm = '安藤';

 

更新の実行結果としては、次のようになります。

 

ちなみに、「student_score = 50」と「student_hight = 175」の順番を入れ替えた場合も正常に実行できます。

サブクエリの利用

UPDATE文でもサブクエリ(副問い合わせ)の利用ができます!

 

具体的には次のような文になります。

UPDATE student
  SET student_hight = 185
  WHERE student_score > (
    SELECT student_score
      FROM student
      WHERE student_nm = '斎藤'
  );

 

更新を実行した結果としては、次のようになります。

 

初めに

SELECT student_score
  FROM student
  WHERE student_nm = '斎藤'

の部分で、斎藤さんのstudent_score(=80)を選択しています。

 

その後にstudentテーブルのstudent_scoreが80より大きい生徒のstudent_hightを185に更新しています。

 

今回は、student_scoreが80より大きい生徒は田中さんだけなので、田中さんのstudent_hightを185に更新しています。

相関問い合わせの利用

UPDATE文では、相関問い合わせも利用できます!

 

次のような2つのテーブルがあります。

SELECT * FROM student;

 

SELECT * FROM student_score;

 

相関問い合わせの文は具体的には次のようになります。

UPDATE student s
  SET student_score = (
    SELECT student_score
      FROM student_score sscore
      WHERE s.student_nm = sscore.student_nm
  );

 

このようにすることで、studentテーブルとstudent_scoreテーブルのstudent_nmが同じ行のstudent_scoreを更新することができます。

 

実行結果をSELECT文で表示した場合、次のようになります。

 

student_nmが同じ斎藤さん、田中さんのスコアが更新されていることが確認できます。

 

【注意点】
student_nmが同じでない部分のスコアがnullに更新されている部分に注意が必要です。


UPDATEで相関問い合わせを利用した場合、該当するものがない列はnullに更新されます。

気をつけるようにしましょう。

UPDATE文の注意点【全件更新】

UPDATE文の注意点としては、WHERE句でどの行を更新するか指定しないと全件更新してしまうことです!

 

具体的な文としては次のようになります。

UPDATE student
  SET student_hight = 175;

 

この文を実行してしまうと、studentテーブルすべてのデータのstudent_hight =が175に更新されてしまいます。

 

COMMIT前であればロールバックでデータを戻せます。

しかし、COMMITした後であれば変更を戻すことができません。

 

データ数が多い場合は、戻す作業が大変になるので気をつけてくださいね。

 

しう

実務の場合はバックアップを取ってることも多いねんけどな。

しう

ただ、先輩にバックアップから戻すお願いをするのは申し訳ないから、ミスしないように気をつけよな!

まとめ

いかがでしたか?

 

今回は、Oracle DBのUPDATE文について

 

  • UPDATE文【行の更新】
  • UPDATE文の構文
  • UPDATE文で複数の列の更新
  • サブクエリの利用
  • 相関問い合わせの利用
  • UPDATE文の注意点【全件更新】

の順番でご紹介しました!

 

UPDATE文はOracle DB以外でも利用します。

ぜひ、身に付けてみてくださいね!

 

解答・解説に間違いがあれば、お手数ですが下にあるコメントもしくはtwitterよりご連絡ください。

 

☟あわせて読みたい 「しう」のオススメブログ

あわせて読みたい
【独学だけで厳しいと感じたら】無料のプログラミングスクール3選 「しう」はプログラミングの勉強を独学で始めました。 最初はなかなか難しく感じ、配列の利用方法を完ぺきに身につけることさえ、時間がかかりました。   大学のテニス...
あわせて読みたい
ORACLE MASTER Silver SQL 【合格までの勉強計画】 ORACLE MASTER Silver SQLの資格取得に向けて勉強を進めています。   今後同じように勉強をする人に向けて、勉強計画を残しておきます!   実際に試験に合格した後に...
あわせて読みたい
Oracle DB でのINSERT文の使い方【しうの備忘録】 Oracle Database(以下Oracle DB)は世界でもトップクラスのシェアを誇るDBです。   今回は、Oracle DBでのINSERT文についてご紹介します。   SQL文の知識は他のDBでも...
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

【しう】
Java Engineer| 最近はKotlin| 「テニスとJava(プログラミング)のお悩み解決ラボ」運営者| プログラミング・開発現場の学びを主に発信|【経歴】受託系IT企業➪自社開発企業| ∮保有資格∮ : Java Silver,Oracle SQL Silver,基本情報,TOEIC 750,簿記3級

コメント

コメントする

CAPTCHA


目次