メインコンテンツへスキップ

VillageSQL is a drop-in replacement for MySQL with extensions.

All examples on this page work on VillageSQL. Install Now →
SELECT はテーブルから行を読み出します。このレッスンでは、その最小限の 役に立つ形を扱います。テーブルを指定し、いくつかの列を指定し、行を受け取る、 というものです。 すべての例は Sakila データベースに問い合わせます。まだロードしていなければ、 まず Sakila をロードし、次に mysql -u root -p sakila でクライアントを開いて、sakila を現在の データベースにしてください。

SELECT の仕組み

COLUMN_LIST は各行に欲しいもので、通常はカンマで区切った列名です。 TABLE_NAME は行の取得元のテーブルです。 文はセミコロンで終わります。クライアントはセミコロンを見つけるまで読み 続けるため、セミコロンのない行では継続プロンプトに留まります。

例

  1. 1 つの列を選択する

film テーブルに、各映画のタイトルだけを求めます。
テーブル内の各行に対して 1 行が返ります。ここでは 1,000 行です。SELECT 自体は何も絞り込みません。どの行を得るかを選ぶのは WHERE の仕事です。

  1. 複数の列を選択する

列名をカンマで区切ります。列は求めた順序で返ります。これはテーブル内で並ぶ 順序と同じである必要はありません。

  1. すべての列を選択する

アスタリスクはテーブル内のすべての列を表します。language テーブルは 6 行 なので、これは完全な結果を表示します。
SELECT * は、知らないテーブルを探索している間は役に立ちます。アプリケー ションコードの中では、列名を明示してください。アスタリスクは、コードが 読むかどうかにかかわらずすべての列をネットワーク経由で送り、誰かが列を追加した 日にコードの足元で形が変わります。

  1. 値を計算する

選択リストは列名でなくてもかまいません。そこに式を置くと、その結果が独立した 列になります。
その 3 番目の列の見出しは入力した式そのもので、正確ですが見栄えが悪いもの です。列エイリアスで自分の好きな名前を付けられます。

人がつまずく 2 つのこと

キーワードは大文字と小文字を区別しません。 SELECT、select、および SeLeCt はすべて実行されます。
このチュートリアルでは、慣例として、キーワードを大文字で、それ以外をすべて 小文字で書きます。この慣例があるのは、長いクエリの形が一目で読めるように するためです。 列名の綴りを誤るとエラーになります。 MySQL は意図を推測せず、空の結果を 返すこともしません。
field list はサーバーが選択リストを呼ぶ名前なので、このメッセージは誤った 名前だけでなく場所も示しています。誤った名前が文の別の場所にあると、同じ エラーの末尾が変わります。探しに行く前に、末尾を読んでください。

まとめ

  • 行を読むには、列のリストを付けた SELECT と、テーブルを付けた FROM を使います。
  • 列は、返してほしい順序で列挙します。
  • 探索中は SELECT * を使い、アプリケーションコードでは列名を明示します。
  • 行ごとに値を計算するには、選択リストに式を置きます。
  • 列名が誤っているときは ERROR 1054 になると考えてください。

関連項目