[[info:bdd:accueilbdd|{{ :iconemaison.jpg?nolink&25|Sommaire Bdd}}]] ===== SQLite dans VSCode ===== [Mise à jour le 9/3/2024]

En cours de modification {{ :info:bdd:sqlite.jpg?nolink&250|}} * **Ressources** * Le langage SQL * How To Download & Install SQLite Tools * Command Line Shell For SQLite * **Lectures connexes** * [[info:bdd:basesgene|Wiki - BDDR : généralités]] * [[:info:bdd:sqliteConsole|Wiki - BDDR - SQLite - Requêtes dans la console]] * [[:info:bdd:basesql|Wiki - BDDR - MySQL - Requêtes dans la console]] ---- ==== 1. Présentation ==== Le paragraphe "Programmation" fait référence au projet VSCode contenant la base //sejour.db//.Téléchargeable ici pour tester les exemples * **MCD** {{ :info:bdd:sejours.jpg?nolink |}} Remarque \\ - Chaque client séjourne dans une à plusieurs stations \\ - Chaque station accueille zéro ou plusieurs clients * **MLD** {{ :info:bdd:sejours2.jpg?nolink |}} Remarque : les flèches pointent vers les parents. **SQLITE3** doit être installé sur le PC (voir How To Download & Install SQLite Tools). L'extension SQLite doit être installée dans VSCode. \\ ====2. Programmation ==== {{ :informatique:bdd:sqlitevs1.png?nolink&200|}} === 2.1 Créer une base === {{ :info:bdd:sejour1.png?nolink&150|}} - Créer un **répertoire** et l'ouvrir dans VSCode (Exemple ci-contre : **Sejours**) - Créer un **fichier** avec l'extension **.db** (Exemple : //sejour.db//) L’extension de fichier **.db** contient la base de données créée avec le système de gestion de base de données **SQLite**. \\ === 2.2 Ouvrir la base dans l'explorateur Sqlite === //Exemple// : sélection de sejours.db {{ :informatique:bdd:sqlitevs2.png?nolink|}} Faire un **clic droit** sur le fichier **.db** et sélectionner **Open database** ou **F1 -> SQLite: Open database** et choisir la base de données.L'**explorateur** Sqlite (**SQLITE EXPLORER**) s'ouvre et affiche la base sélectionnée en bas et à gauche de la fenêtre. \\ === 2.3 Se connecter à la base === - Dans un **nouveau projet**, cliquer sur {{:info:bdd:sqlitechoix.png?nolink|}} dans la barre d'état et sélectionner **SQLite**. Dans un **projet existant**, cliquer sur un fichier **.sql** pour faire apparaître les données dans la barre d'état.\\ - Cliquer sur {{:info:bdd:sqlitechoix2.png?nolink|}} et sélectionner la base à utiliser (Ex : //sejour.db//). \\ \\ {{ :web:createtable.png?nolink|}} === 2.4 Créer une table === * **Ressource** : SQLITE tutorial - CREATE TABLE Contrairement à la norme SQL et aux autres systèmes de base de données, seulement trois modifications sont possibles:\\ - **Renommer** une table.\\ - **Renommer** une colonne. \\ - **Ajouter une nouvelle colonne** à une table.\\ En dehors de ces deux possibilités, **la table devra être reconstruite**. **Le nom des attributs doit donc être choisi avec soin**. {{ :info:bdd:sejour2.png?nolink|}} - Faire un clic droit sur le nom de la base dans **SQLITE EXPLORER** et sélectionner **New Query**. \\ * Une nouvelle page avec l'extension .sql s'ouvre dans l'éditeur. \\ * L'enregistrer avec le nom //creation.sql//. Les requêtes SQL de création des tables seront sauvegardées dans ce fichier. \\ * Entrer la requête ci-dessous dans le fichier //creation.sql//. {{ :web:infosql.png?nolink|}} CREATE TABLE clients ( id INTEGER PRIMARY KEY, -- alias de rowid nom VARCHAR(50), prenom VARCHAR(50), ville VARCHAR(50), region VARCHAR(50), solde INT ); - Sélectionner la requête, faire un clic droit dessus et sélectionner **Run Selected Query**. Si la requête est correcte, la page ci-dessous s'ouvre pour indiquer que la table a été créé. {{ :info:bdd:sejour5.png?nolink|}} {{ :info:bdd:sejour3.png?nolink&600 |}} - Rafraîchir la base en cliquant sur l'icône {{:info:bdd:sejour4.png?nolink|}} dans **SQLITE EXPLORER** pour voir apparaître la table //clients//. Le **paramétrage de VSCode** pour la prise en charge des **contraintes de clé étrangère** est traité au paragraphe 3 "**Contraintes d'intégrité**". \\ === 2.5 Supprimer une table === **DROP TABLE IF EXISTS** //nomtable//;

Poursuivre les modifications ici \\ === 2.6 Ajouter et modifier des données dans une table === {{ :web:insertinto.png?nolink|}} == 2.6.1 Ajouter des données == * **Ressource** : SQLITE tutorial - INSERT INTO //Syntaxe// INSERT INTO table1 VALUES (valeur1-1, sur toutes les colonnes...), (valeur2-1, sur toutes les colonnes...), ...; //Exemple// - Cliquer sur l'icône {{:informatique:bdd:sqlitevs9.png?nolink|}} pour créer une nouvelle page .sql. L'enregistrer sous le nom //insertions.sql//. - Nous allons placer les requêtes SQL d'insertion des données dans les tables dans ce fichier. \\ Entrer la requête ci-dessous dans le fichier //insertions.sql//. -- Un seul enregistrement -- Id est automatiquement incrémenté INSERT INTO clients(nom,prenom,ville,region,solde) VALUES ('Bauer','Elmut','Berlin','Europe',9825); - Sélectionner la requête, faire un clic droit dessus et sélectionner **Run Selected Query**.Si la requête est correcte, un clic sur {{:info:bdd:sejour7.png?nolink|}} dans **SQLITE EXPLORER** affiche la table comme ci-dessous.{{ :info:bdd:sejour6.png?nolink |}} - On peut également entrer plusieurs enregistrements dans la table comme dans la requête ci-dessous. -- Plusieurs enregistrements -- Id est automatiquement incrémenté INSERT INTO clients(nom,prenom,ville,region,solde) VALUES ('Smith','John','Londres','Europe',12436), ('Jonhson','Britney','New York','Amérique',6721); - Entrer cette requête dans le même fichier, la sélectionner et l'exécuter. La table doit maintenant correspondre à la figure ci-dessous. \\ {{ :web:update.png?nolink|}} == 2.6.2 Modifier des cellules == //Syntaxe// UPDATE table SET col1=val1 WHERE [sélection] //Exemple// - Cliquer sur l'icône {{:info:bdd:sqlitevs9.png?nolink|}} pour créer une nouvelle page .sql. L'enregistrer sous le nom //mises_a_jour.sql//. - Entrer la requête ci-dessous dans le fichier //mises_a_jour.sql//. UPDATE clients SET solde = 9000 WHERE nom="Bauer"; - Sélectionner la requête, faire un clic droit dessus et sélectionner **Run Selected Query**.Si la requête est correcte, un clic sur {{:info:bdd:sejour7.png?nolink|}} dans **SQLITE EXPLORER** affiche la table comme ci-dessous. {{ :info:bdd:sejour9.png?nolink |}} {{ :web:deletefrom.png?nolink|}} == 2.6.3 Supprimer des lignes == //Syntaxe// DELETE FROM table1 WHERE [sélection] //Exemple// DELETE FROM Clients WHERE Id>2 -- Supprime la troisième ligne dans la table \\ === 2.7 Interroger la base === * **Modèle logique de données** de la base sejour {{ :informatique:bdd:mldsejours.png?nolink |}} Les exemples ci-dessous peuvent être testés avec **VSCode** après avoir téléchargé et installé le projet Sejours. == 2.7.1 Requête de base == * **Ressource** : SQLITE tutorial - SELECT //Syntaxe// SELECT colonne1 [AS alias1], colonne2 [AS alias2] FROM table1 [AS t1], table2 [AS t2] WHERE [critères de jointure et sélection] GROUP BY colonnei ORDER BY colonnej [ASC|DESC]; {{ :web:selectfrom.png?nolink|}} == 2.7.2 Sélection simple == {{ :informatique:bdd:sqlitevs14.png?nolink&180|}} On peut sélectionner des colonnes d'une ou plusieurs tables données en paramètre avec **SELECT**. La commande **WHERE** permet de spécifier des critères de sélection. //Exemple// : nom et du lieu des stations se trouvant en Europe ? SELECT nomstation, lieu FROM stations WHERE region = 'Europe'; == 2.7.3 Tri des résultats == Il est possible de trier le résultat d'une requête avec la clause **ORDER BY** suivie de la liste des attributs suivie des mots-clés **ASC** (croissant) ou **DESC** (décroissant). Par défaut le tri est croissant. //Exemple// SELECT * FROM stations ORDER BY region ASC, lieu DESC; {{ :informatique:bdd:sqlitevs15.png?nolink&500 |}} == 2.7.4 Mise en forme == {{ :informatique:bdd:sqlitevs16.png?nolink&220|}} Il est possible de renommer les attributs avec le mot-clé **AS**. On utilise un alias pour en faciliter la lecture lors de l'affichage. //Exemple// : le contenu des colonnes //nom// et //prenom// est regroupé dans une colonne avec l'alias //Individu//. SELECT prenom||' '||nom AS Individu, ville AS Ville FROM clients; == 2.7.5 Fonctions de groupes (agrégation) == Les fonctions de groupe permettent d'obtenir des **informations sur un ensemble de lignes en travaillant sur les colonnes** et non pas sur les lignes comme avec WHERE. \\ //Exemples de fonctions // * **COUNT** donne le nombre de lignes d'une colonne. * **AVG** calcule la moyenne d'une colonne. * **SUM** calcule la somme d'une colonne * **MIN,MAX** calculent le minimum et le maximum d'une colonne {{ :informatique:bdd:sqlitevs17.png?nolink|}} //Exemple// : combien de stations situées en Europe sont-elles référencées dans la base de données ? SELECT COUNT(nomstation) AS Nombre FROM stations WHERE region='Europe'; == 2.7.6 Jointures == {{ :informatique:bdd:sqlitevs18.png?nolink&220|}} Une jointure permet d'associer plusieurs tables dans une même requête. //Syntaxe// SELECT colonne1 [AS c1], colonne2 [AS c2] FROM table1 [AS t1] JOIN table2 [AS t2] ON t1.clea = t2.cleb AND t1.cleb = t2.cleb; //Exemple// : liste (partiel) des clients avec les séjours qu'ils ont effectués. SELECT nom AS "Nom Client", nomstation AS Station FROM clients JOIN sejours ON clients.id=sejours.id ORDER BY nom; ==== 3. Contraintes d'intégrité ==== * **Ressources** : SQLITE tutorial - FOREIGN KEY et Extension VSCode SQLite

A faire