Langage de définition de données Langage de manipulation de données Module SQlite3 de python
SQL cont. et SQLite3 avec Python
Kossale Youssef
[Link]@[Link]
CPGE Mohammed V Casablanca
Kossale Youssef SQL cont. et SQLite3 avec Python 1 / 26
Langage de définition de données Langage de manipulation de données Module SQlite3 de python
1 Langage de définition de données
2 Langage de manipulation de données
3 Module SQlite3 de python
Kossale Youssef SQL cont. et SQLite3 avec Python 2 / 26
Langage de définition de données Langage de manipulation de données Module SQlite3 de python
Langage de définition de données
Définition
Le langage de définition de données permet la modification du schéma d’une base de
données. il propose trois opérations : la création d’une table avec la commande
(CREATE), la suppression avec la commande (DROP) et la modification avec la
commande (ALTER).
Kossale Youssef SQL cont. et SQLite3 avec Python 3 / 26
Langage de définition de données Langage de manipulation de données Module SQlite3 de python
Langage de définition de données
Créer une table
La commande CREATE TABLE permet de créer une table dans la base de données
courante.
Syntaxe:
CREATE TABLE nomTable(
colonne1 type1 [contraintes1],
colonne2 type2 [contraintes2],
...
colonneN typeN [contraintesN],
[containtesAdditionnelles]
);
Kossale Youssef SQL cont. et SQLite3 avec Python 4 / 26
Langage de définition de données Langage de manipulation de données Module SQlite3 de python
Langage de définition de données
Dans la syntaxe précedente on définit pour chaque attribut 3 choses :
• Nom d’attribut ou colonne
• Son type
• des containtes d’intégrité si besoin
Kossale Youssef SQL cont. et SQLite3 avec Python 5 / 26
Langage de définition de données Langage de manipulation de données Module SQlite3 de python
Langage de définition de données
Types de données en SQL
Kossale Youssef SQL cont. et SQLite3 avec Python 6 / 26
Langage de définition de données Langage de manipulation de données Module SQlite3 de python
Langage de définition de données
Contraintes d’intégrité
Une contrainte d’intégrité est une régle qui permet de controler la valeur d’une colonne
ou d’un ensemble de colonnes.
Kossale Youssef SQL cont. et SQLite3 avec Python 7 / 26
Langage de définition de données Langage de manipulation de données Module SQlite3 de python
Langage de définition de données
Exemple
Création de la table Pilote:
CREATE TABLE Pilote(
numPilote INTEGER PRIMARY KEY AUTOINCREMENT,
nomPilote TEXT,
adress TEXT,
salaire INTEGER,
Check (salaire > 10000)
);
Kossale Youssef SQL cont. et SQLite3 avec Python 8 / 26
Langage de définition de données Langage de manipulation de données Module SQlite3 de python
Langage de définition de données
Exemple
Création des tables Vol et Avion:
Avion(numAvion, nomAvion, Capacité, localisation)
• numAvion est la clé primaire, la capacité doit être supérieure a 0 et la localisation
doit être soit Agadir, Marrakech, Rabat, Tanger ou Casablanca.
Vol(numVol, villDep,villeArr,heureDep, heureArr, numPilote, numAvion)
• numVol est la clé primaire, alors que numAvion et numPilote sont des clés
étrangères des tables avion et pilote respectivement.
Kossale Youssef SQL cont. et SQLite3 avec Python 9 / 26
Langage de définition de données Langage de manipulation de données Module SQlite3 de python
Langage de définition de données
Exemple
Création de la table Avion:
CREATE TABLE Avion(
numAvion INTEGER PRIMARY KEY AUTOINCREMENT,
nomAvion TEXT,
capacite INTEGER,
localisation TEXT,
CHECK (capacite > 0),
CHECK (localisation in ("Agadir", "Tanger", "Marrakech", "Rabat", "Casablanca")) );
Kossale Youssef SQL cont. et SQLite3 avec Python 10 / 26
Langage de définition de données Langage de manipulation de données Module SQlite3 de python
Langage de définition de données
Exemple
Création de la table Vol:
CREATE TABLE Vol(
numVol INTEGER PRIMARY KEY AUTOINCREMENT,
villDep TEXT,
villArr TEXT,
heureDep INTEGER,
heureArr INTEGER,
numAvion INTEGER NOT NULL,
numPilote INTEGER NOT NULL,
FOREIGN KEY (numAvion) REFERENCES Avion(numAvion) ON DELETE CASCADE,
FOREIGN KEY (numPilote) REFERENCES Pilote(numPilote) ON DELETE CASCADE
);
Kossale Youssef SQL cont. et SQLite3 avec Python 11 / 26
Langage de définition de données Langage de manipulation de données Module SQlite3 de python
Langage de définition de données
Suppression d’une table
La commande Drop Table nom_table permet de supprimer définitivement une table
d’une base de données.
Remarque:
Si on veut supprimer une table qui est reliée à d’autre tables par des clés étrangères, il
est recommandé de les supprimer avant de supprimer la table concernée.
Exemple: DROP TABLE Vol
Kossale Youssef SQL cont. et SQLite3 avec Python 12 / 26
Langage de définition de données Langage de manipulation de données Module SQlite3 de python
Langage de définition de données
Modification d’une table
En utilisant la commande ALTER TABLE, on peut modifier le schéma d’une table
existante.
Syntaxe:
ALTER TABLE nom_table
instruction;
Une instruction peut etre l’une des commandes suivantes:
• ADD nomColonne type : ajoute une nouvelle colonne
• DROP nomColonne: supprime une colonne existante
• MODIFY nomColonne type: modifie le type d’une colonne existante.
Remarque:
La commande ADD Constraint n’est pas supportée par SQLite.
Exemple: Ajouter la colonne dateFabrication au table Avion.
Kossale Youssef SQL cont. et SQLite3 avec Python 13 / 26
Langage de définition de données Langage de manipulation de données Module SQlite3 de python
Langage de manipulation de données
Insertion des données
Syntaxe:
• Version 1:
INSERT INTO nom_table VALUES (V1, V2,..., Vn);
Dans cette version il est obligatoire de donner pour chaque colonne une valeur et
de respecter l’ordre dans la table.
• Version 2:
INSERT INTO nom_table (col1, col2, ..., coln) VALUES (V1, V2,..., Vn);
Dans cette version il suffit de spécifier les colonnes qu’on souhaite inserer.
Exemples:
Inserer dans la table pilote les enregistrement suivants :
• Ahmed,Hay zerktouni Nr 365 Marrakech, 15000.
• Yassine, Hay oulfa Nr 12, Casablanca, 23000.
Kossale Youssef SQL cont. et SQLite3 avec Python 14 / 26
Langage de définition de données Langage de manipulation de données Module SQlite3 de python
Langage de manipulation de données
Mise à jour des données
Syntaxe:
Update nom_table
SET col1 = v1,
col2 = v2,
...
coln = vn,
WHERE condition;
Exemples:
Modifier le salaire de ahmed de 15000 à 20000.
Kossale Youssef SQL cont. et SQLite3 avec Python 15 / 26
Langage de définition de données Langage de manipulation de données Module SQlite3 de python
Langage de manipulation de données
Suppression des données
Syntaxe:
DELETE FROM nom_table
WHERE condition;
Exemples:
Supprimer les avions où le nom commence par "Air".
Kossale Youssef SQL cont. et SQLite3 avec Python 16 / 26
Langage de définition de données Langage de manipulation de données Module SQlite3 de python
Les fonctions du module SQlite
Kossale Youssef SQL cont. et SQLite3 avec Python 17 / 26
Langage de définition de données Langage de manipulation de données Module SQlite3 de python
Les fonctions du module SQlite
Exemple:
Connexion à la base de données:
import sqlite3
biblioDB = "Emplacement de votre fichier .sqlite sur disque"
conn = [Link](biblioDB)
[Link]("PRAGMA foreign_keys = ON;")
Kossale Youssef SQL cont. et SQLite3 avec Python 18 / 26
Langage de définition de données Langage de manipulation de données Module SQlite3 de python
Les fonctions du module SQlite
Exemple:
Creation de la table livre
curseur = [Link]()
[Link](""" CREATE TABLE Livre(
idLivre TEXT PRIMARY KEY,
titre TEXT,
anneeEdition INTEGER,
nbrPages INTEGER);
""")
[Link]()
Kossale Youssef SQL cont. et SQLite3 avec Python 19 / 26
Langage de définition de données Langage de manipulation de données Module SQlite3 de python
Les fonctions du module SQlite
Exemple:
Insertion de données avec execute()
[Link](""" INSERT INTO Livre VALUES ("1200", "Programmer en python",
2019, 700); """)
[Link](""" INSERT INTO Livre VALUES ("1210", "Algorithmes", 2013, 240); """)
[Link]()
Kossale Youssef SQL cont. et SQLite3 avec Python 20 / 26
Langage de définition de données Langage de manipulation de données Module SQlite3 de python
Les fonctions du module SQlite
Exemple:
Insertion de données avec execute() paramétrée
Données = [
("1200", "Programmer en python", 2019, 700),
("1210", "Algorithmes", 2013, 240)
]
requete = "INSERT INTO Livre VALUES (?,?,?,?)"
for d in Données :
[Link](requete,d)
[Link]()
Kossale Youssef SQL cont. et SQLite3 avec Python 21 / 26
Langage de définition de données Langage de manipulation de données Module SQlite3 de python
Les fonctions du module SQlite
Exemple:
Insertion de données avec executemany() paramétrée
Données = [
("1200", "Programmer en python", 2019, 700),
("1210", "Algorithmes", 2013, 240)
]
requete = "INSERT INTO Livre VALUES (?,?,?,?)"
[Link](requete,Données)
[Link]()
Kossale Youssef SQL cont. et SQLite3 avec Python 22 / 26
Langage de définition de données Langage de manipulation de données Module SQlite3 de python
Les fonctions du module SQlite
Exemple:
Récuperation d’une seule ligne avec fetchone()
[Link]("""SELECT * FROM LIVRE""")
Row = [Link]()
print(Row)
[Link]()
Remarque :Row ne contient que la premiére ligne de la table livre.
Kossale Youssef SQL cont. et SQLite3 avec Python 23 / 26
Langage de définition de données Langage de manipulation de données Module SQlite3 de python
Les fonctions du module SQlite
Exemple:
Récuperation de plusieurs lignes avec fetchall()
[Link]("""SELECT * FROM LIVRE""")
Rows = [Link]()
print(Rows)
[Link]()
Kossale Youssef SQL cont. et SQLite3 avec Python 24 / 26
Langage de définition de données Langage de manipulation de données Module SQlite3 de python
Les fonctions du module SQlite
Exemple:
Fermeture de la connexion
Pour fermer la connexion avec la base de données on utilise la synatxe suivante:
[Link]()
Kossale Youssef SQL cont. et SQLite3 avec Python 25 / 26