目次
ふりかえり

筆者
本記事は、SQLの基本、実務使用例編になります。
SQLの基礎に関しましては、
【初学者必見!】SQLの超基礎編の記事をご覧くださいませ。

A子
本編に入ります!
ANDの基本構文

筆者
まずは、基本構文から見ていきましょう!
select 列名1, 列名2, ...
from テーブル名
where 条件1
and 条件2
and 条件3 ...;

A子
select,from,where,andだね

筆者
はい、そうです!
AND は 「2つ以上の条件をすべて満たすデータを取得する」 ときに使います。
where の後に 条件 を書きます
and で 複数の条件をつなげます
すべての条件が 「真(TRUE)」 の場合のみ、データが取得されます。
実務レベルの使用例を見ていこう!

筆者
実際に、SQLを使用してデータを確認していきましょう。
SQLに関しては以下を使用して解説していきます。
create table文、select文、insert文、update文、delete文、
drop table文、につきましては、過去にアップロードした
【初学者必見!】SQLの超基礎編の記事をご覧くださいませ。

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', 'レギュラー満タンにしちゃった');
「営業部門の申請情報」を取得する
select STAFF_NO, APPLI_NO, APPLI_DATE, DEPARTMENT
from 申請管理情報
where DEPARTMENT = '営業';

この SQL を実行すると、営業部門の申請情報だけが取得できます。
AND を使って「営業部門で 2024-02-25 以降の申請情報」を取得する
select STAFF_NO, APPLI_NO, APPLI_DATE, DEPARTMENT
from 申請管理情報
where DEPARTMENT = '営業'
and APPLI_DATE >= TO_DATE('2024-02-25', 'YYYY-MM-DD');

この SQL では、以下の条件を満たすデータのみ取得します。
- 営業部門のデータ (
DEPARTMENT = '営業') - 申請日が 2024-02-25 以降 (
APPLI_DATE >= '2024-02-25')
「営業部門の職員で、かつ申請番号が A002 のデータ」を取得する
select STAFF_NO, APPLI_NO, APPLI_DATE, DEPARTMENT
from 申請管理情報
where DEPARTMENT = '営業'
and APPLI_NO = 'A002';

特定の申請番号 (APPLI_NO = 'A002') のみを取得したい場合、さらに AND を追加します。
「営業部門で、かつ 申請番号が ‘A002’ または ‘A004’ のデータ」を取得する
select STAFF_NO, APPLI_NO, APPLI_DATE, DEPARTMENT
from 申請管理情報
where DEPARTMENT = '営業'
and (APPLI_NO = 'A002' or APPLI_NO = 'A004');

この SQL では、以下の条件を満たすデータを取得します。
- 営業部門 (
DEPARTMENT = '営業') - 申請番号が ‘A002’ または ‘A004’ のいずれか (
APPLI_NO = 'A002' or APPLI_NO = 'A004')
「申請内容の詳細を確認する(営業部門 & 2024-02-25 以降)」
select m.STAFF_NO, m.APPLI_NO, m.APPLI_DATE, m.DEPARTMENT, d.申請内容の詳細
from 申請管理情報 m
join 申請内容の詳細 d
on m.STAFF_NO = d.職員番号 and m.APPLI_NO = d.申請番号
where m.DEPARTMENT = '営業'
and m.APPLI_DATE >= TO_DATE('2024-02-25', 'YYYY-MM-DD');

この SQL のポイント:
joinを使って 申請管理情報 (申請管理情報) と 申請内容の詳細 (申請内容の詳細) を結びつける。ANDを使って、営業部門 (DEPARTMENT = '営業') かつ 申請日が 2024-02-25 以降 (APPLI_DATE >= '2024-02-25') の条件を指定。
まとめ

筆者
ANDを使うと、複数の条件を満たすデータのみ取得 できます。
SQL の AND は、データを絞り込むために非常に重要な演算子 なので、ぜひ色々なパターンで試してみてください!
次回もお楽しみに!










コメント