Un article d'une série sur la création d'un projet Java (les liens vers d'autres documents se trouvent à la fin). Son objectif est d'analyser les technologies clés, le résultat est d'écrire un robot télégramme. Articles précédents et analyse des devoirs sur les bases de données : 1 , 2 , 3 . À tous ceux qui ont eu la patience et l’endurance, à tous ceux qui ont parcouru ce quatrième article avec moi, bravo. Comme on dit, celui qui marche peut maîtriser la route. Cette semaine sera publié le dernier article sur les bases de données, dans lequel nous parlerons des types de relations et de jointures . Mais avant d’aborder les nouvelles informations, vérifions nos devoirs… Je me sentais vraiment comme un professeur. Ne m’en voulez pas : je n’ai pas de formation pédagogique, c’est sûr. Étant donné que la semaine dernière, une vérification détaillée de la télécommande occupait la part du lion du matériel, j'ai décidé de diviser l'analyse des devoirs et la révision du nouveau matériel en deux parties.
Il nous suffit ensuite de trier notre requête par population et de ne prendre qu'un seul enregistrement. Pour ce faire, vous devez ajouter un opérateur LIMIT à la fin du script et spécifier la quantité requise : $ SELECT * FROM country ORDER BY population DESC LIMIT 1;
Tout est ici plus intéressant, car la demande sera plus complexe, mais aussi plus intéressante. Puisque nous n'avons toujours aucune idée des jointures, nous ne pouvons obtenir que l'ID du pays : $ SELECT country_id, SUM(population) FROM city GROUP BY country_id ORDER BY SUM(population) DESC LIMIT 1; Ici, nous avons fait une chose sympa : nous avons collecté la somme de la population de toutes les villes connues de chaque pays, triée par cette somme et pris le premier élément. Eh bien, c'est génial ? Je suis ravi :D Après cela, vous vous sentez immédiatement comme un gourou des requêtes... (pas pour longtemps, bien sûr))
Dans ce cas, tout sera exactement pareil. La seule différence est que le tri sera inversé, c’est tout. Par conséquent, j'écris simplement des demandes :
$ SELECT country_id, SUM(population) FROM city GROUP BY country_id ORDER BY SUM(population) LIMIT 1;
$ SELECT * FROM country ORDER BY population LIMIT 1; Et voyez le résultat par vous-même !
Là encore, la spécification technique n'est pas exacte, comme si le responsable l'avait écrite... Pourquoi ai-je décidé cela ? Parce qu'on ne sait pas dans quelle table travailler. Mais c'est normal : il n'y a tout simplement pas de tâches dans lesquelles tout sera immédiatement clair et compréhensible. Par conséquent, vous devez lire attentivement les tâches, et si vous avez des questions, posez-les tout de suite ! C'est vrai, une remarque. En tenant compte des données dont nous disposons dans la base de données, nous effectuerons une recherche en utilisant les données des villes. Pour ce faire, écrivez la requête suivante : $ SELECT country_id, AVG(population) FROM city GROUP BY country_id; C'est simple ici : nous utilisons la fonction AVG et regroupons nos fiches de villes par pays.
Il y aura un léger changement ici sur demande. Nous devons ajouter un filtrage par noms avant de procéder au regroupement. Je fais mes devoirs, comme tous les étudiants, avant de publier cet article, et je comprends que ce problème ne peut être résolu sans jointures. Pourquoi? Car en plus de la carte d’identité du pays, nous avons également besoin d’obtenir son nom. Et cela ne peut être fait sans joindre deux tables en un seul enregistrement. Par conséquent, je ferai cette tâche, bien sûr, mais c'est mon montant...))) Je voulais proposer une tâche en utilisant LIKE dans la requête...) $ SELECT ci.country_id, AVG(ci.population ) FROM city ci INNER JOIN country co ON ci.country_id = co.id WHERE co.name LIKE "%a" GROUP BY country_id; Que s'est-il passé ici? Tout d’abord, nous avons joint les enregistrements des tables city et country à l’aide de la clé étrangère country_id, filtrés par noms de pays afin qu’ils se terminent par « a », puis regroupés par country_id.
Ici, il suffit d'utiliser la fonction COUNT et d'ajouter un filtrage sur la population : $ SELECT COUNT(*) from country WHERE population > 4000000 ; En conséquence, nous découvrons qu’il existe 3 pays de ce type. Est-ce exact ? Oui, seule la Moldavie ne franchit pas cette étape.
Pour ce faire, nous devons utiliser l’opérateur ORDER BY que nous connaissons déjà. Mais gardez à l’esprit que par défaut le tri se fait dans l’ordre naturel. Pour les nombres, cela signifie qu'ils sont triés par ordre croissant, pour les chaînes, cela signifie qu'ils sont triés à partir des premiers caractères. Si nous avons besoin d'un tri décroissant, nous avons besoin de l'inverse du tri naturel : $ SELECT * FROM country ORDER BY population DESC;
C’est là que la connaissance de l’ordre naturel s’avérera utile. Comme c'est la valeur par défaut, c'est un jeu d'enfant pour nous : $ SELECT * FROM country ORDER BY name;
En fait, l'analyse des devoirs
Je suis vraiment heureux qu'il y ait des gens qui font du PP et en parlent. C'est cool! Je suis aussi sûr que possible que le simple fait de lire sans consolider les connaissances ne mène à nulle part. Par conséquent, tous ceux qui ont fait ou essayé de faire sont respectés. Je vous rappelle les conditions des tâches :- Comprenez l' opérateur HAVING et écrivez un exemple de requête pour les tables de notre exemple. Si vous devez ajouter des champs ou plusieurs valeurs pour que ce soit plus clair, ajoutez-les. Si quelqu'un le souhaite, écrivez votre exemple de solution dans les commentaires - afin que je puisse également le vérifier si j'ai le temps.
- Installez MySQL Workbench pour travailler avec la base de données via l'interface utilisateur. Je pense que nous avons déjà suffisamment de pratique pour travailler depuis la console. Connectez-vous à la base de données. Si vous utilisez autre chose pour travailler avec la base de données, n'hésitez pas à ignorer cette tâche. Ici et plus loin, j'utiliserai uniquement MySQL Workbench.
- Rédiger les demandes de réception en utilisant nos données :
- le pays le plus petit/le plus peuplé ;
- nombre moyen d'habitants du pays ;
- nombre moyen d'habitants dans les pays dont le nom se termine par « a » ;
- le nombre de pays comptant plus de quatre millions d’habitants ;
- trier les pays par nombre décroissant d'habitants ;
- trier les pays par nom dans l'ordre naturel.
Parlons d'AVOIR
Connaître l'opérateur Avoir peut vous aider à réussir plus d'un entretien où il y aura des problèmes SQL. Il est donc extrêmement important de le comprendre. Il se trouve que vous ne pouvez pas utiliser de conditions pour agréger les fonctions (SUM, MIN, MAX, AVG). De plus, HAVING est utilisé pour les champs regroupés. Qu'est-ce que ça veut dire? Par exemple, si l'on veut obtenir des pays où le nombre moyen d'habitants dans les villes est supérieur à 50 000 habitants, on ne peut pas se passer d'utiliser HAVING. Si je comprends bien, cela est fait parce que l'agrégation se produit après l'exécution de l'instruction WHERE et il est impossible d'y ajouter des valeurs d'agrégation qui seront calculées ultérieurement. Même si jusqu’à présent mes opinions n’apportent pas grand-chose à la compréhension, vous pouvez simplement accepter cela comme un fait et vous en tenir à cela. En programmation, il arrive souvent que si quelque chose n’est pas clair à un moment donné, cela peut très bien signifier que le cerveau ne l’a tout simplement pas encore digéré. Dormez avec cette pensée, et le lendemain tout deviendra plus clair.Installation de MySQL Workbench
Ici et plus loin, j'utiliserai Workbench pour les requêtes. Je vais vous montrer ce dont vous avez besoin pour installer et créer une connexion à la base de données. Il s'agit d'un produit Oracle, il vous suffit donc d'aller sur leur site Web et de sélectionner la version et le système d'exploitation souhaités. Pour ce faire, suivez ce lien : Ici vous pouvez sélectionner exactement le système d'exploitation dont vous avez besoin. Cliquez sur Télécharger , mais au lieu de télécharger, nous verrons cette fenêtre : Ne vous perdez pas, cherchez simplement le bouton appelé Non merci, démarrez simplement mon téléchargement , et le téléchargement commencera. Pourquoi font-ils ça ? Probablement, pour que plus de personnes s'inscrivent auprès d'eux, cela n'est pas important pour nous. Une fois le téléchargement réussi, exécutez le fichier d'installation. Sous MacOS, cela ressemble à ceci : Il suffit de glisser l’icône et le tour est joué, l’installation est terminée. Pas aussi difficile que d’installer MySQL lui-même, n’est-ce pas ? Ou bien nous nous y sommes simplement habitués et sommes devenus plus expérimentés ;) La deuxième partie de cette tâche consiste à établir une connexion à notre base de données. Que faut-il pour cela ? Cliquez sur le signe plus à côté de Connexions MySQL : Dans la fenêtre qui apparaît, saisissez les données nécessaires :- Nom de la connexion - le nom de notre connexion. Écrivez des noms aussi clairs que possible afin qu'il n'y ait aucun problème d'identification plus tard. Je donne à cette connexion le nom JRTB_DB ;
- Nom d'hôte - sera déjà défini comme local 127.0.0.1 (alias localhost). Dans notre cas, rien ne doit être modifié, puisque la base de données est installée sur l'ordinateur, mais si la base de données se trouve ailleurs, alors l'hôte (l'adresse IP de la machine sur laquelle la base de données s'exécute) doit être modifié en conséquence ;
- Nom d'utilisateur - vous pouvez également spécifier votre utilisateur si nécessaire. Si vous n'avez rien ajouté à cette clé, laissez-la inchangée ;
- Mot de passe - cliquez sur Stocker dans le trousseau et définissez exactement le mot de passe que vous avez défini vous-même. J'ai tout laissé simple - root .
GO TO FULL VERSION