SQL


1. [必須] count(*) の代わりに count(column name) または count(constant) を使用しないでください。count(*) は、SQL 92 で定義された行数をカウントするための標準構文です。データベースとは何の関係もありませんし、NULL と非 NULL も関係ありません。

注: count(*) は NULL 値を持つ行をカウントしますが、count(列名) はこの列内の NULL 値を持つ行をカウントしません。


2. [必須] count(distinctcol) NULL を除く一意の列の数を計算します。 count(distinctcol 1,col 2 ) は、列の 1 つがすべて NULL の場合、他の列の値が異なる場合でも 0 を返すことに注意してください。


3. 【必須】あるカラムの値が全てNULLの場合、count(col)の戻り値は 0 ですが、sum(col) の戻り結果は NULL であるため、sum() を使用する場合は NPE 問題に注意する必要があります。

良い例: 次のメソッドを使用すると、合計の NPE 問題を回避できます: SELECT IF(ISNULL(SUM(g)),0, SUM(g)) FROM table;


4. [必須] ISNULL() を使用して、NULL 値かどうかを判断します。注: NULL と任意の値を直接比較すると、NULL になります。

注:

1) NULL<>NULL の戻り結果は false ではなく、NULL です。

2) NULL=NULL の戻り結果は NULL であり、true ではありません。

3) NULL<>1 の戻り結果は NULL であり、true ではありません。

5. [必須] コードでページング クエリ ロジックを記述する場合、count が 0 の場合は、後続のページング ステートメントの実行を避けるために、それを直接返す必要があります。


#6. [必須] 外部キーとカスケードは使用できません。すべての外部キーの概念はアプリケーション層で解決する必要があります。

説明: (概念の説明) Student テーブルの Student_id が主キーであり、Grades テーブルの Student_id が外部キーです。 student テーブルのstudent _ id を更新し、同時に成績テーブルのstudent _ id の更新をトリガーする場合、それはカスケード更新です。外部キーとカスケード更新は、単一マシンでの同時実行性が低い場合に適していますが、分散型クラスターや同時実行性が高いクラスターには適していません。カスケード更新は強力にブロックされ、データベース更新ストームのリスクがあります。外部キーはデータベースの挿入速度に影響します。

7. 【必須】ストアドプロシージャの使用は禁止されており、ストアドプロシージャはデバッグや拡張が難しく、移植性がありません。


8. [必須] データを改訂したり、レコードを削除または変更するときは、誤って削除しないように最初に選択する必要があります。確認後にのみ、 update ステートメントを実行できます。 。


9. 【推奨事項】 回避できる場合は回避、回避できない場合は慎重に評価する必要があるin 操作後のコレクション要素数は 1,000 以内に制御されます。


10. [参考] グローバリゼーションの必要がある場合、すべての文字の保存と表現は utf -8 でエンコードされ、文字カウント方法

注:

手順 :

SELECT LENGTH("作業しやすい"); 12

に戻りますSELECT CHARACTER _ LENGTH("作業しやすい"); 4

に戻ります絵文字を使用する場合は、保存に utfmb 4 を使用してください。utf-8 エンコードとの違いに注意してください。


11. [参考] TRUNCATE TABLE は DELETE よりも高速で、使用するシステム リソースとトランザクション ログ リソースが少なくなりますが、TRUNCATE にはトランザクションがなく、トリガーがトリガーされません。事故を引き起こす可能性があるため、開発コードでこのステートメントを使用することはお勧めできません。

注:

TRUNCATE TABLE は、WHERE 句のない DELETE ステートメントと機能的には同じです。


###