【初学者必見!】SQLの基本、実務使用例を徹底解説!削除フラグ編

サムネイル SQL

※この記事にはプロモーションが含まれています。

ふりかえり

筆者
筆者

本記事は、SQLの基本、実務使用例編になります。

SQLの基礎に関しましては、

【初学者必見!】SQLの超基礎編の記事をご覧くださいませ。

A子
A子

本編に入ります!

削除フラグの活用について

筆者
筆者

削除フラグ(DELETE_FLAG)を活用することで、データを物理的に削除せずに管理する方法について、初心者の方にもわかりやすく解説します。

<削除フラグを使ったSQLの例>

select * from 申請管理情報
where DELETE_FLAG = '0';

A子
A子

削除フラグの値が 0

筆者
筆者

はい、そうです!

削除フラグとは、レコードの削除を論理的に管理するためのカラムです。
このフラグを使用することで、データを実際に削除せずに「削除済み」として扱うことができます。
削除フラグの値が 0 の場合は通常データ(有効)、1 の場合は削除済み(無効)を意味します。

データの復元が可能
誤って削除したデータでも DELETE_FLAG0 に戻せば復元できます。

履歴管理がしやすい
どのデータが過去に使われていたのかを簡単に確認できます。

参照制約を維持できる
物理削除では外部キー制約の影響を考える必要がありますが、削除フラグを使うことで回避できます。

実務レベルの使用例を見ていこう!

筆者
筆者

実際に、SQLを使用してデータを確認していきましょう。

SQLに関しては以下を使用して解説していきます。

create table文、select文、insert文、update文、delete文、

drop table文、につきましては、過去にアップロードした

【初学者必見!】SQLの超基礎編の記事をご覧くださいませ。

A子
A子

目次の、「ふりかえり」のところにそれぞれの記事のリンクが

貼ってあるよ!

または、サイドバーのカテゴリーにSQLがあるから、そちらからでも

参照できます!

[事前準備]今回、実行するSQLの一覧

-- 申請管理情報テーブルの作成
create table 申請管理情報 (
    STAFF_NO varchar2(10) not null,   -- 職員番号 (Staff Number) 
    APPLI_NO varchar2(10) not null,   -- 申請番号 (Application Number) 
    APPLI_DATE date,                  -- 申請年月日 (Application Date) 
    DEPARTMENT varchar2(10),          -- 部署名(Department)
    DELETE_FLAG varchar2(1),          -- 削除フラグ(0:通常データ  1:削除済み)
    constraint PK_申請管理情報 primary key (STAFF_NO, APPLI_NO)

);

insert into 申請管理情報 (STAFF_NO, APPLI_NO, APPLI_DATE, DEPARTMENT, DELETE_FLAG) 
values ('1001', 'A001', TO_DATE('2024-02-25', 'YYYY-MM-DD'),'営業','0');
insert into 申請管理情報 (STAFF_NO, APPLI_NO, APPLI_DATE, DEPARTMENT, DELETE_FLAG) 
values ('1001', 'A002', TO_DATE('2024-02-26', 'YYYY-MM-DD'),'営業','0');
insert into 申請管理情報 (STAFF_NO, APPLI_NO, APPLI_DATE, DEPARTMENT, DELETE_FLAG) 
values ('1002', 'A003', TO_DATE('2024-02-27', 'YYYY-MM-DD'),'開発','0');
insert into 申請管理情報 (STAFF_NO, APPLI_NO, APPLI_DATE, DEPARTMENT, DELETE_FLAG) 
values ('1002', 'a003', TO_DATE('2024-01-27', 'YYYY-MM-DD'),'開発','0');
insert into 申請管理情報 (STAFF_NO, APPLI_NO, APPLI_DATE, DEPARTMENT, DELETE_FLAG) 
values ('1003', 'A004', TO_DATE('2024-02-28', 'YYYY-MM-DD'),'営業','1');

削除されていないデータのみを取得する

select * from 申請管理情報
where DELETE_FLAG = '0';

通常、有効なデータのみを表示したい場合、DELETE_FLAG = '0' の条件をつけます。

データを論理削除する(削除フラグを更新する)

update 申請管理情報
set DELETE_FLAG = '1'
where STAFF_NO = '1001' and APPLI_NO = 'A002';

select * from 申請管理情報

削除するのではなく DELETE_FLAG1 に更新することで、データを論理的に削除できます。

削除済みデータを復元する

update 申請管理情報
set DELETE_FLAG = '0'
where STAFF_NO = '1001' and APPLI_NO = 'A002';

select * from 申請管理情報

誤って削除した場合、削除フラグを 0 に戻すことで復元できます。

まとめ

DELETE_FLAG を活用することで、データを物理削除せずに管理可能。

DELETE_FLAG = '0' のデータのみ取得すれば、通常データのみ表示できる。

DELETE_FLAG = '1' に更新すれば論理削除、0 に戻せば復元できる。

データの整合性を保ちながら、履歴を管理しやすいメリットがある。

筆者
筆者

DELETE_FLAGについて解説しました。

次回もお楽しみに!

この記事を書いた人
たくたく

文系出身・3年目のWeb系エンジニアです。
C#とSQLを得意としています。
同棲生活は2年目に入り、日々仲良く楽しく暮らしています。
プライベートではバイクや車で旅行に行くことが趣味です。
サンリオ好きで、中でもシナモン推しです。
お酒好きとして毎週の晩酌をリラックスタイムにしています。

たくたくをフォローする
SQLエンジニア
シェアする

コメント

タイトルとURLをコピーしました