頻馬主義

競馬のデータをいろいろ見ていきます

【馬王Z SQL講座】 SELECT文でデータを取得

SELECT文:テーブルのデータを取得する

SQLの初歩はテーブルからデータを取得するSELECT文です。

一番シンプルなSELECT文は

SELECT * FROM [任意のテーブル名];

ですが、これだと指定したテーブルの全レコードを取得しようとします。

馬王Z内のほとんどのテーブルは大量のレコードが入っているため、全レコードを取得するクエリを実行すると処理が終わるまでにかなりの時間がかかったり、場合によっては下図のようなメモリ不足の例外が発生してしまいます。

f:id:mare_ism:20210323050829p:plain

できる限り、そんなクエリは実行しないようにしましょう。

TOP:テーブルの先頭n行を取得する

テーブルの中にどんなデータが入っているか確認するときはTOPを使用します。

SELECTの後ろにTOP n(nは取得したい行数)を記述するとテーブルの先頭n行を取得することができます。

では、競走馬マスタ テーブルから先頭5行を取得してみましょう。

SELECT TOP 5 * FROM 競走馬マスタ;

このクエリを実行すると、下図のような結果が出力されます。*1

f:id:mare_ism:20210323051155p:plain

取得する列を指定する

テーブルにはたくさんの列があります。

先程書いたSELECT文の  *アスタリスク)は「全ての列」という意味になります。

取得したい列を指定するには、 * の代わりに列名を書きます。複数の列を指定したい場合はカンマで区切って列挙します。

では、競走馬マスタ テーブルから

  • 血統登録番号
  • 馬名
  • 生年月日

を5行分取得するクエリを書いてみましょう。

SELECT TOP 5 血統登録番号, 馬名, 生年月日 FROM 競走馬マスタ;

これでもいいのですが、クエリが少し長くなってきました。

横に長いクエリは読みづらいので、可読性を上げるため改行とインデント(文字下げ)を追加します。

SELECT TOP 5
    血統登録番号,
    馬名,
    生年月日
FROM
    競走馬マスタ
;

SQLでは改行やインデントは実行時に無視されるので、どちらのクエリでも同じ結果が得られます。

f:id:mare_ism:20210323052010p:plain

*1:馬王Zのデータ取得状況によっては結果が一致しないことがあります。