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 つの列を選択する
film テーブルに、各映画のタイトルだけを求めます。
SELECT
自体は何も絞り込みません。どの行を得るかを選ぶのは WHERE
の仕事です。
- 複数の列を選択する
列名をカンマで区切ります。列は求めた順序で返ります。これはテーブル内で並ぶ
順序と同じである必要はありません。
- すべての列を選択する
アスタリスクはテーブル内のすべての列を表します。language テーブルは 6 行
なので、これは完全な結果を表示します。
SELECT * は、知らないテーブルを探索している間は役に立ちます。アプリケー
ションコードの中では、列名を明示してください。アスタリスクは、コードが
読むかどうかにかかわらずすべての列をネットワーク経由で送り、誰かが列を追加した
日にコードの足元で形が変わります。
- 値を計算する
選択リストは列名でなくてもかまいません。そこに式を置くと、その結果が独立した
列になります。
人がつまずく 2 つのこと
キーワードは大文字と小文字を区別しません。SELECT、select、および
SeLeCt はすべて実行されます。
field list はサーバーが選択リストを呼ぶ名前なので、このメッセージは誤った
名前だけでなく場所も示しています。誤った名前が文の別の場所にあると、同じ
エラーの末尾が変わります。探しに行く前に、末尾を読んでください。
まとめ
- 行を読むには、列のリストを付けた
SELECTと、テーブルを付けたFROMを使います。 - 列は、返してほしい順序で列挙します。
- 探索中は
SELECT *を使い、アプリケーションコードでは列名を明示します。 - 行ごとに値を計算するには、選択リストに式を置きます。
- 列名が誤っているときは
ERROR 1054になると考えてください。
関連項目
- 列エイリアス — 計算した列に読みやすい名前を付ける
- MySQL のデータ型の選択 — これらの結果に出てくる列型の意味