「SQLコーディングスタイル」の版間の差分

提供:MoodleDocs
移動先:案内検索
27行目: 27行目:
==パラメータプレースホルダ Parameter placeholders==
==パラメータプレースホルダ Parameter placeholders==


All variable query parameters must be specified via placeholders. It is possible to use three different types of placeholders: :named, ? and $1. It is recommended to use named parameters if there is more than one parameter.
すべての変数クエリパラメータはプレースホルダで指定してください。All variable query parameters must be specified via placeholders. It is possible to use three different types of placeholders: :named, ? and $1. It is recommended to use named parameters if there is more than one parameter.


<code php>
<code php>

2021年2月11日 (木) 15:12時点における版

作成中です - Mitsuhiro Yoshida (トーク)

このページでは複雑なデータベースクエリに関する推奨コーディングスタイルを説明します。

完全なSQLクエリは$DB->get_records_sql()、$DB->get_recordset_sql()または$DB->execute()で使用されます。SQLフラグメントは接尾辞「_select()」を使ったDMLメソッドに使用できます。

= 一般規則

  • パラメータプレースホルダを使用してください!
  • すべてのSQLキーワードは大文字にしてください。
  • すべてのSQLクエリおよびフラグメントは二重引用符で囲んでください。
  • 複雑なSQLクエリは複数行に記述してください。
  • 複数行のSQLクエリは次の句で正しく位置合わせしてください: SELECT, FROM, JOIN, WHERE, GROUPY BY, HAVING.
  • INNER JOINの代わりにJOINを使用してください。
  • RIGHT JOINは使用しないでください。
  • カラムエイリアスには常にASを使用してください。
  • テーブルエイリアスにASを使用しないでください。
  • 値が等しくないことを判定するには「<>」を使用してください。「!=」は使用しないでください。

二重引用符

すべてのSQLクエリおよびフラグメントは二重引用符で囲んでください。また、可能であれば、複数にわたる部分のSQLを結合しないでください。一重引用符はSQLストリングに使用されます。また、視覚的な強調およびIDE内でのSQLコードの完了に役立ちます。

$records = $DB->get_records_select('some_table', "id > ?", array(111));

パラメータプレースホルダ Parameter placeholders

すべての変数クエリパラメータはプレースホルダで指定してください。All variable query parameters must be specified via placeholders. It is possible to use three different types of placeholders: :named, ? and $1. It is recommended to use named parameters if there is more than one parameter.

$sql = "SELECT *

         FROM {some_table}
        WHERE id > :above";

$records = $DB->get_records_sql($sql, array('above'=>111));

インデント Indentation

sql indentation.png

サブクエリ Subqueries

There are no strict rules for subquery indentation, the deciding factor is good readability - see MDLSITE-1914.

関連情報