1章レコードの取得

本章では基本的なSELECT文を重点的に扱います。本章で扱っている話題の多くはもっと難しいレシピの中で現れるだけではなく、日常のSQLにも使われるため、基本をしっかりと理解することが重要です。

レシピ1.1 テーブルからすべての行と列を取得する

問題

あるテーブル(表)のすべてのデータを表示したい。

解決策

特殊文字*を使い、テーブルに対してSELECTを実行します。

select *
  from emp

解説

SQLでは、*文字には特別な意味があります。この文字を使うと、指定したテーブルのすべての列を返します。WHERE句を指定していないので、すべての行も返します。代わりに、次のようにそれぞれの列を個々に指定することもできます。

select empno,ename,job,sal,mgr,hiredate,comm,deptno
   from emp

対話的に実行するアドホックなクエリ(問い合わせ)では、SELECT *を使う方が簡単です。しかし、プログラムコードを記述する際には、列を個々に指定する方が優れています。パフォーマンスは同じですが、明示的に指定すると、そのクエリが返す列が常にわかります。同様に、このようなクエリの方が第三者にも理解しやすくなります(第三者は、クエリのテーブル内のすべての列を知っている場合もあれば知らない場合もあります)。SELECT *の問題は、クエリがコード内にあり、そのプログラムがクエリから予想とは異なる列を取得する場合にも生じます。少なくとも、すべての列を指定してその列の中の1つ以上がない場合には、発生したエラーの原因が特定の欠損列である可能性が高いでしょう。

レシピ1.2 テーブルから行の一部を取得する

Get SQLクックブック 第2版 ―データベースエキスパート、データサイエンティストのための実践レシピ集 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.