JDK5事業拡大のため、新しい仲間を募集しています。→詳しくはこちらMySQLのSELECT文で使用できる構文について説明します。基本程度の構文については説明していません(DISTINCTなど)。referencesFROM句で指定するテーブル名に、いくつかのオプションを付ける事が出来ます。ASテーブルに別名を付けます。INDEXSelect時に使用するインデックスを指定します。INDEXSelect時に使用しないインデックスを指定します。似たような動作をするらしいですが、詳細は不明です。BY節において、カラム名の代わりにカラム位置による指定をする事が出来ます。2上の文は、以下の文と同じです。col2カラム位置は1から始まります。BY句で指定したのと同じように出力レコードがソートされます。BY句にもDESCを使用する事が可能となっています。DESC;各種ヒントSTRAIGHT_JOINテーブル結合の順番を指定します。T1,T2,T3;この場合、T1,T2,T3の順でテーブル結合します。STRAIGHT_JOINキーワードを指定しない場合、結合順はオプティマイザによって決定されます。HIGH_PRIORITY実行するSELECT文の優先順位を、テーブル更新ステートメントよりも優先させます。table_a;この場合、たとえテーブル更新のためにロック解除を待っているステートメントがあっても直ちにSELECT文が実行されます。BYまたはDISTINCTと共に使用します。結果セットが非常に大きくなる事をオプティマイザに通知します。col1;SQL_BUFFER_RESULT結果セットを一時テーブルに強制的に格納します。table_a;SELECT文を実行してから結果セットを開放するまでに時間が掛かる場合、このオプションを指定する事によってSELECT文実行後すぐにテーブルロックを開放することが出来ます。BYまたはDISTINCTと共に使用します。結果セットが小さくなる事をオプティマイザに通知します。col1;SQL_CALC_FOUND_ROWSバージョン4.0.0以降。LIMIT節と共に使用します。100;この場合、返されるレコードは最大100件に制限されます。「LIMIT節を使用しなかった場合に何件のレコードが存在したか」という情報を知りたいときがあります。Webページによる検索画面などで「max件中n件表示」のような表示をしたい場合に役立ちます。先程のSELECT文の後に、以下の文を実行します。FOUND_ROWS();これにより、LIMIT節を使用しなかった場合の全レコード数が取得できます。SQL_CACHE結果をクエリキャッシュに格納するように指示します。SQL_NO_CACHE結果をクエリキャッシュに格納しないように指示します。LIMIT取得するレコードの件数を制限します。200;前者の場合、先頭から最大100件を取得します。後者の場合、51件目のレコードから最大200件を取得します。OUTFILE取得結果をサーバ上のファイルに出力します。'file_path';ファイルパスを相対パスで指定した場合、基準ディレクトリは「$MYSQL_DIR/var/データベース名」(Unix)または「$MYSQL_DIR/data/データベース名」(Windows)になります。既存のファイル名を指定する事は出来ません。上書き指定もありません。デフォルトの出力結果は、タブ区切りのテキストになります。区切り文字やエスケープ処理の動作をカスタマイズする事も出来ます。DUMPFILE取得結果を、区切り文字やエスケープ処理をせずにファイルに出力します。1;SELECT文の結果は1行(1レコード)以下にしなければなりません。この構文は、バイナリデータを出力したい時に役立ちます。UPDATESELECTするレコードが他の更新トランザクションによってロックされている場合、ロックが開放されるまでウェイトを掛けるように指示します。このキーワードを使わない場合、ウェイトは掛からずにトランザクション以前の(もしくはトランザクション中の)レコードが取得されます。