データベース テーブル内の複数の列を更新することは、データベース管理者にとって一般的な現象です。たとえば、別の列の値に基づいて列に新しい値を設定する必要がある場合があります。たとえば、スキル レベルに基づいて給与値を更新できます。スキル レベルは時間の経過とともに数回変化する可能性があるため、そのような列を更新していることに気付くことがあります。
Oracle で UPDATE 句を使用して、特定のテーブル列に新しい値を設定する方法を学びましょう。
Oracle UPDATE ステートメント
既存のテーブルの値を更新するには、次の構文に示すように UPDATE ステートメントを使用します。
UPDATE テーブル名
SET column1 = new_value1,
column2 = new_value2,
...
columnN = new_valueN
WHERE 条件;
どこ:
- Table_name は、更新するテーブルの名前を表します。
- Column_1、column_2、…、columnN は、更新する列の名前を定義します。
- New_value1、new_value2、…new_valueN を使用すると、各列に新しい値を設定できます。
- 条件は、更新される行を制限できるオプションの句です。条件句をスキップすると、ステートメントはテーブル内のすべての行を更新します。
Oracle 更新の例
Oracle で UPDATE ステートメントを使用する方法について、実際の例を見てみましょう。
CREATE TABLE データベース (
名前 VARCHAR2 ( 50 ) ヌルではない、
デフォルトポート番号、
latest_version VARCHAR2 ( 20 ) ヌルではない、
タイプ VARCHAR2 ( 20 ) ヌルではない、
言語 VARCHAR2 ( 20 ) ヌルではない
) ;
指定されたステートメントは、最新のデータベース、デフォルト ポート、最新のデータベース バージョン、データベース タイプ、およびデータベースの構築に使用されるプログラミング言語を格納するテーブルを作成します。
以下に示すように、いくつかのサンプル レコードを挿入できます。
データベースに挿入 ( 名前、default_port、latest_version、 タイプ 、 言語 )
値 ( 「オラクル」 、 1521 、 '19c' 、 '関連した' 、 「SQL」 ) ;
データベースに挿入 ( 名前、default_port、latest_version、 タイプ 、 言語 )
値 ( 「MySQL」 、 3306 、 '8.0' 、 '関連した' 、 「SQL」 ) ;
データベースに挿入 ( 名前、default_port、latest_version、 タイプ 、 言語 )
値 ( 「PostgreSQL」 、 5432 、 '13' 、 '関連した' 、 「SQL」 ) ;
データベースに挿入 ( 名前、default_port、latest_version、 タイプ 、 言語 )
値 ( 「モンゴDB」 、 27017 、 「4.4」 、 「非関係」 、 「ジャバスクリプト」 ) ;
データベースに挿入 ( 名前、default_port、latest_version、 タイプ 、 言語 )
値 ( 「マイクロソフトSQLサーバー」 、 1433 、 「2017」 、 '関連した' 、 「T-SQL」 ) ;
データベースに挿入 ( 名前、default_port、latest_version、 タイプ 、 言語 )
値 ( 「アパッチ・カサンドラ」 、 9042 、 「4.0」 、 「非関係」 、 「ジャバ」 ) ;
データベースに挿入 ( 名前、default_port、latest_version、 タイプ 、 言語 )
値 ( 「レディス」 、 6379 、 「6.0」 、 「非関係」 、 「C++」 ) ;
データベースに挿入 ( 名前、default_port、latest_version、 タイプ 、 言語 )
価値 ( 「マリアDB」 、 3306 、 '10.5' 、 '関連した' 、 「SQL」 ) ;
データベースに挿入 ( 名前、default_port、latest_version、 タイプ 、 言語 )
値 ( 「SQLite」 、 ヌル、 「3.34」 、 '関連した' 、 'C' ) ;
データベースに挿入 ( 名前、default_port、latest_version、 タイプ 、 言語 )
値 ( 「neo4j」 、 7474 、 「4.1」 、 「非関係」 、 「ジャバ」 ) ;
注: SQLite にはデフォルトのポート番号がないため、SQLite データベースの default_port は NULL に設定されます。
結果の表:
Oracle 更新表
Microsoft SQL Server の latest_version、名前、およびデフォルト ポートを更新するとします。以下に示すように、更新クエリを実行できます。
データベースの更新セットする 名前 = 「MS SQL サーバー」 、
default_port = 1400 、
latest_version = 「2022」
どこの名前が好きですか 「マイクロソフトSQLサーバー」 ;
クエリは、名前が LIKE “Microsoft SQL Server” である行を見つけ、name、default_port、および latest_version を新しい値に変更する必要があります。
注: 前のデータはデモンストレーション用です。データベースに関する最新情報が正確に反映されていない場合があります。
更新したら、次のようにデータ変更の新しいテーブルを表示できます。
ご覧のとおり、テーブルには更新された変更が反映されています。
結論
このチュートリアルでは、データベース テーブル内の単一または複数の列を更新できる UPDATE ステートメントに遭遇しました。
ただし、ほとんどのデータベース プラクティスと同様に、潜在的な欠点があります。例えば:
- パフォーマンス – 複数の列で更新を実行すると、単一の列を更新するよりも時間がかかり、リソースを大量に消費します。これは、特に多数の行を複雑なデータで乗算する場合に、より重要になります。
- データの整合性 – 複数の列を更新する際のもう 1 つの懸念事項は、データの整合性です。誤って使用すると、複数の列を更新すると、データが破損したり失われたりする可能性があります。これを軽減するためにさまざまなデータ正規化手法に飛び込むことができますが、常に注意することをお勧めします.更新クエリを本番環境に移行する前に、開発でテストすることもできます。
- クエリの複雑さ – 同様に、更新ステートメントを実行すると、クエリの複雑さが増し、クエリの読み取り、維持、またはデバッグが難しくなる可能性があります。
最終的に、Oracle データベース内の複数の列を更新すると、状況によっては役立つ場合があります。それでも、リスクを最小限に抑えるためのベスト プラクティスの使用を検討することが不可欠です。