1 Les bases de données Séance 5 -- Le Langage de Définition de Données ou la manœuvre de la structure de la base -- Le Langage de Manœuvre de Données
2 Le Langage de Définition de Données (LDD) : CREATE, ALTER, DROP. Les contraintes autres que clé primaire et clé étrangère. Le langage de manœuvre de données (excepté SELECT) : INSERT, UPDATE, DELETE. Base de données V Ce qui est abordé
3 Pour créer, supprimer, modifier la structure d’un objet : CREATE : création d’objets de données ALTER : modification de structure DROP : littéralement : « jeter » des objets Base de données V Les ordres principaux du LDD
4 Tables contiennent les données Vues définissent des « tables virtuelles » pour accéder plus facilement à des données complexes Index Permettent d’optimiser l’accès et la recherche User Décrivent les utilisateurs des données Base de données V Les objets de données
5 Rappel de la syntaxe CREATE TABLE ( |,...) [specification stockage] [definition cluster] [données provenant d’une requête] Base de données V La création de tables : compléments
6 Permet d’attribuer une valeur par défaut à une colonne si une requête d’ajout de données ne la fournit pas. Sans spécifications la valeur par défaut est NULL Peut être une valeur, une valeur calculée standard,... date_jour DATE DEFAULT current_date Base de données V Valeur par défaut d’une colonne
7 Contrainte de colonnes Associée à une colonne de la table Contrainte de tables Associées à plusieurs colonnes de la table Il est conseillé de nommer les contraintes d’un nom qui rappelle l’objectif de la contrainte Base de données V Contraintes (rappels)
8 ORACLE Nullité de colonne : NULL / NOT NULL Unicité de valeur dans une colonne : UNIQUE Clé primaire : PRIMARY KEY Vérification sur un ensemble de valeurs (Oracle) Clé étrangère : REFERENCES Base de données V Contraintes de colonnes
9 MySQL ORACLE CREATE TABLE personne( code VARCHAR2(4) CONSTRAINT pk_cli PRIMARY KEY, nom VARCHAR2(20), salaire NUMBER(12,2) CONSTRAINT const_sal NOT NULL, codepost NUMBER(5) CHECK(codepost BETWEEN AND 99999) ) CREATE TABLE personne( code VARCHAR(4) CONSTRAINT pk_cli PRIMARY KEY, nom VARCHAR(20), salaire DECIMAL(12,2) CONSTRAINT const_sal NOT NULL, codepost CHAR(5) ) Base de données V Exemple de contraintes de colonnes
10 MySQL ORACLE CREATE TABLE personne( code VARCHAR2(4), nom VARCHAR2(20), salaire NUMBER(12,2), codepost CHAR(5), CONSTRAINT pk_personne PRIMARY KEY(code,nom) ) CREATE TABLE personne( code VARCHAR(4), nom VARCHAR(20), salaire DECIMAL(12,2), codepost CHAR(5), CONSTRAINT pk_personne PRIMARY KEY(code,nom) ) Base de données V Exemple de contraintes de table
11 On pourrait supprimer la table et la recréer …? Base de données V Modification de la structure d’une table On perd les données qui sont déjà dedans
12 Modifier la structure, c’est : supprimer, modifier les caractéristiques ou ajouter des colonnes Supprimer, ajouter, modifier des contraintes Syntaxe générale ALTER TABLE [ ][ ][ ] Base de données V Modification de la structure d’une table 2
13 ALTER TABLE table ADD (col1 type1, col2 type2, …); ALTER TABLE table MODIFY (col1 type1, col2 type2, …); ALTER TABLE NomTable DROP CONSTRAINT NomCont; ALTER TABLE nom_table ADD CONSTRAINT nom_contrainte FOREIGN KEY (NomCol1, …, NomColn) REFERENCES NomTable(Col1, …, Coln); ALTER TABLE nom_table ADD CONSTRAINT nom_contrainte PRIMARY KEY (NomCol1, NomCol2, …); Base de données V Exemples de modification
14 Syntaxe générale : DROP TABLE Exemple : DROP TABLE personne ; Problèmes liés à la destruction d’une table : Certaines contraintes peuvent interdire la destruction d’une table Base de données V Destruction d’une table
15 Le LMD permet d’effectuer les opérations sur les données, et non plus sur les structures. Le LMD concerne le cycle de vie des données, pendant le fonctionnement de l’application. Le LMD implémente un modèle ultra- classique dit « CRUDE » (Create Read, Update, Delete) de l’informatique. Base de données V Le Langage de Manipulation des Données
16 Le CRUDE sur les données est matérialisé dans le SQL par les quatre ordres : INSERT : insertion d’enregistrement UPDATE : modification d’un enregistrement DELETE : suppression de l’enregistrement SELECT : accès à l’enregistrement par un procédé de sélection. Base de données V L’implémentation du CRUDE sur les données
17 ORACLE Syntaxe standard : INSERT INTO VALUES( …) Exemples : INSERT INTO personne VALUES('nom',10); INSERT INTO employe VALUES('DERAY', 'ODILE', DATE ' '); Base de données V L’ajout de données : INSERT
18 Elle permet de ne fournir que certaines données, les autres utilisant les valeurs par défaut. Syntaxe modifiée : INSERT INTO ( [, … ]) VALUES ( [, … ]); Exemple : INSERT INTO personne (nom) VALUES ('Durand') ; Elle est plus stable Base de données V L’ajout de données : INSERT à projection
19 Permet de mettre à jour les ‘tuples’ d'une table vérifiant un certain prédicat. UPDATE SET = [, = …] [WHERE ] Les expressions sont évaluées pour chaque tuple vérifiant le prédicat. Si aucune clause WHERE n'est spécifiée, tous les enregistrements de la table sont modifiés ! Base de données V La modification des données : UPDATE
20 ORACLE UPDATE personne SET date_naissance = DATE ' ' WHERE date IS NULL; NULL n'est pas une valeur et ne peut donc pas être traité avec '='. C'est le prédicat 'IS NULL' ou 'IS NOT NULL' qui sera employé. Base de données V Exemples de commandes UPDATE
21 Permet de supprimer d’une table les tuples qui vérifient un certain prédicat. Syntaxe générale : DELETE FROM [WHERE ] Si aucune clause WHERE n'est spécifiée, tous les tuples sont supprimés (cf. update) ! Base de données V Effacement de données : DELETE
22 DELETE FROM personne DELETE FROM personne WHERE date IS NULL; Base de données V Exemples de suppression
23 FIN DU COURS