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

サムネイル SQL

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

ふりかえり

筆者
筆者

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

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

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

A子
A子

本編に入ります!

OR関数の基本構文

筆者
筆者

まずは、基本構文から見ていきましょう!

where 条件1 or 条件2

A子
A子

条件1か条件2のどちらかという意味かな?

筆者
筆者

はい、そうです!

OR は、 「どちらかの条件が当てはまればOK」 という意味を持つ SQL の演算子です。

「条件1が真(true)である」または「条件2が真(true)である」なら、その行を取得する という意味になります。

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

筆者
筆者

実際に、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)
    constraint PK_申請管理情報 primary key (STAFF_NO, APPLI_NO)

);
create table 申請内容の詳細 (
    職員番号          varchar2(10) not null,  -- 親テーブルの STAFF_NO に対応
    申請番号          varchar2(10) not null,  -- 親テーブルの APPLI_NO に対応
    申請内容の詳細    varchar2(100),          -- 申請の詳細内容を格納するカラム
    constraint PK_申請内容の詳細 primary key (職員番号, 申請番号),
    constraint FK_申請内容の詳細 foreign key (職員番号, 申請番号)
        references 申請管理情報 (STAFF_NO, APPLI_NO)
);

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

insert into 申請内容の詳細 (職員番号, 申請番号, 申請内容の詳細)
values ('1001', 'A001', 'レギュラーとハイオク間違えたので、もう一回入れに行きたいです。');
insert into 申請内容の詳細 (職員番号, 申請番号, 申請内容の詳細)
values ('1001', 'A002', 'ガソリン高いから、もっと補助してほしい');
insert into 申請内容の詳細 (職員番号, 申請番号, 申請内容の詳細)
values ('1002', 'A003', 'ハイオク満タンにしちゃった');
insert into 申請内容の詳細 (職員番号, 申請番号, 申請内容の詳細)
values ('1002', 'a003', 'レギュラー満タンにしちゃった');

OR を使って複数の STAFF_NO を検索する

select * from 申請管理情報
where STAFF_NO = '1001' or STAFF_NO = '1003';

STAFF_NO1001 または 1003 のデータを取得します。OR を使うことで、どちらか一方の条件に当てはまれば結果に含まれます。

OR を使って STAFF_NO または DEPARTMENT で検索する

select * from 申請管理情報
where STAFF_NO = '1002' or DEPARTMENT = '営業';

STAFF_NO1002 のデータ、または DEPARTMENT'営業' のデータを取得します。STAFF_NO = '1002' に該当する行 (1002, A003, 2024-02-27, 開発1002, a003, 2024-01-27, 開発) が含まれます。

DEPARTMENT = '営業' に該当する行 (10011003 のデータ) も取得されます。

OR を使って LIKE で部分一致検索する

select * from 申請内容の詳細
where 申請内容の詳細 like '%ハイオク%' or 申請内容の詳細 like '%レギュラー%';

申請内容の詳細ハイオク または レギュラー が含まれるデータを取得します。

'%ハイオク%' は「どこかに ハイオク という文字が含まれていればOK」という意味。

'%レギュラー%' も同様に、レギュラー という単語が含まれるデータを取得します。

OR を使って IN との比較

select * from 申請管理情報
where STAFF_NO in ('1001', '1002') or DEPARTMENT = '営業';

STAFF_NO1001 または 1002 のデータ、もしくは DEPARTMENT'営業' のデータを取得します。

IN ('1001', '1002')STAFF_NO = '1001' or STAFF_NO = '1002' と同じ意味です。

まとめ

筆者
筆者

or演算子について解説しました。

orを使うと「どちらか一方の条件に合致する」データを取得できます。

次回もお楽しみに!

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

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

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

コメント

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