web-dev-qa-db-fra.com

Ces concepts SQL sont-ils destinés aux développeurs débutants, intermédiaires ou avancés?

J'ai récemment appris SQL et je m'entraîne avec MySQL/Postgres et bientôt Oracle DB. J'ai également recherché sur le Web une étude de la "feuille de route" des bases de données mais je n'ai malheureusement pas pu en trouver une.

Je veux comprendre où et pourquoi des concepts de base de données particuliers tombent sur l'échelle du débutant à intermédiaire et avancé. Je pense principalement aux bases de données relationnelles.

Veuillez expliquer comment présenter les compétences énumérées ci-dessous dans une progression de Débutant -> Intermédiaire -> Avancé pour quel niveau de développeur devrait les connaître:

  • Clauses Where
  • Mettre à jour la syntaxe
  • Rejoint
  • Modifier et créer des instructions
  • Tables temporaires
  • Curseurs
  • Index
  • Clés étrangères
  • Contraintes
  • Transactions
  • Sous-requêtes
  • Pivots
  • Fonctions agrégées
  • Profilage
  • OLAP et OLTP
  • Déclencheurs
  • Plans d'exécution
  • Conseils d'exécution
  • Compteurs de performance
  • Normalisation
16
Daniel

Je dirais qu'il y a deux types de choses à savoir en ce qui concerne SQL (c'est vrai pour de nombreuses technologies en fait), il y a des choses techniques spécifiques comme les jointures, les sous-requêtes, les unions, etc. que vous comprenez ou ne comprenez pas, et puis il y a des choses comme la conception de bases de données et la modélisation de données qui a un gradient de compétences, comme l'art. On s'améliore avec le temps avec ces choses plus douces, mais on ne les "connaît" jamais car il n'y a pas "elles fonctionnent comme ça" avec elles.

Cela dit, voici une présentation générale avec laquelle j'irais, et je suis absolument ouvert aux commentaires/réflexions des autres où je peux me tromper.

Débutant

  • Clauses Where (entre, entre, etc.)
  • Mettre à jour la syntaxe
  • Compréhension et utilisation de la jointure interne vs gauche vs droite
  • Syntaxe pour modifier et créer des structures
  • Tables temporaires et leur utilisation
  • Curseurs
  • Idée de base à quoi servent les index, mais pas comment ils fonctionnent
  • Comprendre à quoi servent les clés étrangères et comment les contourner (suppressions en cascade, etc.)
  • Comprend les bases des transactions
  • Comprend les contraintes

Intermédiaire

  • Fonctionnement des index, différence entre les clusters, les non-clusters, etc., ce qu'est une page et leur mise en page
  • Compréhension des sous-requêtes et réflexion sur leur utilisation dans les jointures et les emplacements
  • Pivots
  • Peut réfléchir en rejoignant une table sur elle-même lorsque cela est pertinent
  • Peut générer des rapports de données complexes via des regroupements avec des fonctions d'agrégation
  • Peut effectuer un profilage de base uniquement dans une capacité de surveillance/débogage comme la lecture d'un journal
  • Comprend la différence entre OLAP et OLTP et quand/où utiliser OLAP structures
  • Savoir utiliser les déclencheurs et ne pas les utiliser
  • Comprend les transactions et peut les superposer en gérant les échecs de la pile

Avancée

  • Peut lire un plan d'exécution et comprendre comment les différentes parties de la requête l'affectent
  • Peut régler les requêtes avec des conseils d'exécution sans gâcher les performances (conseils de parallélisme, conseils d'index, conseils de boucle, etc.)
  • Peut profiler et utiliser des traces pour identifier et comprendre les statistiques des exécutions sous charge réelle
  • Sait quelles sont les structures de données sur le disque
  • Peut utiliser des compteurs de performances et comprendre la charge et le comportement de la base de données en les surveillant
  • Savoir comment concevoir un OLAP cube et effectuer une exploration de données avancée avec un
  • Sait comment utiliser les déclencheurs et comment les utiliser en toute sécurité, avec un risque minimal
  • Savoir utiliser les transactions distribuées même avec des couches

C'est tout ce que je pouvais trouver du haut de ma tête. Veuillez laisser des commentaires mentionnant les autres que j'ai manqués ou si j'ai mis quelque chose au mauvais endroit. Je ne suis pas assez avancé pour connaître une énorme liste de techniques avancées pour réprimer heh

20
Jimmy Hoffa

Voici l'échelle que j'utilise lors des entretiens avec les candidats. C'est évidemment mon opinion personnelle, les échelles peuvent facilement varier:

Tout d'abord, je recherche des compétences en base de données, pas spécifiquement "SQL".

Débutant:

  • Connaît la syntaxe SQL de base
  • Peut sélectionner et filtrer les données sur plusieurs tables
  • Comprend les jointures internes/externes/croisées
  • Compréhension vague de la normalisation, de l'indexation, des transactions, du verrouillage

Intermédiaire:

  • Comprend les différences entre les styles procéduraux et déclaratifs pour SQL
  • Expérience avec au moins une extension SQL DB (PSQL, TSQL, etc.)
  • Comprend et peut concevoir une base de données sous une troisième forme normale
  • Comprend et peut implémenter l'indexation
  • Comprend les transactions et peut les utiliser dans une seule base de données
  • Sait quand et comment analyser un plan d'exécution

Avancée:

  • Comprend quand et comment dénormaliser une base de données
  • Comprend comment configurer des transactions distribuées à travers une base de données et des systèmes intégrés
  • Peut définir une base de données pour la haute disponibilité, la récupération de données, etc.
  • Méconnaissance approfondie du fonctionnement interne de chaque moteur DB (au moins deux)
  • Points supplémentaires pour une exposition significative à l'entreposage de données et au reporting
  • Points supplémentaires pour une exposition significative aux variantes de NoSQL, et un ensemble rationnel de critères pour savoir quand utiliser quoi
11
Chris Pitman