SQL


1. [Obligatoire] N'utilisez pas count(column name) ou count(constant) au lieu de count(*) est la syntaxe standard pour compter les lignes définie par SQL 92. Cela n'a rien à voir avec la base de données. et est lié à NULL et non NULL n'est pas pertinent.

Explication : count(*) comptera les lignes avec une valeur NULL, tandis que count(nom de la colonne) ne comptera pas les lignes avec une valeur NULL dans cette colonne.


2. [Obligatoire] count(distinct col) Calculez le nombre de nombres distincts dans la colonne sauf NULL. Notez que count(distinct

col 1, col 2 ) renverra 0 si l'une des colonnes est entièrement NULL , même si l'autre colonne a une valeur différente.


3. [Obligatoire] Lorsque les valeurs d'une certaine colonne sont toutes NULL, le résultat de retour de count(col) est 0, mais le résultat de retour de sum(col) est

NULL, alors utilisez sum() Faites toujours attention aux problèmes NPE.

Exemple positif : Vous pouvez utiliser la méthode suivante pour éviter le problème NPE de somme : SELECT IF(ISNULL(SUM(g)) ,0, SUM(g))FROM table;


4 . [Obligatoire] Utilisez ISNULL() pour déterminer s'il s'agit d'une valeur NULL. Remarque : Une comparaison directe de NULL avec n’importe quelle valeur est NULL.

Explication :

1) NULL<>Le résultat renvoyé de NULL est NULL, pas faux.

2) Le résultat de retour de NULL=NULL est NULL, ce n'est pas vrai.

3) Le résultat renvoyé par NULL<>1 est NULL, ce n'est pas vrai.

5. [Obligatoire] Lors de l'écriture de la logique de requête de pagination dans le code, si le nombre est 0, il doit être renvoyé directement pour éviter d'exécuter des instructions de pagination ultérieures.


6. [Obligatoire] Les clés étrangères et les cascades ne sont pas autorisées. Tous les concepts de clés étrangères doivent être résolus au niveau de la couche application.

Explication : (Explication du concept) student_id dans la table des étudiants est la clé primaire, puis student_id dans la table des notes est une clé étrangère. Si vous mettez à jour le student_id dans la table student et déclenchez la mise à jour de student_id dans la table des notes en même temps, il s'agit d'une mise à jour en cascade. Les clés étrangères et les mises à jour en cascade conviennent à une faible concurrence sur une seule machine et ne conviennent pas aux clusters distribués et à haute concurrence ; les mises à jour en cascade sont fortement bloquantes et présentent un risque de tempêtes de mise à jour de la base de données qui affectent la vitesse d'insertion de la base de données ;

7. [Obligatoire] L'utilisation de procédures stockées est interdite. Les procédures stockées sont difficiles à déboguer et à développer et n'ont pas de portabilité.


8. [Obligatoire] Lors de la révision des données, de la suppression ou de la modification d'enregistrements, vous devez d'abord sélectionner pour éviter une suppression accidentelle, et ce n'est qu'après confirmation que vous pourrez exécuter l'instruction de mise à jour.


9. [Recommandation] Évitez le fonctionnement s'il peut être évité, vous devez évaluer soigneusement le nombre d'éléments de collecte derrière l'intérieur et le contrôler dans les 1000.

10. [Référence] S'il y a un besoin de globalisation, tous les stockages et représentations de caractères sont codés en utf -8, alors la méthode de comptage de caractères

Remarque :

Instructions :

SÉLECTIONNER LA LONGUEUR ("Easy Work") ) ; Le retour est 12

SELECT CHARACTER _ LENGTH("Easy Work"); Le retour est 4

Si vous souhaitez utiliser des émoticônes, utilisez utfmb 4 pour le stockage, faites attention à la différence entre celui-ci et utf-8. codage.


11. [Référence] TRUNCATE TABLE est plus rapide que DELETE et utilise moins de ressources système et du journal des transactions. Cependant, TRUNCATE n'a pas de transactions et ne déclenche pas de déclencheurs, ce qui peut provoquer des accidents, il n'est donc pas recommandé de l'utiliser. utilisé dans le code de développement cette instruction.

Remarque : TRUNCATE TABLE est fonctionnellement identique à l'instruction DELETE sans clause WHERE.