SELECT文の基本

SELECT文の基本

データベースに対する操作の中で、もっとも頻度が高いのは、テーブルからデータを取り出す操作です。データの取り出し方にはさまざまな方法がありますが、そのすべてを「SELECT」という1つの命令で表します。

SELECT命令の基本的な構文は、次のようになります。
---------------------------------------------------
SELECT 列名1, 列名2, ・・・, 列名n FROM テーブル名 WHERE 条件
---------------------------------------------------

「列名1」などの部分では、テーブルから取り出したい列を指定します(この操作は、射影(第1回:リレーショナルデータベースの基本)に当たります)。また、テーブル内のすべての列を取り出す場合は、列名として「*」を指定します。

「テーブル名」の部分には、データを取り出す元のテーブル名を指定します。そして、最後の「条件」の部分には、行を取り出す際の条件を指定します(この操作は、選択(前回記事参照)に当たります)。条件を指定せずにすべての行を取り出す場合は、「WHERE 条件」の部分を省略します。

例えば、図2-1の上半分のようなaddress(住所録)テーブルがあるとします。この時に、「sex」列の値が「男」の行を取り出し、また「name」と「sex」の列だけを取り出したいとします。この場合のSELECT文は、以下のように書きます。

---------------------------------------------------
SELECT name, sex FROM address WHERE sex = '男'
---------------------------------------------------

上の例ではSQLを1行で書きました。しかし、複雑なSQLになると、1行で書くには長くなりすぎ、読みにくくなる場合があります。その時は、途中に改行を入れて、複数の行に分けることもできます。

例えば、前述のSELECT文は、次のように書いても動作します。
---------------------------------------------------
SELECT name, sex
FROM address
WHERE sex = '男'
---------------------------------------------------

比較演算子を使って条件を指定する

SELECT文では、さまざまな方法で条件を指定することができます。その中で、もっとも基本になるのは、「比較演算子」を使って条件を指定する方法です。

比較演算子とは、「=」や「>」など、値が等しい/等しくないことや、値の大小関係などを使って、条件を表すための記号のことです。「列名 比較演算子 値」のような条件式を書いて、列と値との関係を条件として指定します。一般的なRDBMSでは、図2-2のような比較演算子を使うことができます。

比較対象の値が文字列であるときは、その文字列の前後を「'」で囲むことが一般的です。また、文字列を「>」の比較演算子で比較する場合、文字コード(個々の文字につけられた番号)の順で後ろになる文字ほど大きいとみなされることが一般的です。

2つの条件を同時に判断して、両方が満たされている行だけを取り出したいこともあります。その場合は、2つの条件の間を「AND」というキーワードで結びます。

また、2つの条件のうち、どちらか1つが満たされている行だけを取り出したいこともあります。その場合は、2つの条件の間を「OR」というキーワードで結びます。

例えば、図2-3の上半分のようなaddressテーブルがあるとします。そして、このテーブルから、「30歳以上の男性」の行を取り出し、その「name」と「age」の列を取り出したいとします。

「30歳以上の男性」を取り出すには、「『age』列の値が30以上」と「『sex』列の値が『男』」の2つの条件を同時に満たすことが必要です。したがって、この処理をSELECT文に表すと、次のようになります。
---------------------------------------------------
SELECT name, age
FROM address
WHERE age >= 30 AND sex = '男'
---------------------------------------------------

この記事のキーワード :

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30