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

提供:MoodleDocs
移動先:案内検索
編集の要約なし
 
(同じ利用者による、間の10版が非表示)
1行目: 1行目:
作成中です - [[利用者:Mitsuhiro Yoshida|Mitsuhiro Yoshida]] ([[利用者・トーク:Mitsuhiro Yoshida|トーク]])
このページでは複雑なデータベースクエリに関して推奨コーディングスタイルを説明します。
 
このページでは複雑なデータベースクエリに関する推奨コーディングスタイルを説明します。


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


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


25行目: 22行目:
</code>
</code>


==パラメータプレースホルダ 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.
すべての変数クエリパラメータはプレースホルダで指定してください。次の3つの異なるタイプのプレースホルダを使用できます: :named, ?, $1 2つ以上のパラメータがある場合、名前付きパラメータの使用をお勧めします。


<code php>
<code php>
36行目: 33行目:
</code>
</code>


==インデント Indentation==
==インデント==


[[File:sql_indentation.png]]
[[File:sql_indentation.png]]


==サブクエリ Subqueries==
==サブクエリ==
 
サブクエリのインデントには厳密なルールはありません。読みやすさが決め手です - MDLSITE-1914をご覧ください。
There are no strict rules for subquery indentation, the deciding factor is good readability - see MDLSITE-1914.


==関連情報==
==関連情報==

2021年2月20日 (土) 15:01時点における最新版

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

完全な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));

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

すべての変数クエリパラメータはプレースホルダで指定してください。次の3つの異なるタイプのプレースホルダを使用できます: :named, ?, $1 2つ以上のパラメータがある場合、名前付きパラメータの使用をお勧めします。

$sql = "SELECT *

         FROM {some_table}
        WHERE id > :above";

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

インデント

sql indentation.png

サブクエリ

サブクエリのインデントには厳密なルールはありません。読みやすさが決め手です - MDLSITE-1914をご覧ください。

関連情報