SQLite - ANDとOR句

こんにちは、データベース愛好家の皆さん!今日は、SQLiteの世界に飛び込み、より複雑で正確なデータベースクエリを作成するのに役立つ2つの強力なオペレータを探求します:AND句とOR句です。あなたの近所の親切なコンピュータ教師として、この旅を案内することを楽しみにしています。那么、仮想のメモ帳を手に取り、始めましょう!

SQLite - AND & OR Clauses

AND句

想像してみてください、巨大な書庫を組織しています。J.K. Rowlingによって書かれたすべての本を探し出し、そして2000年以降に出版された本を見つけたいと思います。ここでAND句が役立ちます!

AND句とは?

AND句は、SQLクエリ内で複数の条件を結合するのに使用されます。結果セットに含まれる行は、ANDで結合されたすべての条件が真である必要があります。

文法

SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 AND condition3 ...;

簡単な「books」テーブルを作成して作業を進めましょう:

CREATE TABLE books (
id INTEGER PRIMARY KEY,
title TEXT,
author TEXT,
publication_year INTEGER,
genre TEXT
);

INSERT INTO books (title, author, publication_year, genre)
VALUES
('Harry Potter and the Goblet of Fire', 'J.K. Rowling', 2000, 'Fantasy'),
('The Da Vinci Code', 'Dan Brown', 2003, 'Thriller'),
('To Kill a Mockingbird', 'Harper Lee', 1960, 'Classic'),
('1984', 'George Orwell', 1949, 'Dystopian'),
('The Hunger Games', 'Suzanne Collins', 2008, 'Young Adult');

さて、AND句を使用して2000年以降に出版されたファンタジー本をすべて見つけましょう:

SELECT title, author, publication_year
FROM books
WHERE genre = 'Fantasy' AND publication_year > 2000;

このクエリは以下の結果を返します:

title                               | author      | publication_year
------------------------------------------------------------
Harry Potter and the Goblet of Fire | J.K. Rowling | 2000

説明:このクエリは、ジャンルが「Fantasy」であり、出版年が2000年以上であるという両方の条件を満たす本だけを選択します。

もう一つの例を試みましょう。J.K. Rowlingによって書かれた2000年に出版されたすべての本を見つけます:

SELECT title, author, publication_year
FROM books
WHERE author = 'J.K. Rowling' AND publication_year = 2000;

このクエリは先ほどと同じ結果を返します。

プロ tip

AND句を一つのクエリ内で必要なだけ使用できます。例えば:

SELECT title, author, publication_year, genre
FROM books
WHERE author = 'J.K. Rowling' AND publication_year = 2000 AND genre = 'Fantasy';

このクエリは前の例に一つ更多信息を追加しています。

OR句

さて、ファンタジー本かスリラー本が読みたくなったとしましょう。ここでOR句が助け舟を出します!

OR句とは?

OR句は、SQLクエリ内で複数の条件を結合するのに使用されます。結果セットに含まれる行は、ORで結合された少なくとも一つの条件が真である必要があります。

文法

SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;

先ほどの「books」テーブルを使用して、ファンタジー本または2005年以降に出版された本を見つけます:

SELECT title, author, publication_year, genre
FROM books
WHERE genre = 'Fantasy' OR publication_year > 2005;

このクエリは以下の結果を返します:

title                               | author           | publication_year | genre
----------------------------------------------------------------------------------
Harry Potter and the Goblet of Fire | J.K. Rowling     | 2000             | Fantasy
The Hunger Games                    | Suzanne Collins | 2008             | Young Adult

説明:このクエリは、ジャンルが「Fantasy」であるか、出版年が2005年を超えるといういずれかの条件を満たす本を選択します。

もう一つの例を試みましょう。J.K. RowlingまたはDan Brownによって書かれたすべての本を見つけます:

SELECT title, author, publication_year, genre
FROM books
WHERE author = 'J.K. Rowling' OR author = 'Dan Brown';

このクエリは以下の結果を返します:

title                               | author       | publication_year | genre
----------------------------------------------------------------------------------
Harry Potter and the Goblet of Fire | J.K. Rowling | 2000             | Fantasy
The Da Vinci Code                   | Dan Brown    | 2003             | Thriller

ANDとORを組み合わせる

ここで非常に興味深い部分に移ります!ANDとORオペレータを同一のクエリ内で組み合わせることができます。しかし、注意が必要です!順序が重要です!

ファンタジー本または2005年以降に出版された本で、Young Adultジャンル以外のものを見つけます:

SELECT title, author, publication_year, genre
FROM books
WHERE (genre = 'Fantasy' OR publication_year > 2005) AND genre != 'Young Adult';

このクエリは以下の結果を返します:

title                               | author       | publication_year | genre
----------------------------------------------------------------------------------
Harry Potter and the Goblet of Fire | J.K. Rowling | 2000             | Fantasy

説明:カッコはここで非常に重要です。カッコはOR条件が最初に評価されることを確保し、その結果をAND条件と結合します。

プロ tip

ANDとORを組み合わせる際は、常にカッコを使用して意図を明確にします。これにより、あなたとSQLiteがクエリの論理を理解しやすくなります。

概要

以下はANDとORオペレータの簡単な参照表です:

オペレータ 説明
AND すべての条件が真の場合にtrueを返す WHERE condition1 AND condition2
OR 少なくとも一つの条件が真の場合にtrueを返す WHERE condition1 OR condition2

ANDオペレータは、すべての基準を満たす場合にのみ本を貸す厳しい司書のようなものです。ORオペレータは、少なくとも一つの基準を満たす場合に本を貸す寛容な友人のようなものです。

これらのオペレータを使用して練習し、間もなくプロのように複雑なクエリを構築できるようになるでしょう!未来のデータベース魔术師、快適なクエリを楽しんでください!

Credits: Image by storyset