「SQLコーディングスタイル」の版間の差分
提供:MoodleDocs
Mitsuhiro Yoshida (トーク | 投稿記録) 編集の要約なし |
Mitsuhiro Yoshida (トーク | 投稿記録) 編集の要約なし |
||
(同じ利用者による、間の24版が非表示) | |||
1行目: | 1行目: | ||
このページでは複雑なデータベースクエリに関して推奨コーディングスタイルを説明します。 | |||
完全な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コードの完了に役立ちます。 | |||
<code php> | <code php> | ||
25行目: | 22行目: | ||
</code> | </code> | ||
== | ==パラメータプレースホルダ== | ||
すべての変数クエリパラメータはプレースホルダで指定してください。次の3つの異なるタイプのプレースホルダを使用できます: :named, ?, $1 2つ以上のパラメータがある場合、名前付きパラメータの使用をお勧めします。 | |||
<code php> | <code php> | ||
36行目: | 33行目: | ||
</code> | </code> | ||
== | ==インデント== | ||
[[File:sql_indentation.png]] | [[File:sql_indentation.png]] | ||
== | ==サブクエリ== | ||
サブクエリのインデントには厳密なルールはありません。読みやすさが決め手です - 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));
インデント
サブクエリ
サブクエリのインデントには厳密なルールはありません。読みやすさが決め手です - MDLSITE-1914をご覧ください。