Débuter avec SQL : créer et manipuler sa première base de données
Qu'avons-nous dans la boîte ?
Vous souhaitez vous initier au langage SQL ? Alors, vous êtes au bon endroit, car je vous propose une introduction au langage SQL pour les débutants ! Même s’il existe d’autres langages pour les bases de données, comme le NoSQL, SQL reste surement le plus populaire !
1. C’est quoi le langage SQL ?
SQL (Structured Query Language) est un langage de programmation utilisé pour interagir avec des bases de données relationnelles. Cela signifie que vous pouvez utiliser SQL pour créer, modifier et interroger des bases de données, et les données correspondantes, ainsi que pour contrôler l’accès à ces bases de données (gestion des droits).
SQL est largement utilisé dans le développement de logiciels et de sites Web. Si vous souhaitez vous lancer sur le développement d’un site Web ou de l’analyse de données, c’est important de connaître SQL.
Le langage SQL est basé sur des commandes simples, mais puissantes, qui vous permettent de manipuler des données de différentes manières.
Il existe de nombreuses implémentations différentes de SQL, chacune avec ses propres commandes et fonctionnalités. Cependant, la plupart des implémentations de SQL partagent une syntaxe de base : création, modification, suppression de tables et de valeurs, gestion des droits, création de vues, etc.
En résumé, SQL est un langage essentiel pour tous ceux qui travaillent avec des bases de données relationnelles.
2. SGBDR compatible SQL
Pour utiliser le langage SQL, vous devez mettre en place un SGBDR : un Système de Gestion de Base de Données Relationnelles. Il en existe différents sur le marché, plus ou moins performants, certains open source d’autres propriétaires…
Voici une liste non exhaustive de SGBDR qui supportent le langage SQL :
- MySQL : c’est l’un des SGBDR les plus populaires et il est largement utilisé dans le développement de logiciels et de sites Web.
- Oracle Database : c’est un SGBDR commercial qui offre de nombreuses fonctionnalités avancées et une grande scalabilité.
- Microsoft SQL Server : c’est un SGBDR commercial et propriétaire développé par Microsoft qui est populaire dans l’environnement Windows, bien que l’on puisse l’installer sous Linux également.
- PostgreSQL : c’est un SGBDR open source qui offre de nombreuses fonctionnalités avancées et une grande flexibilité.
- SQLite : c’est un SGBDR léger et open source qui est souvent utilisé dans les applications mobiles et les sites Web. Certaines applications de bureau l’utilisent également.
- MariaDB : c’est un fork de MySQL qui a été créé par les développeurs originaux de MySQL et qui offre une compatibilité avec MySQL.
Il existe de nombreux autres SGBDR qui supportent le langage SQL, chacun avec ses propres fonctionnalités et avantages. Il est important de choisir un SGBDR qui répond à vos besoins spécifiques en termes de performance, de fonctionnalités et de coût.
3. Créer une base de données SQL
Passons à la mise en pratique, où je pars du principe que vous avez déjà mis en place un SGBDR de façon à pouvoir exécuter les commandes qui vont suivre. Par exemple, MySQL sur Debian 11 (voir le lien en fin d’article pour l’installation).
Voici comment créer une base de données et un utilisateur associé en utilisant SQL :
C’est une bonne pratique de créer un utilisateur dédié à une base de données. Ainsi, on utilise cet utilisateur dans l’application/site web et il n’a des droits que sur cette base de données. Le compte root (ou administrateur) dispose de tous les droits.
- Se connecter au serveur SQL en tant que root (administrateur) :
mysql -u root -p
- Créer la base de données « personnes » :
CREATE DATABASE personnes;
Remplacez « personnes » par le nom de votre base de données. Pour information, les instructions MySQL ne sont pas sensibles à la casse.
- Créer l’utilisateur « personnes_user » dans le but de lui ajouter les droits sur la base par la suite :
CREATE USER 'personnes_user'@'localhost' IDENTIFIED BY 'P@ssword';
Remplacez « personnes_user » par le nom d’utilisateur souhaité, « localhost » par l’adresse du serveur SQL (si tout est en local, ce n’est pas nécessaire de changer) et « P@ssword » par le mot de passe souhaité.
- Accordez les privilèges à l’utilisateur « personnes_user » sur la base de données « personnes » :
GRANT ALL PRIVILEGES ON personnes.* TO 'personnes_user'@'localhost';
La commande GRANT permet d’attribuer des droits sur une base de données ou une table. Ici, le fait d’indiquer « GRANT ALL PRIVILEGES » indique que nous donnons tous les droits à cet utilisateur sur la base de données ciblée.
- Rafraîchissez les privilèges pour que les modifications soient prises en compte :
FLUSH PRIVILEGES;
Vous devriez maintenant avoir créé une base de données et un utilisateur associé qui peut se connecter à cette base de données et y accéder ! Félicitations pour ce premiers pas effectué !
4. Ajouter des tables à la base de données
Pour le moment, la base de données est vide ! Nous allons ajouter des tables, ce qui revient à créer un tableau vierge (une table) et lui ajouter des colonnes correspondantes aux propriétés à stocker dans ce tableau. Imaginons la table « identites » avec les colonnes suivantes :
- ID
- Nom
- Prenom
- Age
- Ville
Ce qui correspond à 5 colonnes que nous pourrons alimenter par la suite pour créer une liste d’identité. La colonne « ID » est particulière, car ce sera notre clé primaire (PRIMARY KEY).
Une clé primaire en SQL est une colonne ou un ensemble de colonnes d’une table qui sont utilisées pour identifier de manière unique chaque ligne de la table. Une clé primaire ne peut pas être vide et chaque ligne de la table doit avoir une valeur différente pour la clé primaire. Dans le même esprit, vous pouvez vous renseigner sur les clés étrangères (ce concept n’est pas abordé ici).
Toujours à partir du prompt MySQL, suivez les instructions suivantes.
- Se connecter au serveur SQL en tant que root (administrateur) :
mysql -u root -p
- Sélectionnez la base de données dans laquelle vous souhaitez créer la table, donc ici « personnes » :
USE personnes;
Le message « Database changed » doit être visible dans la console.
- Créez la table en utilisant l’instruction CREATE TABLE :
La commande SQL « CREATE TABLE » sert à créer la table et entre les parenthèses, on déclare les différentes colonnes. Chaque colonne doit disposer d’un type de données approprié selon les données à insérer (par exemple, INTEGER, VARCHAR, DATE, etc.).
Vous pouvez également utiliser d’autres clauses telles que « NOT NULL » pour indiquer que la colonne ne peut pas être vide et « DEFAULT » pour définir une valeur par défaut pour la colonne. Ici, nous allons utiliser l’instruction « PRIMARY KEY » pour déclarer notre clé primaire « id« .
Voici un exemple de requête complète qui crée une table nommée « identites » avec les colonnes évoquées précédemment :
CREATE TABLE identites (
id INTEGER NOT NULL AUTO_INCREMENT,
nom VARCHAR(255) NOT NULL,
prenom VARCHAR(255) NOT NULL,
age INTEGER NOT NULL,
ville VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
Gardez à l’esprit que l’auto-incrémentation (AUTO_INCREMENT) n’est disponible que sur les colonnes de type INTEGER et que vous ne pouvez pas définir plusieurs colonnes comme étant auto-incrémentées dans la même table. La clé primaire « id » auto-incrémentée est utilisée comme identifiant unique pour chaque ligne de la table.
Remarque : vous pouvez utiliser l’instruction ALTER TABLE pour ajouter, modifier ou supprimer des colonnes d’une table existante.
4. Ajouter des données dans une table SQL
Maintenant, on va ajouter des données à cette table « identites » que l’on vient de créer. À chaque fois je vous rappelle la commande pour vous connecter à l’instance MySQL, mais ce n’est pas nécessaire si vous êtes déjà connecté. C’est surtout pour les personnes qui regardent une seule partie de l’article ! 😉
- Se connecter à la base de données en utilisant les informations de connexion appropriées :
mysql -u personnes_user -p
Ici, on utilise le compte utilisateur créé précédemment. Mais on peut aussi utiliser « root ».
- Sélectionnez la base qui contient la table à laquelle vous souhaitez ajouter des données :
USE personnes;
- Ajoutez les données à la table en utilisant l’instruction SQL « INSERT INTO » :
INSERT INTO identites (nom, prenom, age, ville) VALUES ("Musk","Elon",53,"Hillsborough");
Ici, on ajoute une entrée dans la base correspondante à notre cher Elon Musk, âgé de 53 ans et domicilié à Hillsborough. Donc, on ajoute une valeur pour chaque colonne de la table.
Vous devez veiller à utiliser le bon type de données (par exemple, nombre entier, chaîne de caractères, date, etc.) pour chaque colonne et à respecter les contraintes de la table, telles que les clés primaires et étrangères. Ici, l’ID s’auto-incrémente donc on ne le précise pas. On peut ajouter plusieurs valeurs en même temps en faisant ceci :
Vous pouvez également utiliser l’instruction INSERT INTO pour ajouter plusieurs lignes en même temps en utilisant une syntaxe similaire :
INSERT INTO identites (nom, prenom, age, ville) VALUES ("Musk","Elon",53,"Hillsborough"),("Musk","Elon",53,"Hillsborough");
5. Afficher les données d’une base SQL
Voici quelques exemples de requêtes SQL que vous pouvez utiliser si vous êtes débutant et que vous souhaitez apprendre à travailler avec des bases de données relationnelles :
- Afficher toutes les informations contenues dans la table « identites » :
SELECT * FROM identites;
Cette requête permet de sélectionner toutes les colonnes et toutes les lignes de la table « identites ». Voici le résultat :
Vous pouvez également sélectionner des colonnes spécifiques en remplaçant le « * » par les noms de colonnes séparés par une virgule. Par exemple :
SELECT nom,prenom FROM identites;
Nous voyons bien la différence dans le résultat retourné :
- Filtrage de données avec l’aide d’une condition :
SELECT * FROM identites WHERE <conditions>;
Cette requête permet de sélectionner toutes les colonnes et les lignes de la table « identites » qui remplissent une condition spécifique. Par exemple, si vous voulez sélectionner toutes les lignes où la colonne « nom » a la valeur « Musk« , vous pouvez utiliser la requête suivante :
SELECT * FROM identites WHERE nom = "Musk";
- Tri des données :
SELECT * FROM identites ORDER BY nom ASC;
Cette requête permet de sélectionner toutes les colonnes et les lignes de la table « identites » et de les trier par ordre croissant selon la valeur de la colonne « nom« . Vous pouvez également utiliser « DESC » pour trier les données par ordre décroissant. À l’inverse, « ASC » sert à effectuer un tri par ordre croissant.
6. Approfondir son apprentissage du langage SQL
Il existe de nombreuses ressources en ligne qui peuvent vous aider à apprendre le langage SQL, au-delà de l’introduction que je vous propose dans cet article ! Vous pouvez consulter d’autres sites Web pour lire des cours et tutoriels. Quelques pistes :
- Le site Web de la documentation de MySQL : cette documentation fournit une référence complète pour le langage SQL et l’utilisation de MySQL, ainsi que des exemples de requêtes et des tutoriels.
- Le site Web W3Schools : ce site Web populaire propose des tutoriels interactifs sur de nombreux langages de programmation, y compris SQL. Vous pouvez exécuter des requêtes en ligne et voir les résultats immédiatement.
- YouTube : vous pouvez trouver de nombreux tutoriels vidéo sur YouTube qui vous montrent comment utiliser le langage SQL et comment travailler avec des bases de données.
- Livres et manuels
Il est important de pratiquer en utilisant un serveur de base de données et de travailler sur des projets concrets pour vraiment maîtriser le langage SQL.
7. Conclusion
Grâce à cet article de la boîte à tutoriels informatique, vous pouvez débuter avec le langage SQL en créant votre première base de données, votre première table et votre première ligne dans cette table ! Pour mieux comprendre le concept des bases de données, je vous invite à vous documenter sur les modèles MCD et MLD.
Ressources :