SQLite est une bibliothèque C qui implémente un moteur de base de données SQL. Il s’agit d’un système de gestion de bases de données relationnelles (ou SGBDR). La plupart des bases de données SQL fonctionnent avec le modèle client/serveur. Prenons l’exemple de MySQL. Pour saisir et recevoir des données d’une base de données MySQL, vous devez envoyer une requête au serveur MySQL, qui, à sa réception, vous fournira la réponse appropriée. Contrairement à MySQL, les bases de données SQLite sont exploitées directement à partir du disque. Il n’est pas nécessaire de créer des requêtes au serveur.
Installation
Nous opérerons sur notre base de données en utilisant l’interface en ligne de commande sqlite31(CLI). Nous travaillerons sous la plateforme Linux. Les CLI sqlite3 pour MAC OS et Windows sont exactement les mêmes, mais par souci de cohérence, il est recommandé d’installer Homestead Improved – une VM légère exécutable en 5 minutes qui gardera votre ordinateur propre de tout logiciel supplémentaire inutile.
Pour l’installer sur Homestead Improved (ou tout autre OS basé sur Debian comme Ubuntu), exécutez ce qui suit :
sudo apt-get install sqlite3 libsqlite3-dev
Ceci installera sqlite3. Pour l’installer sur d’autres plateformes, suivez leurs instructions officielles. Une fois qu’il est installé, nous pouvons démarrer la session. Ouvrez le Terminal/Ligne de commande et entrez la commande sqlite3
. Vous devez voir quelque chose de ce genre :
La deuxième ligne vous indique de saisir .help
pour obtenir des instructions. Il y a une invite qui attend que vous tapiez une commande. Alors allez-y et entrez .help
. Vous obtiendrez ainsi une liste de métacommandes et leurs descriptions.
Méta-commandes
Les méta-commandes sont utilisées pour définir le format de sortie des tables, examiner les bases de données et pour d’autres opérations administratives. Elles commencent toujours par un point. Même .help
est une méta-commande. Vous pouvez parcourir la liste. En voici quelques-unes qui vous seront fréquemment utiles :
Commande | Description |
---|---|
.show | Affiche les paramètres actuels de divers paramètres |
.databases | Présentation des noms de bases de données et des fichiers |
.quit | Quitter le programme sqlite3 |
.tables | Afficher les tables actuelles |
.schema | Afficher le schéma de la table |
.header | Afficher ou cacher l’en-tête de la table de sortie |
.mode | Sélectionner le mode pour le tableau de sortie | .dump | Dump de la base de données au format texte SQL |
Commandes standard
Passons en revue les commandes standard de sqlite3. Les méta-commandes sont émises pour examiner une base de données. Les commandes SQL standard sont émises pour opérer sur une base de données. Les commandes standard peuvent être classées en trois groupes :
-
Langage de définition des données : Il fournit la structure de stockage et les méthodes d’accès aux données du système de base de données.
- CREATE
- ALTER
- DROP
-
Langage de manipulation des données : Il permet aux utilisateurs de manipuler (ajouter/modifier/supprimer) des données.
- INSERT
- UPDATE
- DELETE
-
Langage de requête de données : Il permet aux utilisateurs de récupérer les données requises dans la base de données.
- SELECT
Note : SQLite comprend de nombreuses autres commandes standard, dont la liste peut être lue ici. Comme ce tutoriel est une introduction de niveau débutant, nous ne couvrirons que les commandes mentionnées ci-dessus.
Les bases de données SQLite sont des fichiers portables multiplateformes. Elles peuvent être stockées sur divers périphériques de stockage et peuvent être transférées sur différents ordinateurs.
Nous allons apprendre à travailler avec sqlite3 avec notre base de données de section de commentaires. Presque tous les sites web d’aujourd’hui ont une section de commentaires. Pour publier un commentaire, l’utilisateur doit entrer les détails suivants :
- Nom
- Site web
- Comment
Sur ces quatre éléments, seule l’URL du site web est facultative. Nous devons également définir une colonne qui numérote les commentaires. Appelons-la post_id.
Nous pouvons définir les types de données des colonnes (attributs) comme suit :
Attribut | Datype Required |
---|---|
post_id | INTEGER |
name | TEXT |
TEXT | |
website_url | TEXT | commentaire | TEXT |
Vous pouvez consulter la documentation relative aux différents types de données et classes de stockage fournis dans SQLite3.
SQLite3 utilise le typage manifeste2. La plupart des autres moteurs de base de données, y compris MySQL, utilisent le typage statique.
Maintenant, créons une base de données. Si vous êtes toujours dans le programme sqlite3, quittez-le en entrant .quit
à l’invite sqlite. Ensuite, lancez la commande :
sqlite3 comment_section.db
Cela créera un fichier de base de données comment_section.db dans le répertoire de travail actuel.
Note : Si aucun nom de fichier ne suit la commande, sqlite3 crée automatiquement une base de données temporaire. C’est ce qui s’est passé lorsque nous avons saisi la commande unique sqlite3 pour la première fois.
CREER UNE TABLE
Pour stocker les commentaires, nous devons définir une table. Nommons-la . Pour la créer, saisissez l’instruction:
CREATE TABLE comments ( post_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, email TEXT NOT NULL, website_url TEXT NULL, comment TEXT NOT NULL );
NOT NULL
s’assure que la valeur particulière n’est pas laissée vide dans un enregistrement. PRIMARY KEY
3 et AUTOINCREMENT
4 élaborent l’attribut post_id.
Pour vérifier si la table a été créée, émettez la méta commande .tables
. Elle affichera le nom de la table .
Note : Pour obtenir le schéma de la table, entrez .schema comments
Maintenant que la table a été créée, nous devons entrer les données.
INSERER DES RANGS
Supposons qu’un utilisateur ait saisi un commentaire avec les détails:
Name : Shivam MamgainEmail : [email protected] : shivammg.blogspot.comComment : Great tutorial for beginners.
Pour l’insérer, nous utilisons la commande INSERT.
INSERT INTO comments ( name, email, website_url, comment )VALUES ( 'Shivam Mamgain', '[email protected]','shivammg.blogspot.com', 'Great tutorial for beginners.' );
Je n’ai pas fourni la valeur de post_id, même si elle est définie comme NOT NULL
. Le fait est qu’il n’est pas nécessaire car c’est un champ AUTOINCREMENT
.
Entrez quelques lignes supplémentaires dans le tableau pour vous entraîner.
SELECT
Nous avons appris à insérer des données dans le tableau. Pour récupérer des données, nous utilisons la commande SELECT.
SELECT post_id, name, email, website_url, commentFROM comments;
L’instruction ci-dessus peut également être écrite comme:
SELECT *FROM comments;
Ceci récupérera toutes les lignes du tableau. Le tableau résultant pourrait sembler obfusqué sans en-têtes et sans séparation appropriée entre les colonnes. Pour y remédier, nous devons modifier certains paramètres.
Entrez .show
Pour afficher les attributs des colonnes, entrez .headers ON
.
Pour afficher les lignes dans le style de la colonne, saisissez .mode column
.
Entrez à nouveau l’instruction SELECT.
Note : sélectionnez le mode d’affichage qui vous convient. Saisissez .help
et recherchez .mode
. Vous verrez s’afficher les différentes valeurs que peut avoir .mode
.
Mise à jour
Supposons que l’email de ‘Shivam Mamgain’ a été changé en ‘[email protected]’ . Nous devons mettre à jour la ligne. Émettez l’instruction suivante :
UPDATE commentsSET email = '[email protected]'WHERE name = 'Shivam Mamgain';
Cela changera l’attribut email pour le nom ‘Shivam Mamgain’ en ‘[email protected]’.
Note : L’attribut nom n’est pas unique, donc l’instruction ci-dessus peut affecter plus d’une ligne. Pour chaque nom = ‘Shivam Mamgain’, l’email sera défini à ‘[email protected]’. Pour mettre à jour une ligne particulière, utilisez l’attribut post_id. Il est défini comme un PRIMARY KEY
et sera toujours unique.
DELETE
Pour SUPPRIMER une ou plusieurs lignes de la table, nous pouvons utiliser la condition WHERE, tout comme dans UPDATE.
Supposons que nous devons supprimer une ligne avec post_id 9. Nous pouvons entrer la commande:
DELETE FROM commentsWHERE post_id = 9;
Nous avons besoin de supprimer tous les commentaires qui sont postés par ‘Bart Simpson’ et ‘Homer Simpson’. Nous pouvons exécuter la requête suivante :
DELETE FROM commentsWHERE name = 'Bart Simpson' OR name = 'Homer Simpson';
ALTER
On peut ajouter de nouvelles colonnes à une table en utilisant ALTER. Sur le web, la plupart des gens n’utilisent pas forcément leur vrai nom. Ils travaillent généralement sous un alias, un nom d’utilisateur. Nous avons besoin d’ajouter une colonne nom d’utilisateur à notre table. La requête ci-dessous accomplit la tâche:
ALTER TABLE commentsADD COLUMN username TEXT;
Cette requête créera une colonne nom d’utilisateur dans et définira son type de données à TEXTE. La valeur de username pour les lignes déjà insérées sera définie à NULL.
La commande ALTER est également utilisée pour renommer les tables. Changeons la table en
Coms
.
ALTER TABLE commentsRENAME TO Coms;
DROP
Supprimer une table signifie supprimer la table entière. La table Coms
peut être supprimée avec la requête suivante:
DROP TABLE Coms;
Conclusion
SQLite3 offre de nombreux avantages par rapport aux autres bases de données relationnelles. Certaines de ses caractéristiques distinctives peuvent être lues ici. La plupart des frameworks PHP et de nombreux autres frameworks web, notamment Django, Ruby on Rails et web2py, ont SQLite3 comme base de données par défaut. Sa légèreté la rend préférable pour le stockage local dans les navigateurs web. Elle est également utilisée comme stockage client pour de nombreux systèmes d’exploitation, notamment Android et Windows Phone 8. C’est l’un des moteurs de base de données les plus largement déployés.
Dans le tutoriel, nous avons interagi avec un système de base de données SQLite. Il existe des applications graphiques pour faire la même chose, sans avoir à apprendre des commandes. Deux de ces applications sont le DB Browser for SQLite et SQLiteStudio. Vous pouvez également vous exercer à SQL en ligne sur SQL Fiddle.
Ce guide a couvert les bases pour vous permettre de démarrer avec SQLite3. J’espère qu’il vous donnera envie d’aller plus loin. Vous pouvez facilement l’intégrer à PHP en utilisant la classe commune PDO.
- SQLite version 3
- Le typage manifeste libère de nombreuses restrictions sur le type de valeur qui peut être saisi pour un champ particulier. Vous pouvez ainsi saisir n’importe quelle valeur de n’importe quel type de données dans une colonne, indépendamment du type déclaré de la colonne (sauf pour
INTEGER PRIMARY KEY
). Vous n’êtes même pas tenu de fournir la taille maximale des types de données. Une fois que l’utilisateur a saisi les données, SQLite détermine la taille dont il aurait besoin sur le disque. Pour avoir un aperçu plus approfondi, reportez-vous à Datatypes in SQLite3. - Un
PRIMARY KEY
peut définir de manière unique une ligne particulière. Un tel attribut doit toujours être défini commeNOT NULL
. -
AUTOINCREMENT
définit automatiquement l’attribut correspondant de l’enregistrement actuellement inséré à un nombre qui est un plus la valeur deAUTOINCREMENT
(sauf si spécifié). Les attributs définis parAUTOINCREMENT
doivent nécessairement êtreINTEGERS
.
.