Perl入門ゼミPerl入門ゼミテキスト処理、Linuxサーバー管理、Web開発ならPerlフォーラムへログインPerl›モジュール›データベース›DBIx::Custom›hereDBIx::Customの「select」メソッドで行を「選択」するDBIx::Customで、行を選択するにはselectメソッドを使用します。'book');tableにテーブル名を指定します。以下のSQLが発行されます。book;戻り値はDBIx::Custom::Resultオブジェクトで、このオブジェクトを使って行をフェッチすることができます。"\n";}while文を使って、すべての行を1行づつ取り出しています。selectメソッドのオプションselectメソッドではexecuteメソッドのすべてのオプションを使用することができます。加えて以下のオプションを実装しています。column列名を指定するにはcolumnオプションを使用します。]);あるいは、selectメソッドの第一引数として列名を指定することもできます。'book');次のようなSQLが発行されます。columncolumnオプションを使用するとさまざまな方法で列名を指定することができます。columnオプションを省略した場合はすべての列を表す「*」が列名として設定されます。文字列による指定です。'author'(2)配列のリファレンス配列のリファレンスで複数の列を指定できます。'title']次のような列名が生成されます。ハッシュリファレンスハッシュのリファレンスを使ってテーブル名と列名のセットを記述できます。author]}次のような列名が生成されます。"book.title"エイリアスの部分はデータベースに応じて正しくエスケープされます。内部的にはcolumnメソッドを実行しています。(4)配列のリファレンスとハッシュのリファレンスの組み合わせ複数のハッシュリファレンスを配列のリファレンスの中に指定することもできます。name/]}]次のような列名が生成されます。"company.name"次のように文字列とハッシュのリファレンスを配列のリファレンスの要素として混在させることもできます。idIDを使って条件を指定するにはidオプションを使用します。primary_keyが設定されている必要があります。5]たとえば次のようなselectが実行されたとします。'book');これは次のselectと同じです。joinjoin句を指定するにはjoinオプションを指定します。location.id']DBIx::Customのjoin句は少し特別な実装がされていて注意が必要です。selectメソッドはcolumn句とwhere句に指定されているテーブル名を検索して必要なjoinを探索します。必要でないjoin句については、SQLの中には含まれません。columnオプションあるいはwhereオプションでテーブル名が見つからなかった場合はjoin句が連結されないので注意してください。次のようなselectを実行したとします。]);上記ではcolumnオプションでcompanyというテーブル名が登場しています。locationというテーブル名はcolumnオプションにもwhereオプションにも登場していません。join句の中でcompanyテーブルだけを連結する必要があり、locationテーブルは必要がありません。それで次のようなSQLが生成されます。?;selectメソッドはできるだけ自動的にテーブル名を探そうとしますが、複雑なjoin句の場合はできないこともあります。そのような場合は次のように文字列の代わりにハッシュのリファレンスを指定して、必要なテーブル名を明示します。});一般的に言えば、join句の中には二つのテーブル名「テーブル名.列名」という形で含まれている必要があります。using句などを利用する場合はテーブル名が「テーブル名.列名」という形になっていませんので、明示的に指定する必要があります。テーブル名の順番は重要です。連結元のテーブルは左側に、連結先のテーブルは右側にある必要があります。book.company_id通常のSQL文にとってはどちらも意味が同じですが、DBIx::Customにとっては解析結果が異なります。難しい解説でしたが、joinがそのまま記述できることと、必要なjoinだけを選んでくれるという利点はとても大きなものです。join句を自然に記述すれば、解析が失敗するということはまずないと思います。paramwhere句よりも前に出てくる名前付きプレースホルダーのために値を指定するにはparamオプションを使用します。5}たとえばjoin句の中で名前付きプレースホルダーを利用したい場合に利用できるでしょう。prefixselectの直後に文字列を追加したい場合はprefixを使用します。'SQL_CALC_FOUND_ROWS'たとえば以下のようなSQLを発行することができます。tableテーブル名を指定するにはtableオプションを使用します。whereWhere句を記述するにはwhereオプションを使用します。'%Perl%'}]whereオプションwhereオプションですが、次のようにさまざまな形式で指定することが可能です。ハッシュリファレンスによる指定ハッシュリファレンスでWhere句を指定した場合は、等価(=)による比較をandで結んだ条件になります。'Perl'}上記の指定は次のようなWhere句になります。:title)に埋め込まれます。値として配列のリファレンスを指定するとinを使った記述が可能です。'Perl'}上記は次のようなWhere区になります。:title対応する値は名前付きプレースホルダーに埋め込まれます。DBIx::Custom::Whereオブジェクトによる指定DBIx::Custom::Whereオブジェクトを指定することができます。$where_objDBIx::Custom::Whereオブジェクトについては動的なWhere句の生成を見てください。配列のリファレンスによる指定を行うと、DBIx::Custom::Whereオブジェクトを生成することなしに、同様の指定を行うことができます。'%Perl%'}];上記は次の記述と同じ意味を持ちます。文字列で指定した場合は、単純なWhere句が生成されます。null'上記の指定は次のようなWhere句になります。count行の件数を取得するにはcountメソッドを使用します。'Perl'});指定できるオプションはselectメソッドと同じものです。columnには自動的に「count(*)」が設定されます。現在はcountメソッドよりもselectメソッドを使う方法がおすすめです。業務に役立つPerlログ解析など日本語を含むテキスト処理の実践!案内YouTubeでもっと簡単にプログラミングを学ぶならPerlゼミちゃんねるLinuxコマンドを学ぶならLinuxサーバー管理入門Webデザインを学ぶならWebデザイン入門Web開発を始めるななMojoliciousスタートアップブログを作るならGiblogプログラミングの勉強会ならPerl入学式お問合せはこちらPerlは、テキスト処理の記述性とパフォーマンスに優れ、正規表現が言語に組み込まれているプログラミング言語です。Linuxサーバー管理でのフィルタリングプログラム、複数行の文字列を処理、ファイル内容の検索・置換などが得意。Mojoliciousを使ったWebスタートアップも。Perlは、gitやopensslなどUnix/Linuxミドルウェアの支援ツールとして採用されています。このサイトはGiblogで製作されています。