đ§° SQLite#
Quâest ce que SQLite
?#
Note
SQLite (prononcĂ© [És.ky.Él.ajt]) est une bibliothĂšque Ă©crite en C qui propose un moteur de base de donnĂ©es relationnelle accessible par le langage SQL. SQLite implĂ©mente en grande partie le standard SQL-92 et des propriĂ©tĂ©s ACID.
Contrairement aux serveurs de bases de donnĂ©es traditionnels, comme MySQL ou PostgreSQL, sa particularitĂ© est de ne pas reproduire le schĂ©ma habituel client-serveur mais dâĂȘtre directement intĂ©grĂ©e aux programmes. LâintĂ©gralitĂ© de la base de donnĂ©es (dĂ©clarations, tables, index et donnĂ©es) est stockĂ©e dans un fichier indĂ©pendant de la plateforme.
La simplicité de ce SGBDR en fait le parfait candidat pour des sites web avec peu de données.
Propriétés ACID#
En informatique, les propriĂ©tĂ©s ACID sont un ensemble de propriĂ©tĂ©s qui garantissent quâune transaction informatique est exĂ©cutĂ©e de façon fiable.
Dans le domaine des bases de données, une opération sur les données est appelée une transaction ou transaction informatique.
Exemple
Un transfert de fonds dâun compte de banque Ă un autre, mĂȘme sâil implique plusieurs actions comme le dĂ©bit dâun compte et le crĂ©dit dâun autre, est une seule transaction.
Elles sont au nombre de 4 pour chaque lettre de lâacronyme:
- Atomique
la suite dâopĂ©rations est indivisible, en cas dâĂ©chec en cours dâune des opĂ©rations, la suite dâopĂ©rations doit ĂȘtre complĂštement annulĂ©e (
rollback
) quel que soit le nombre dâopĂ©rations dĂ©jĂ rĂ©ussies.- CohĂ©rente
le contenu de la base de donnĂ©es Ă la fin de la transaction doit ĂȘtre cohĂ©rent sans pour autant que chaque opĂ©ration durant la transaction donne un contenu cohĂ©rent. Un contenu final incohĂ©rent doit entraĂźner lâĂ©chec et lâannulation de toutes opĂ©rations de la transaction.
- Isolée
lorsque deux transactions \(A\) et \(B\) sont exĂ©cutĂ©es en mĂȘme temps, les modifications effectuĂ©es par \(A\) ne sont ni visibles par \(B\), ni modifiables par \(B\) tant que la transaction \(A\) nâest pas terminĂ©e et validĂ©e (
commit
).- Durable
Une fois validĂ©, lâĂ©tat de la base de donnĂ©es doit ĂȘtre permanent, et aucun incident technique (exemple: crash) ne doit pouvoir engendrer une annulation des opĂ©rations effectuĂ©es durant la transaction.
Historique de SQLite#
Ce moteur est développé depuis 2000 D. Richard Hipp.
La BibliothĂšque ainsi que son code source sont sous la licence du domaine public.
Note
Sa particularitĂ© est de ne pas reproduire le schĂ©ma habituel client-serveur mais dâĂȘtre directement intĂ©grĂ©e aux programmes.
LâintĂ©gralitĂ© de la base de donnĂ©es (dĂ©clarations, tables, index et donnĂ©es) est stockĂ©e dans un fichier indĂ©pendant de la plateforme.
Il sâagit dâun des moteurs de bases de donnĂ©es les plus utilisĂ©s au monde, celui-ci est notamment utilisĂ© par Firefox, Skype, Google Gears, Android, iOS, des sites web, etc.
Une des raisons de son succĂšs est quâelle est intĂ©grĂ©e dans les bibliothĂšques standards de nombreux langages comme Python, Ruby, PHP, C#, C++, etc.
De plus son extrĂȘme lĂ©gĂšretĂ© (moins de 600 Kio), la rende populaire sur les systĂšmes embarquĂ©s.
La premiĂšre version de SQLite est publiĂ©e en aoĂ»t 2000, celle-ci utilise gdbm (GNU Database Manager) pour manipuler des arbres. Par la suite SQLite 2.0 supprime la dĂ©pendance Ă gdbm et ajoute le support des transactions. Enfin SQLite 3.0, produite avec lâaide dâAOL, est publiĂ©e en 2004.
Caractéristiques de SQLite#
- Base de données embarquée
La majoritĂ© des SGBD sont construit selon lâarchitecture Client-Serveur, SQLite sâintĂ©gre directement Ă lâapplicatif.
LâaccĂšs Ă une base de donnĂ©es avec SQLite se fait par lâouverture du fichier correspondant Ă celle-ci. Chaque base de donnĂ©es est enregistrĂ©e dans un fichier qui lui est propre, avec ses dĂ©clarations, ses tables et ses index mais aussi ses donnĂ©es.
Indication
Il nây a pas dâextension propre aux fichiers de base de donnĂ©es de SQLite, il est courant de rencontrer des extensions comme
.sqlite
ou.db
, parfois suivie du numéro de version de la bibliothÚque (.sqlite3
,.db2
, etc.).Notons quâil est possible dâutiliser une base de donnĂ©es uniquement sauvegardĂ©e en mĂ©moire vive, sans crĂ©er de fichier de base de donnĂ©es sur le disque, via le nom de fichier spĂ©cial
:memory:
.- Gestion des droits
Avertissement
Il nâexiste aucune gestion des droits dâaccĂšs et de modification des donnĂ©es. Cela est dĂ©lĂ©guĂ©e au systĂšme de fichiers du systĂšme dâexploitation.
La gestion des droits avec les instructions
GRANT
etREVOKE
est donc inexistante, bien que ceux-ci fassent partie de la spécificationSQL-9210
. Ainsi lâutilisation dâune base SQLite ne nĂ©cessite aucune procĂ©dure dâinstallation ou de configuration.- PortabilitĂ©
Ătant entiĂšrement Ă©crite en
C-ANSI
, la version normalisée du langage de programmationC
, celle-ci est compilable sans modification sur toutes les architectures,Important
Ainsi les fichiers de base de donnĂ©es SQLite sont entiĂšrement indĂ©pendants du systĂšme dâexploitation et de lâarchitecture.
- Gestion des types de données
Celle-ci se base sur lâutilisation dâun typage dynamique pour le contenu des cellules, contrairement Ă la quasi-totalitĂ© des SGBD qui utilisent un typage
statique
.Lors de la crĂ©ation de la table on ne peut que renseigner un type dâaffinitĂ©. La convertion des donnĂ©es vers le type si possible se fait au moment de la saisie des donnĂ©es.
Type de données#
Il existe plusieurs types dâaffinitĂ© dans SQLite, dĂ©finissant la façon dont celui-ci va travailler lors de lâentrĂ©e des nouvelles donnĂ©es.
TEXT
NUMERIC
INTEGER
REAL
NONE
TEXT
Permet dâenregistrer la donnĂ©e comme une chaine de caractĂšres, sans limite de taille. Si un nombre est entrĂ© dans une colonne de ce type, il sera automatiquement converti en une chaine de caractĂšres.
NUMERIC
Tente dâenregistrer la donnĂ©e comme un entier ou comme un rĂ©el, si cela sâavĂšre impossible la donnĂ©e sera enregistrĂ©e comme une chaine de caractĂšres.
INTEGER
Enregistre la donnĂ©e comme un entier si celle-ci peut ĂȘtre encodĂ©e sans perte, mais peut utiliser les types REAL ou TEXT si ça ne peut ĂȘtre fait.
REAL
Enregistre la donnĂ©e comme un rĂ©el, mĂȘme sâil sâagit dâun entier. Si la valeur est trop grande la donnĂ©e sera convertie en chaine de caractĂšres.
NONE
La donnée est enregistrée telle quelle sans conversion.
Et les dates ?
Il nâexiste pas de type pour reprĂ©senter des dates bien quâun ensemble de fonctions existe pour manipuler celles-ci. La convention Ă©tant de les stocker sous la forme dâune chaine de caractĂšres ou dans un entier sous la forme dâun timestamp UNIX.
Les contraintes#
La gestion des contraintes est possible et se fait sur une ou plusieurs colonnes.
NULL
NOT NULL
DEFAULT
PRIMARY KEY
UNIQUE
FOREIGN KEY
Indication
La contrainte UNIQUE
crée automatiquement un index sur la ou les colonnes sur lesquelles elle est appliquée.
Contraintes plus complexe#
Les contraintes CHECK
nous permettent de définir des vérifications supplémentaires sur les données au-delà de UNIQUE
ou de NOT NULL
.
CREATE TABLE table_name(
...,
column_name data_type CHECK(expression),
...
);
CREATE TABLE table_name(
...,
CHECK(expression)
);
CREATE TABLE contacts (
contact_id INTEGER PRIMARY KEY,
first_name TEXT NOT NULL,
last_name TEXT NOT NULL,
email TEXT,
phone TEXT NOT NULL CHECK (length(phone) >= 10)
);
CREATE TABLE products (
product_id INTEGER PRIMARY KEY,
product_name TEXT NOT NULL,
list_price DECIMAL (10, 2) NOT NULL,
discount DECIMAL (10, 2) NOT NULL
DEFAULT 0,
CHECK (list_price >= discount AND
discount >= 0 AND
list_price >= 0)
);
PRIMARY KEY#
Permet la crĂ©ation dâune contrainte UNIQUE
sur la ou les colonnes concernées, il est de plus conseillé de rajouter la contrainte NOT NULL
Ă la dĂ©claration dâune clĂ© primaire.
ROWID#
Chaque ligne dâune table est identifiĂ©e par un entier signĂ© de 64 bits appelĂ© ROWID
. Une colonne ayant été déclaré en INTEGER PRIMARY KEY
est un alias du ROWID
.
Si la table est vide le premier identifiant prendra comme valeur 1 lors de lâinsertion de du premier enregistrement. Celui-ci sera incrĂ©menter pour chaque enregistrement jusquâĂ la limite dâun entier signĂ© de 64 bits (\(2^{63} - 1\)).
AUTOINCREMENT#
Le mot clé AUTOINCREMENT
modifie lĂ©gĂšrement lâalgorithme dâattribution de la clĂ© primaire. Une fois la limite dâun entier atteinte il ne sera plus possible dâinsĂ©rer un nouvel enregistrement.
Ceci permet de garantir quâun mĂȘme identifiant ne sera jamais portĂ© par deux enregistrements distincts, mĂȘme sâils ne coexistent pas Ă un mĂȘme moment.
FOREIGN KEY#
La version 3 a apportĂ© le support et la gestion des contraintes de clĂ© Ă©trangĂšre depuis la version 3. Toutefois celle-ci est dĂ©sactivĂ© par dĂ©faut. Toute colonne rĂ©fĂ©rencĂ©e par une clĂ© Ă©trangĂšre doit ĂȘtre dĂ©clarĂ©e comme UNIQUE
.
Il est possible de lâactiver via le pragma
suivant:
PRAGMA foreign_keys;
Pragma#
Lâinstruction PRAGMA
est une extension SQL de SQLite et permet de modifier le fonctionnement de la bibliothĂšque SQLite. Nous aurons lâoccasion de dĂ©tailler leurs fonctionnement dans la suite de ce document.
Déclencheurs#
SQLite intégre la gestion des déclencheurs:
BEFORE
AFTER
INSTEAD OF
Vue#
Note
Une vue est une synthĂšse dâune requĂȘte dâinterrogation de la base. Il sâagit dâune sorte de table virtuelle, dĂ©finie par une requĂȘte.
Et évideement, SQLite intégre le support des vues.
Transaction#
Toutes les instructions hormis le SELECT
implique la crĂ©ation dâune transaction lors du requĂȘtage sur la base. Les instructions sont ainsi toutes atomiques.
Un peu de pratique avec quelques exemples#
đŹ AĂ©roports#
Note
Un aĂ©roport est lâensemble des bĂątiments et des installations qui servent au traitement des passagers ou du fret aĂ©rien situĂ©s sur un aĂ©rodrome. Le bĂątiment principal est, gĂ©nĂ©ralement, lâaĂ©rogare par oĂč transitent les passagers (ou le fret) entre les moyens de transport au sol et les avions.

Nous allons au cours de cet exercice utiliser une base de donnĂ©es dâaĂ©roport autour du monde. Cette base de donnĂ©e a Ă©tĂ© compilĂ© Ă partir de plusieurs sources du domaine public dont un listing se trouve sur le site http://ourairports.com/data/ <http://ourairports.com/data/>.
La base de donnée « airport »#
Ci-dessous le schéma UML de la base de données airport
Diagramme UML de la base de données airport#
Point culture
Un code dâaĂ©roport peut faire rĂ©fĂ©rence au code IATA, un code Ă trois lettres utilisĂ© dans les systĂšmes de rĂ©servation de billets et de traitement des bagages. Ou au code OACI, qui est un code Ă quatre lettres utilisĂ© par les systĂšmes ATC et les aĂ©roports nâayant pas de code IATA.
Base de données des aéroport en Gréce#

Attention
La base de données comptant plus de 57 000 aéroports, nous utiliserons dans un premier temps une partie de cette base de données ne contenant que les aéroport de Gréce.
Quelques rappels sur les commandes SQLite
$ sqlite3 airport_greece.sqlite3
sqlite> .headers on
sqlite> .mode columns
sqlite> .tables
sqlite> PRAGMA table_info(nom_table);
Exercice sur les aéroports de Gréce#
Avant de vous lancer dans cet exercice pensez à télécharger la base de données des aéroports de Gréce en cliquant ici
.
Important
Pour chaque question pensez Ă Ă©crire la version de la requĂȘte en algĂšbre relationnel puis en SQL que vous sauvegarderez dans un fichier avec le rĂ©sultat de chaque appel.
Ă faire
Lister les noms des aéroports,
Lister les régions,
Lister les municipalités,
Lister les diffĂ©rents types dâaĂ©roports,
Lister les aéroports avec leurs noms, régions et types,
Lister les rĂ©gions oĂč se trouvent un hĂ©liport,
Lister les noms, rĂ©gions et municipalitĂ©s des aĂ©roports Ă plus de 1000m dâaltitude,
Lister les noms, rĂ©gions et municipalitĂ©s des aĂ©roports entre 1000m et 1600m dâaltitude,
Lister les aéroports (nom, code iata et code local) qui posséde un code iata,
Lister les aéroports dont le code de région est GR-U-A,
Lister les aéroports dont le code de région est GR-U-A avec une altitude supérieur à 1,
Lister les aéroports dont le nom commence par la lettre « M »,
Lister les aĂ©roports dont lâidentification commence par « GR »,
Lister les aĂ©roports dont lâidentification commence par « LG »,
Lister les aéroports qui sont fermées,
Lister les aĂ©roports dâAthĂ©nes,
Lister les aéroports dont la ville commence par la lettre A.
đ Keyforge#

Note
KeyForge est un JCE à Deck unique créé par Richard Garfield (le papa de Magic!) et publié par Fantasy Flight Games.
Dans ce jeu, les joueurs jouent le rĂŽle dâArchontes dans le monde du Creuset. Le premier joueur Ă collecter suffisamment dâ« Ămber » pour forger trois clĂ©s est dĂ©clarĂ© vainqueur.
Le jeu dans sa version de lancement comporte 371 cartes différentes.
Diagramme UML de la base de données keyforge#
Important
Pour chaque question pensez Ă Ă©crire la version de la requĂȘte en algĂšbre relationnelle puis en SQL que vous sauvegarderez dans un fichier avec le rĂ©sultat de chaque appel.
Avant de vous lancer dans cet exercice pensez à télécharger la base de données Keyforge en cliquant ici
.
Ă faire
Lister les noms des différentes familles,
Lister les différents types de cartes,
Lister les différents types de traits,
Lister les cartes dont le nom commmence par la lettre
A
,Lister les cartes dont le nom se termine par
ain
,Lister les cartes dont la puissance est supérieur à 5,
Lister les cartes dont lâarmure est supĂ©rieur Ă 3,
Lister les 10 premiĂšres cartes de la base en suffixant chaque nom de colonne par
_card
,Lister les cartes dont lâidentifiant est Ă©gal Ă 36, 80, 137, 195, 249, 298 ou 347,
Lister le nom, nom de la maison et nom du type de la carte numéro 36 en effectuant une jointure entre les tables
cards
,types
ethouses
; et en suffixant chaque champ par le nom de la table dâorigine,Lister le nom, nom de la maison et nom du type des cartes numĂ©ro 36, 80, 137, 195, 249, 298 et 347 en effectuant une jointure entre les tables
cards
,types
ethouses
; et en suffixant chaque champ par le nom de la table dâorigine,Lister les cartes de la famille dis dont lâarmure est supĂ©rieur Ă 0 et la puissance Ă 7,
Lister les 10 premiÚres cartes « créatures » de la base de données,
Lister les 10 premiÚres cartes « créatures » de la maison Mars,
Lister les artefacts de la famille Logos,
Lister les actions de la famille Dis,
Lister les 10 premiÚres cartes « créatures » dont la puissance est supérieur à 7.
đ Keyforge Le Retour#
Important
Pour chaque question pensez Ă Ă©crire la version de la requĂȘte en algĂšbre relationnelle puis en SQL que vous sauvegarderez dans un fichier avec le rĂ©sultat de chaque appel.
Avant de vous lancer dans cet exercice pensez à télécharger la base de données Keyforge en cliquant ici
.
Ă faire
Combien yâa tâil de familles diffĂ©rentes,
Combien yâa tâil de types de cartes diffĂ©rentes,
Combien yâa tâil de cartes,
Combien yâa tâil de cartes qui commence par la lettre
A
,Quelle est la carte avec la puissance la plus élevée dans la famille brobnar,
Quelle est la moyenne de puissance des cartes « créatures » de la famille mars,
Quelle est la carte avec le moins de puissance dans la famille brobnar,
Combien de cartes y a tâil par maison,
Combien de cartes Artefact yâa tâil par maison,
Combien de cartes CrĂ©atures yâa tâil par maison,
Combien de cartes Action yâa tâil par maison,
Quelle est la somme des puissances de la famille mars,
Quelle est la somme des puissances de la famille brobnar,
Combien de cartes font gagner une Ămber,
Combien de cartes font gagner deux Ămber,
Combien de cartes font gagner une ou deux Ămber,
Combien de cartes font gagner une ou deux Ămber par maison,
Combien de cartes possédent une armure,
Combien de cartes possédent une armure par famille,
Combien de cartes par niveau de rareté.
đŠ InGen#

Note
La société InGen; spécialisée dans la création de créatures préhistoriques génétiquement modifiées; souhaite créer une base de données pour son SI.
La majeure partie de son activité consiste à faire naßtre des dinosaures et à les présenter au sein de Jurassic Park. Les dinosaures sont définis par un nom, une date de naissance et une espÚce. Une espÚce est définie par un nom.
Diagramme UML de la base de donnĂ©es dâInGen#
Quelle est la commande permettant de lancer lâutilitaire CLI de sqlite ?
CrĂ©er la la base de donnĂ©es dâInGen sous le nom
ingen.sqlite3
.Dans un fichier
sql
(schema.sql par exemple), Ă©crivez la requĂȘte de crĂ©ation de la tablespecies
.ĂxĂ©cutez le fichier via le pragma
read
sqlite> .read schema.sql
Attention
Pensez à activer le support des clé étrangéres via la PRAGMA foreign keys
sqlite> PRAGMA foreign_keys;
foreign_keys
------------
0
sqlite> PRAGMA foreign_keys = ON;
sqlite> PRAGMA foreign_keys;
foreign_keys
------------
1
Danger
Le support des clĂ© Ă©trangĂ©res doit ĂȘtre rĂ©activĂ© Ă chaque connexion, pensez pour cela Ă indiquer PRAGMA foreign_keys = ON;
en haut de tout vos fichiers .sql
.
Ajoutez maintenant la création de la table dinosaurs
dans votre fichier et éxécutez le.
Vérifiez que les tables ont bien étés créées.
sqlite> .tables
Ajoutez une colonne location de type TEXT
Ă la table dinosaurs
.
Insérez les données suivante dans la table species
name name_meaning
----------- -----------------
Triceratops Three-horned face
Stegosaurus Roofed lizard
Tyrannosaur Tyrant Lizard Kin
Diplodocus Double beat
Mettez Ă jour lâespĂšce diplodocus avec comme signification de nom « Double beam » au lieu de double beat.
Insérez les données suivante dans la table dinosaurs
name birthday specie_id
---------- ---------- ----------
Marie 1991/12/15 1
Louis 1993/05/05 2
Freddy 1994/04/03 3
Nessie 1991/11/20 4
Important
Pour chaque question pensez Ă Ă©crire la version de la requĂȘte en algĂšbre relationnel puis en SQL que vous sauvegarderez dans un fichier avec le rĂ©sultat de chaque appel.
Ă faire
Lister les noms des dinosaures,
Lister les noms dâespĂšce et leur signification,
Lister les différents dinosaures avec leurs espÚce.
đż Silence, Moteur, Action !#

Note
Cet exercice basĂ© sur un extrait dâun dataset de films a pour but de rĂ©capituler lâensemble des notions vus jusquâĂ aujourdâhui ensemble. A savoir crĂ©ation dâune base de donnĂ©e, insertion de donnĂ©es et requĂȘtage.
La base de donnĂ©es est orientĂ©e autour dâune table Movie
qui contient lâensemble des informations dâun film. Ă savoir son titre, sa catĂ©gorie, sa durĂ©e, son annĂ©e de sortie, sâil a Ă©tĂ© rĂ©compensĂ©, sa popularitĂ© mais aussi son directeur, son acteur et actrice principaux.
La table Category
contient le nom de la catégorie et la table Person
, qui servira aussi bien pour les acteurs/actrices que pour les directeurs contient le nom et le prénom de la personne.
Bien évidemment chaque table posséde un champ id
.
Diagramme UML de la base de données de films#
En vous aidant des informations ci-dessus créer le schéma de base de données via DB Browser for SQLite (penser au clé étrangére).
Insérer les données dans les tables
Category
,Person
etMovie
grĂące Ă trois requĂȘtes dâinsertion et en vous servant du fichier de donnĂ©es disponible ici.
Ă faire
Lister les nom et idenfitiant de chaque catégorie.
Combien de catégorie comporte la base, faites apparaßtre le résultat sous le nom
total_category
.Lister les nom, prénom et identifiant des personnes dont le nom commence par
S
.Lister les nom, prénom et identifiant des personnes dont le nom finit par
ing
.Combien de personnes yâa tâil dans la base (
total_person
).Quel est lâidentifiant de
Steven Spielberg
.Lister les films (titre, année de sortie, durée, identifiant) dont le titre contient
star
et en les ordonnant par annĂ©e de sortie.Combien de film yâa tâil dans la base (
total_movie
).Quelle est lâannĂ©e de sortie des aventuries de lâarche perdue (
Raiders of the Lost Ark
).Lister lâensemble des films (titre, nom de la catĂ©gorie, durĂ©e, popularitĂ© et rĂ©compense) rĂ©alisĂ© par
Steven Spielberg
(attention il sâagit de faire une jointure entre les tables person et movie et non dâutiliser directement lâidentifiant).Lister les films; titre, annĂ©e de sortie, durĂ©e, identifiant, nom de la catĂ©gorie, nom et prĂ©nom du rĂ©alisteur (
director_name
,director_firstname
), nom et prĂ©nom de lâacteur et de lâactrice principaux (main_actor_name
,main_actor_firstname
,main_actress_name
,main_actress_firstname
); dont le titre contientstar
et en les ordonnant par année de sortie.Quelle est la durée moyenne des films (
avg_length
).Quelle est la durée moyenne des films réalisé par
Steven Spielberg
(avg_length
,director_name
,director_firstname
).Combien de film
George Lucas
a-t-il réalisé.Quelle est la durée moyenne des films par catégorie (
avg_length
,category
).Combien de films ont reçu une récompense (
total_rewarded
).Combien de films ont reçu une récompense par catégorie (
total_rewarded
,category
).Lister le nombre de films réalisé par directeur (
total
,director_name
,director_firstname
) dont le total est supérieur à 10 et ordonné décroissant partotal
.Combien de films ont une popularité supérieur à 60 (
total
).Combien de films ont été réalisé par leurs acteur principal (
total
).
Les vues en SQL#
Indication
Câest un ensemble des rĂ©sultats dâune requĂȘte stockĂ©e dans une entitĂ©. Elle offre la possibilitĂ© dâaccĂ©der aux donnĂ©es des tables sous-jacentes via la vue. Les tables auxquelles fait rĂ©fĂ©rence la requĂȘte dans la dĂ©finition de la vue sâappellent des tables de base.
Une vue est utile dans certains cas :
Fournir une couche dâabstraction sur les tables. Ajout et suppression de colonnes dans la vue sans toucher au schĂ©ma des tables sous-jacentes.
Encapsulation des requĂȘtes complexes afin de simplifier lâaccĂšs aux donnĂ©es.
Attention
Les vues sont en lecture seule. Cela signifie que vous ne pouvez pas utiliser les instructions INSERT
, DELETE
et UPDATE
pour mettre à jour les données des tables de base via la vue.
CREATE VIEW IF NOT EXISTS view_name
AS
select-statement;
CREATE VIEW v_boardgames
AS
SELECT id, boardgame.name, category.name AS category,
FROM boardgame, category
WHERE boardgame.category_id = category.id;
DROP VIEW IF EXISTS view_name;
Ă faire
Créez une vue v_dinosaurs
qui correspond au schéma UML ci-dessous:
Diagramme UML de la base de données de dinosaurs#
Comment utiliser SQLite ?#
SQLite embarque une interface en ligne de commande (CLI) simple et pratique pour crĂ©er et requĂȘter sur une base de donnĂ©es SQLite. Son utilisation se fait simplement par la commande
sqlite3
Note
Une interface en ligne de commande (en anglais command line interface, couramment abrĂ©gĂ© CLI) est une interface homme-machine dans laquelle la communication entre lâutilisateur et lâordinateur sâeffectue en mode texte au sein dâun terminal (console).
Pour se connecter Ă une base de donnĂ©es SQLite, il suffit dâindiquer le nom du fichier de base de donnĂ©es en argument de la commande
sqlite3
Attention
Si le fichier existe alors la commande ouvre la base de données sinon celle-ci est créée avant ouverture.
Indication
Voici quelques astuces utiles avec la commande
sqlite3
Ă faire aprĂšs chaque lancement de la commande:SQLiteBrowser#
Astuce
Nous pouvons utiliser un utilitaire, SQLiteBrowser , en mode GUI pour crĂ©er une base de donnĂ©es de type SQLite. Il sâagit dâun logiciel permettant de crĂ©er et de manipuler trĂšs simplement des BDD SQLite.
Lancer DB Browser for SQLite puis cliquer sur New Database, sauvegarder la dans le dossier data de votre site web sous le nom data.sqlite.
Lors de la crĂ©ation de votre BDD, vous ĂȘtes invitĂ© Ă crĂ©er une premiĂšre table qui pourrait ressembler Ă ceci:
Enfin ajouter quelques enregistrements dans cette table. Avant de quitter le logiciel nâoubliez pas de sauvegarder votre base via Write Changes.