JavaRush /Blog Java /Random-FR /Nous analysons les bases de données et le langage SQL - "...
Roman Beekeeper
Niveau 35

Nous analysons les bases de données et le langage SQL - "Projet Java de A à Z"

Publié dans le groupe Random-FR
Un article d'une série sur la création d'un projet Java. Son objectif est d'analyser les technologies clés, le résultat est d'écrire un robot télégramme. La partie introductive est ici . Aloha, ingénieurs logiciels. Aujourd'hui, nous parlons de bases de données et du langage SQL. « Projet Java de A à Z » : analyse des bases de données et langage SQL - 1A qui est destiné cet article ? Oui à tous ceux qui sont intéressés. Certains peuvent commencer leur voyage avec cet article, d'autres pourront se rafraîchir la mémoire de faits intéressants. Cette partie sera purement théorique. Avant de vous expliquer ce que sont les bases de données et la syntaxe SQL, nous devons comprendre et déterminer pourquoi nous allons les étudier. A ce stade, nous parlerons UNIQUEMENT des bases de données SQL : Nous ne considérerons pas NoSQL dans cette série d'articles.

Base de données : qu'est-ce que c'est

« Projet Java de A à Z » : analyse des bases de données et langage SQL - 2Une base de données (ci-après dénommée DB) est un endroit où sont stockées des données structurées , qui peuvent être obtenues à l'aide d'un langage de requête. Les bases de données peuvent non seulement stocker, mais également traiter et modifier des informations en gros volumes. A noter : essayez de modifier rapidement un ensemble de valeurs dans Excel en fonction de certains critères. En principe, rien de compliqué. Pas comme dans notre monde réel non numérisé. Par exemple, renommer des voies, des rues, des villes. Si tout était virtuel et entré dans la base de données, cela serait normalisé, ce ne serait que quelques bagatelles. Dans l’état actuel des choses, de nombreux supports de stockage souffrent du fait qu’ils ne peuvent pas changer automatiquement. Dans ce contexte, SQL pour bases de données est un langage que la base de données comprend et répond en conséquence. Disons que renommer la ville ne serait pas difficile ; renommer Dnepropetrovsk en Dnipro ressemblerait à ceci :
UPDATE city SET name = “Днипро” WHERE id = 1231;
Toutes les requêtes ultérieures adressées au système produiraient déjà le nom dont nous avons besoin.

Pourquoi les bases de données sont-elles nécessaires ?

Comme je l'ai déjà dit, en utilisant des bases de données, vous pouvez stocker des données. Mais quelles sont ces données ? Pour comprendre à l'aide d'un exemple concret, nous pouvons parler d'une application. Par exemple, à peu près le même robot de télégramme. Nous voulons savoir combien de personnes utilisent le bot. Comment cela peut-il être mis en œuvre ? Dans une application Java standard, vous pouvez créer de nombreux éléments uniques - un ensemble, qui stockera le surnom ou l'identifiant de discussion de l'utilisateur. Est-ce que ça va marcher? Volonté. Exactement jusqu'à l'arrêt de l'application Java, et dès son redémarrage, l'ensemble des éléments uniques sera vide. Autrement dit, les données stockées dans l'application en cours d'exécution ont tout simplement disparu. Que peux-tu y faire? Vous pouvez déplacer le stockage de l’état du système (données) depuis une application Java ailleurs. Vous pouvez stocker cela au format CSV dans un fichier standard sur votre ordinateur. Vous pouvez le faire sur une seule ligne dans un fichier séparé. Vous pouvez le faire, puis écraser ces données avant l'arrêt de l'application Java. Bien que la garantie que l’enregistrement réussisse soit loin d’être proche de 100 %, car il suffit de retirer le cordon d’alimentation du serveur et l’enregistrement n’aura pas lieu. Cette approche présente un inconvénient important : il n'existe aucune fonctionnalité permettant d'obtenir, d'agréger et de rechercher des informations au niveau du fichier. Oui, bien sûr, vous pouvez lire un fichier et créer des objets pour celui-ci, mais vous devrez pomper toutes les données dans l'application à CHAQUE fois. Et il peut y en avoir beaucoup, par exemple quelques gigaoctets. Cela peut être évité en stockant les données dans une base de données. Comment? À travers les tables et les relations entre elles. C’est sur cela que sont basées toutes les bases de données relationnelles.

SQL : un langage que les bases de données comprennent

Il existe des systèmes de gestion de bases de données (ci-après dénommés SGBD) et le langage qu'ils comprennent est SQL. SQL est un langage de programmation permettant de manipuler et de gérer des bases de données. Pour comprendre comment cela fonctionne, regardons la figure : « Projet Java de A à Z » : analyse des bases de données et langage SQL - 3l'utilisateur envoie des requêtes SQL au SGBD, le SGBD comprend ce qui doit être fait, le fait, et si la demande visait à obtenir des données, il la renvoie. Par conséquent, en tant que développeurs, nous devons maîtriser le langage de requête SQL. Vous pourriez penser : « Oh, une autre langue. Avec l’aide de Dieu, je comprends à peine Java ici, et vous me proposez immédiatement un autre langage. Ce n'est pas vrai : SQL a été inventé comme langage de spécification d'un SGBD afin que les comptables très éloignés des bases de données et de la programmation en général puissent écrire dans ce langage. Cela signifie que l’apprendre ne sera pas si difficile. L'essentiel est PRATIQUE-PRATIQUE-PRATIQUE. Aujourd’hui, il y aura de la théorie, mais le prochain article portera sur la pratique. Puisqu’une base de données relationnelle est un ensemble de tableaux-tableaux bidimensionnels et de relations entre eux, le travail s’articulera autour d’eux. Si nous parlons d'un exemple, nous pouvons montrer deux tableaux - "Pays" et "Villes" et comment ils sont connectés. « Projet Java de A à Z » : analyse des bases de données et langage SQL - 4À ce stade, il est important pour nous de comprendre que les enregistrements du tableau sont des données sur un objet du monde Java. Par exemple, ces deux tables peuvent être décrites en Java comme ceci :
public class Country {
   private Long id;
   private String name;
}

public class City {

   private Long id;
   private String name;
   private Country country;
   private Integer population;
}
Eh bien, n'est-ce pas beau, hein ? La base de données peut stocker n'importe quel nombre de tables. Dans notre cas, il y en a deux.

Structure du tableau

Je pense que tout le monde a rencontré des tableaux Excel d'une manière ou d'une autre, et vous comprenez les termes ligne et colonne . Dans le cadre des bases de données, on parle davantage d'enregistrements et de champs : « Projet Java de A à Z » : analyse des bases de données et langage SQL - 5Ainsi, il s'avère que chaque objet de la classe City est un enregistrement dans une table de la base de données.

Clé primaire

« Projet Java de A à Z » : analyse des bases de données et langage SQL - 6Il arrive souvent que les champs des bases de données aient les mêmes valeurs. Par exemple, les réseaux sociaux, où l'on peut trouver plusieurs personnes par nom, prénom et même patronyme. Et les bases de données relationnelles nécessitent un champ unique pouvant être utilisé pour accéder à un enregistrement. C'est ce qu'on appelle la première clé ou clé primaire. Généralement, le champ ID(id) est utilisé comme une telle clé - c'est l'abréviation de identifiant. C'est pourquoi vous devez ajouter un champ ID à chaque table .« Projet Java de A à Z » : analyse des bases de données et langage SQL - 7

Clé externe

Dans notre exemple, un tel champ se trouve dans la table City, qui utilise la clé de Country. Et cela fonctionne comme ceci : chaque ville connaît un identifiant d'information unique pour son pays, et si nous le prenons et créons une requête dans la base de données, nous recevrons des informations complètes sur le pays. Comme vous pouvez le voir sur l'image, il existe une relation entre deux tables : « Projet Java de A à Z » : analyse des bases de données et langage SQL - 8Le principe d'une clé étrangère est montré ici.

Quelles sections y a-t-il dans SQL ?

D'ailleurs, lors des entretiens, on leur demande souvent quelles sont les opérations en SQL :
  • DDL (Data Definition Language) est un groupe d'opérateurs qui modifient/créent des tables, leur structure, etc. C'est-à-dire créer une table, la supprimer, créer/supprimer des champs dans les tables ; créer une nouvelle clé primaire et ainsi de suite ;
  • DML (Data Manipulation Language) est un groupe d'opérateurs qui gèrent la modification des données. Ce sont toutes des opérations qui modifient les données dans la base de données : ajouter, obtenir, modifier et supprimer ;
  • DCL (Data Control Language) est un moyen de confirmer les droits des utilisateurs pour effectuer des actions. Opérations pour accorder l'accès et les droits à un utilisateur spécifique afin qu'il puisse effectuer des opérations DDL/DML.

Quels types de données existe-t-il dans SQL

Les tables peuvent stocker et traiter certains types de données. Tout ici sera similaire à ce que nous utilisons en Java. Parlons des principaux. Il n'y en a que trois, nous en ajouterons d'autres selon les besoins et/ou les envies : « Projet Java de A à Z » : analyse des bases de données et langage SQL - 9Comme on peut le voir sur la photo, ce sont :
  • INT - valeurs entières. Utilisé pour un identifiant unique et pour un entier simple ;
  • VARCHAR est notre chaîne ;
  • DATE est notre LocalDate.
Jusqu’à présent, tout est simple, non ? Les types de champs sont spécifiés lors de la création de la table. Il est clair qu'il ne sera pas possible d'écrire une valeur d'un type différent dans le champ.

Que sont les opérateurs SQL

Un opérateur est une commande distincte qui effectue une action. Les opérateurs sont constitués de phrases, elles-mêmes constituées de mots-clés utilisés dans les requêtes. Regardons un exemple : « Projet Java de A à Z » : analyse des bases de données et langage SQL - 10C'est plus intéressant ici, une requête a déjà été construite ici. Que font-ils ici? C'est simple, il est dit : "Prenez trois champs (Nom, Âge et Date de création) de la table Clients, sélectionnez uniquement les enregistrements dont le nom est égal à Roman."

Conclusion

Dans cet article, nous avons commencé à étudier les bases de données. Nous avons compris ce que c'est et pourquoi nous en avons besoin. Nous avons ensuite passé en revue les premiers signes de SQL, dont nous parlerons plus en détail dans le prochain article. Comme d'habitude, je suggère de vous inscrire sur GitHub et de suivre mon compte pour suivre cette série et mes autres projets sur lesquels je travaille.

Devoirs

Pour ajouter de l'intérêt à cette série d'articles sur JRTB, il y aura des devoirs de temps en temps. Par exemple, sans le devoir d'aujourd'hui, le prochain article sera beaucoup plus difficile à comprendre, car il y aura beaucoup de pratique. Par conséquent, la tâche consiste à installer le SGBD MySQL sur votre ordinateur et à vous connecter à la base de données soit via la console, soit via d'autres solutions. Merci à tous d'avoir lu, à bientôt !

Une liste de tous les matériaux de la série se trouve au début de cet article.

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION