【Oracle】列の追加、削除、データ型の変更方法を紹介

※ この記事にはアフィリエイトリンクが含まれます

データベースの管理において、列の追加、削除、データ型の変更は日常的に行われる重要な操作です。データベースを運用していると、新しい情報を格納するために列を追加したり、不要になった列を削除したりする必要が結構あります。

また、システムの追加カスタマイズや、データベースのパフォーマンスの向上などを目的に、テーブルのデータ型を変更することもあります。これらの操作を安全かつ効率的に実行することは、データの整合性やシステムのパフォーマンスを保つうえで非常に重要です。

本記事では、Oracleを対象に、列の追加、削除、データ型の変更方法について解説します。

これらの操作を理解することで、Oracleのデータベース管理をより効果的に行えるようになるかと思います。

列を追加する

Oracleで新しい列をテーブルに追加するには、ALTER TABLE 文を使用します。基本的な構文と具体的な例を見ていきましょう。

基本構文

列を追加する基本的なSQL構文は以下の通りです。

ALTER TABLE table_name ADD column_name data_type;

具体例を見ていきましょう。employees というテーブルに department_name という列を追加します。
データ型は最大50文字の文字列を格納できるVARCHAR2(50)型を使用しています。

ALTER TABLE employees ADD department_name VARCHAR2(50);

上記のSQL文を実行すると、employees テーブルに department_name 列が追加されます。この列にはまだデータは存在せず、新しいデータを入力するまでNULLが設定されます。

デフォルト値を持つ列を追加する

新しい列にデフォルト値を設定することもできます。これにより、既存のデータに対して新たに追加した列が自動的に指定された値を持つようになります。employees テーブルにstatus という列を追加し、そのデフォルト値を'Active' と設定するような構文を見てみましょう。

ALTER TABLE employees ADD status VARCHAR2(10) DEFAULT 'Active';

この場合だと、employees テーブルの既存の行に対しては、自動的に'Active' という値がstatus列に設定されます。新しい行を挿入する際も、特に指定しない限りstatus 列には'Active' が設定されます。

NULL制約の設定

列を追加する際に、その列がNULLを許可するかどうかを指定することができます。employeesテーブルにemailという列を追加し、NULLを許可しないNOT NULL制約を付けている構文を見ていきましょう。

ALTER TABLE employees ADD email VARCHAR2(100) NOT NULL;

この制約を使用することで、email列にNULLが許容されなくなり、データの整合性を保ち重要な情報が書けることを防止することができます。

列を削除する

不要な列を削除します。Oracleでは、列追加の時と同じく、ALTER TABLE文を使用します。こちらも具体例と交えて解説していきます。

基本構文

列を削除する際に使用するSQL構文は次の通りです。

ALTER TABLE table_name DROP COLUMN column_name;

例えば、employees テーブルから department_name 列を削除したい場合、次のように書きます。

ALTER TABLE employees DROP COLUMN department_name;

複数の列を一度に削除する※Oracle 12c 以降のみ対象)

Oracle 12c 以降では、複数の列を一度に削除することができます。次の構文により、複数列の削除ができます。

ALTER TABLE table_name DROP (column_name1, column_name2);

列削除時の注意点

列を削除する際には、いくつかの重要な注意点があります。

  • 事前にバックアップを取っておく
    列の削除は元に戻せない操作であるため、事前にデータベースのバックアップを取ることが非常に重要です。特に、重要なデータが格納されている列を削除する場合には、あとから復元ができるようにバックアップを取っておきましょう。
  • 削除する列の依存関係を確認しておく
    削除する列に対してほかのテーブルやビュー、インデックス、トリガーなどが依存していないかを確認する必要があります。依存しているオブジェクトがある場合、それらオブジェクトが削除または更新が必要なのかを事前に確認しておきましょう。
  • パフォーマンスに影響を及ぼすことがある
    大規模なテーブルで列を削除する際には、パフォーマンスへの影響を考慮する必要があります。特に、インデックスがつけられた列や、頻繁にアクセスされるテーブルの列を削除すると、システム全体に影響を与えることがあります。削除を実行するタイミングも、システムに負荷がかからない時間帯に行うのが望ましいです。

データ型を変更する

Oracleで既存の列のデータ型を変更する場合は、こちらもALTER TABLE 文を使用して、その中にMODIFY 句を指定します。具体例を交えて解説していきます。

基本構文

列のデータ型を変更する基本的なSQL構文は次の通りです。

ALTER TABLE table_name MODIFY column_name new_data_type;

例として、employees テーブルのsalary 列のデータ型をVARCHAR2からNUMBERに変更する構文を見てみましょう。

ALTER TABLE employees MODIFY salary NUMBER(10, 2);

このSQL文を実行することにより、salary列が文字列型から最大10桁で小数点以下2桁の数値型に変更されました。

列のデフォルト値を変更する

列のデータ型を変更する際に、デフォルト値を同時に設定することもできます。status列のデータ型をVARCHAR2(10) からVARCHAR2(20) に変更し、デフォルト値を'Inactive' と設定します。

ALTER TABLE employees MODIFY status VARCHAR2(20) DEFAULT 'Inactive';

このようにデータ型変更と同時にデフォルト値を変更することができます。

まとめ

本記事では、Oracleにおける列の追加、削除、データ型の変更方法について詳しく解説しました。

これらの操作を理解し、実践することでOracleのデータベース管理スキルの向上に役立てましたら幸いです。

Oracleを効率よく学びたい方はUdemyがおすすめ

もっとわかりやすくOracleを学びたいという方には、Udemyがおすすめです。Udemyは、オンライン学習を手軽に始められる便利なプラットフォームで、初心者から上級者向けまで、様々なレベルのSQLコースがそろっています。ですので自身のスキルや目的にあったコースを選ぶことができます。

また、Udemyはコミュニティのサポートもしており、質問や情報交換も行えるため、学習を進めている中で浮かんだ疑問などを解消する手助けを受けることもできます。

IT資格の人気オンラインコース

Udemyは定期的に90%OFFなどの規模でセールを開催しているので、そのタイミングを狙うのもありでしょう。今までにセールが開催された時期をまとめました。

  • 季節ごとのセール
    年末年始や夏季、春季などの特別な時期に大規模なセールを実施
  • 祝日セール
    バレンタインデー、感謝祭、クリスマスなどの祝日にもセールを実施
すぐに役立つスキルを 身につけよう! セール開催中!

コメント