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

提供:MoodleDocs
移動先:案内検索
編集の要約なし
編集の要約なし
3行目: 3行目:
このページでは複雑なデータベースクエリに関する推奨コーディングスタイルを説明します。
このページでは複雑なデータベースクエリに関する推奨コーディングスタイルを説明します。


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


== General rules==
== 一般規則 General rules==
* Use parameter placeholders!
* Use parameter placeholders!
* All SQL keywords are in UPPER CASE.
* All SQL keywords are in UPPER CASE.

2021年1月30日 (土) 15:01時点における版

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

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

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

一般規則 General rules

  • Use parameter placeholders!
  • All SQL keywords are in UPPER CASE.
  • All SQL queries and fragments should be enclosed in double quotes.
  • Complex SQL queries should be on multiple lines.
  • Multiline SQL queries should be right aligned on SELECT, FROM, JOIN, WHERE, GROUPY BY and HAVING.
  • Use JOIN instead of INNER JOIN.
  • Do not use right joins.
  • Always use AS keyword for column aliases.
  • Never use AS keyword for table aliases.
  • Use <> for comparing if values are not equals and do not use !=

Double quotes

All sql queries and fragments should be enclosed in double quotes, do not concat SQL from multiple parts if possible. The single quotes are used for sql strings, it also helps with visual highlighting and SQL code completion in some IDEs.

$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.

関連情報