DEV Community

Cover image for Ma Première Expérience avec SQL Server et T-SQL : Création d'une Base de Données pour une Bibliothèque
nuha
nuha

Posted on

Ma Première Expérience avec SQL Server et T-SQL : Création d'une Base de Données pour une Bibliothèque

Ce guide vous expliquera comment initialiser une base de données SQL Server. Il couvrira la création d'un code de base pour cela. Vous pouvez trouver le code source de ce tuto à la fin du guide.

En tant que passionné de bases de données relationnelles, principalement avec MySQL, j'ai écrit des applications en utilisant MySQL (à la fois sur Visual Basic et avec php). Aujourd'hui, je me lance un nouveau défi : apprendre SQL Server pour créer des applications. Dans ce tutoriel, vous découvrirez les bases d'une base de données T-SQL et apprendrez à écrire des triggers avec SQL Server. Nous allons créer une application de base de données simple pour gérer une bibliothèque et les emprunts, ainsi que concevoir des procédures stockées, des triggers et des vues. Vous serez guidé à travers les opérations CRUD pour une meilleure compréhension.

introduction:

SQL Server est un système de gestion de base de données relationnelle développé par Microsoft. Dans cet article, nous allons explorer les bases de SQL Server en utilisant T-SQL (Transact-SQL), un langage de programmation qui étend SQL avec des fonctionnalités supplémentaires. Nous allons créer une base de données pour une bibliothèque, y insérer des données, et effectuer diverses opérations de gestion des données.

Présentation de l'outil nécessaire : SQL Server Management Studio (SSMS)

Pour commencer à travailler avec SQL Server et T-SQL, il est essentiel d'avoir SQL Server Management Studio (SSMS). C'est un environnement intégré pour la gestion de l'infrastructure SQL Server
Image description

Création de la Base de Données et des Tables

Pour ce projet, j'ai créé une base de données simple appelée Biblio pour gérer les informations d'une bibliothèque. L'objectif était de mettre en place les tables nécessaires pour stocker les données sur les auteurs, les livres, les inscrits et les emprunts. Ensuite, j'ai rempli ces tables avec des données et j'ai réalisé plusieurs opérations pour gérer ces données, telles que les mises à jour et les suppressions.

J'ai commencé par créer les tables suivantes :

auteur : pour stocker les informations sur les auteurs.
livre : pour stocker les informations sur les livres.
inscrit : pour stocker les informations sur les personnes inscrites à la bibliothèque.
emprunt : pour enregistrer les emprunts de livres par les inscrits.
Voici le code T-SQL que j'ai utilisé pour créer ces tables :

CREATE DATABASE Biblio;

CREATE TABLE auteur (
    IDauteur INT PRIMARY KEY IDENTITY,
    nom VARCHAR(100),
    prenom VARCHAR(100),
    naissance DATE
);

CREATE TABLE livre (
    IDlivre INT PRIMARY KEY IDENTITY,
    titre VARCHAR(200),
    genre VARCHAR(50),
    IDauteur INT FOREIGN KEY REFERENCES auteur(IDauteur)
);

CREATE TABLE inscrit (
    IDinscrit INT PRIMARY KEY IDENTITY,
    nom VARCHAR(100),
    prenom VARCHAR(100),
    dateinscription DATE
);

CREATE TABLE emprunt (
    IDemprunt INT PRIMARY KEY IDENTITY,
    IDinscrit INT FOREIGN KEY REFERENCES inscrit(IDinscrit),
    IDlivre INT FOREIGN KEY REFERENCES livre(IDlivre),
    dateemprunt DATE,
    dateretour DATE
);

Enter fullscreen mode Exit fullscreen mode

Insertion de Données

Nous allons maintenant insérer des données dans nos tables.

Données pour les auteurs

INSERT INTO auteur (nom, prenom, naissance) VALUES
('Oster', 'Jean-Philippe', '1980-06-15'),
('Nothomb', 'Amélie', '1966-07-13'),
('Musso', 'Guillaume', '1974-06-06'),
('Levy', 'Marc', '1961-10-16'),
('Slimani', 'Leïla', '1981-10-03');
GO

Enter fullscreen mode Exit fullscreen mode

Données pour les livres

INSERT INTO livre (titre, genre, IDauteur) VALUES
('Empreinte de lange', 'Roman', 1),
('Hygiène de l’assassin', 'Roman', 2),
('La Fille de Brooklyn', 'Thriller', 3),
('Et si c’était vrai', 'Roman', 4),
('Chanson douce', 'Roman', 5);
GO

Enter fullscreen mode Exit fullscreen mode

Données pour les inscrits

INSERT INTO inscrit (nom, prenom, dateinscription) VALUES
('El Amrani', 'Omar', '2024-01-15'),
('Bennani', 'Sara', '2024-02-20'),
('Fassi', 'Youssef', '2024-03-05'),
('Lahlou', 'Imane', '2024-04-10'),
('Alaoui', 'Rachid', '2024-05-15'),
('El Mansouri', 'Nadia', '2024-06-20'),
('El Idrissi', 'Khalid', '2024-07-25');
GO

Enter fullscreen mode Exit fullscreen mode

Simples Requêtes pour vérifier

SELECT * FROM auteur;
GO

SELECT * FROM livre;
GO

SELECT * FROM inscrit;
GO

Enter fullscreen mode Exit fullscreen mode

Pour la Gestion des Emprunts

Nous allons maintenant gérer les emprunts de livres.

Insertion des emprunts

INSERT INTO emprunt (IDinscrit, IDlivre, dateemprunt, dateretour) VALUES
(1, 1, '2024-06-01', '2024-06-15'),
(2, 2, '2024-06-05', '2024-06-20'),
(3, 3, '2024-06-10', '2024-06-25'),
(4, 4, '2024-06-15', '2024-06-30'),
(5, 5, '2024-06-20', '2024-07-05'),
-- Plus d'exemples...
(7, 3, '2024-09-30', '2024-10-15'),
(1, 4, '2024-10-01', '2024-10-16'),
(2, 5, '2024-10-05', '2024-10-20');
GO

Enter fullscreen mode Exit fullscreen mode

Sélection des livres actuellement empruntés

SELECT titre, dateretour
FROM livre L
JOIN emprunt E ON L.IDlivre = E.IDlivre
WHERE E.dateretour IS NULL;
GO

Enter fullscreen mode Exit fullscreen mode

Mise à Jour et Suppression de Données

pour le reste des opérations CRUD:

- Mise à jour d'un emprunt

UPDATE emprunt 
SET dateretour = '2024-08-15' 
WHERE IDemprunt = 10;
GO

SELECT * FROM emprunt;
GO

Enter fullscreen mode Exit fullscreen mode

- Suppression d'un inscrit

DELETE FROM inscrit 
WHERE IDinscrit = 44;
GO

Enter fullscreen mode Exit fullscreen mode

Création de Vues

Pour simplifier l'accès à certaines informations, j'ai créé des vues et des procédures stockées. Voici un exemple de vue pour afficher les livres actuellement empruntés :

CREATE VIEW currbook AS
    SELECT E.IDemprunt,
           I.IDinscrit, I.nom, I.prenom,
           L.IDlivre, L.titre, L.genre,
           E.dateemprunt, E.dateretour
    FROM emprunt E
    JOIN inscrit I ON E.IDinscrit = I.IDinscrit
    JOIN livre L ON E.IDlivre = L.IDlivre
    WHERE E.dateretour > GETDATE();
GO

-- Utilisation de la vue
SELECT * FROM currbook;
GO

Enter fullscreen mode Exit fullscreen mode

Création de Procédures Stockées

première procédure AJTinscrit pour Ajouter un nouvel inscrit

CREATE PROCEDURE AJTinscrit
    @nom VARCHAR(100),
    @prenom VARCHAR(100),
    @dateinscription DATE
AS
BEGIN
    INSERT INTO inscrit(nom, prenom, dateinscription) 
    VALUES (@nom, @prenom, @dateinscription);
END;
GO

-- Exécution de la procédure
EXEC AJTinscrit @nom = 'ech', @prenom = 'nouha', @dateinscription = '2024-07-18';
GO

-- Vérification
SELECT * FROM inscrit;
GO

Enter fullscreen mode Exit fullscreen mode

2ème procédure AJTemprunt pour ajouter des nouveaux emprunts

CREATE PROCEDURE AJTemprunt
    @IDinscrit INT,
    @IDlivre INT,
    @dateemprunt DATE
AS
BEGIN
    INSERT INTO emprunt (IDinscrit, IDlivre, dateemprunt)
    VALUES (@IDinscrit, @IDlivre, @dateemprunt);
END;
GO

-- Exécution de la procédure
EXEC AJTemprunt @IDinscrit = 7, @IDlivre = 2, @dateemprunt = '2024-07-18';
GO

Enter fullscreen mode Exit fullscreen mode

3ème procédure : RTNlivre
pour mettre à jour les dates de retour des livres.

CREATE PROCEDURE RTNlivre
    @IDemprunt INT,
    @dateretour DATE
AS
BEGIN
    UPDATE emprunt 
    SET dateretour = @dateretour 
    WHERE IDemprunt = @IDemprunt;
END;
GO



Enter fullscreen mode Exit fullscreen mode

Conclusion et Prochaines Étapes

Ce fut une expérience enrichissante de travailler avec SQL Server et T-SQL. Je suis excitée de continuer à explorer ces technologies et de vous montrer comment j'implémenterai cette base de données dans une application réelle.

Je prévois de publier une deuxième partie de cet article dans les prochains jours, où je vous expliquerai comment créer des déclencheurs et indexes et aussi comment intégrer cette base de données dans une application. Restez à l'écoute pour plus de détails !

N'hésitez pas à partager vos commentaires ou questions ci-dessous. Merci de votre lecture !

Top comments (0)