「SQLコーディングスタイル」の版間の差分
提供:MoodleDocs
Mitsuhiro Yoshida (トーク | 投稿記録) 編集の要約なし |
Mitsuhiro Yoshida (トーク | 投稿記録) 編集の要約なし |
||
1行目: | 1行目: | ||
このページでは複雑なデータベースクエリに関して推奨コーディングスタイルを説明します。 | このページでは複雑なデータベースクエリに関して推奨コーディングスタイルを説明します。 | ||
18行目: | 16行目: | ||
==二重引用符== | ==二重引用符== | ||
すべてのSQLクエリおよびフラグメントは二重引用符で囲んでください。また、可能であれば、複数にわたる部分のSQLを結合しないでください。一重引用符はSQLストリングに使用されます。また、視覚的な強調およびIDE内でのSQLコードの完了に役立ちます。 | すべてのSQLクエリおよびフラグメントは二重引用符で囲んでください。また、可能であれば、複数にわたる部分のSQLを結合しないでください。一重引用符はSQLストリングに使用されます。また、視覚的な強調およびIDE内でのSQLコードの完了に役立ちます。 | ||
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));
インデント
サブクエリ
サブクエリのインデントには厳密なルールはありません。読みやすさが決め手です - MDLSITE-1914をご覧ください。