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 1 Base de données V Ce qui est abordé 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. 2 Base de données V Les ordres principaux du LDD 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 3 Base de données V Les objets de données 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 4 Base de données V La création de tables : compléments Rappel de la syntaxe CREATE TABLE <nom> (<définition colonne> | <définition contrainte>,...) [specification stockage] [definition cluster] [données provenant d’une requête] 5 Base de données V Valeur par défaut d’une colonne 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 6 Base de données V Contraintes (rappels) 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 7 Base de données V Contraintes de colonnes Nullité de colonne : NULL / NOT NULL Unicité de valeur dans une colonne : UNIQUE Clé primaire : PRIMARY KEY Vérification sur un ensemble de ORACLE valeurs (Oracle) Clé étrangère : REFERENCES 8 Base de données V Exemple de contraintes de colonnes CREATE TABLE personne( code VARCHAR2(4) CONSTRAINT pk_cli PRIMARY KEY, nom VARCHAR2(20), ORACLE const_sal NOT NULL, salaire NUMBER(12,2) CONSTRAINT codepost NUMBER(5) CHECK(codepost BETWEEN 00001 AND 99999) ) CREATE TABLE personne( code VARCHAR(4) CONSTRAINT pk_cli PRIMARY KEY, nom VARCHAR(20), MySQL const_sal NOT NULL, salaire DECIMAL(12,2) CONSTRAINT codepost CHAR(5) ) 9 Base de données V Exemple de contraintes de table CREATE TABLE personne( code VARCHAR2(4), nom VARCHAR2(20), ORACLE salaire NUMBER(12,2), codepost CHAR(5), CONSTRAINT pk_personne PRIMARY KEY(code,nom) ) CREATE TABLE personne( code VARCHAR(4), nom VARCHAR(20), MySQL salaire DECIMAL(12,2), codepost CHAR(5), CONSTRAINT pk_personne PRIMARY KEY(code,nom) ) 10 Base de données V Modification de la structure d’une table On pourrait supprimer la table et la recréer …? On perd les données qui sont déjà dedans 11 Base de données V Modification de la structure d’une table 2 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 <nom_table> [<add>][<modify>][<drop>] 12 Base de données V Exemples de modification 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, …); 13 Base de données V Destruction d’une table Syntaxe générale : DROP TABLE <nom_table> Exemple : DROP TABLE personne ; Problèmes liés à la destruction d’une table : Certaines contraintes peuvent interdire la destruction d’une table 14 Base de données V Le Langage de Manipulation des Données 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 ultraclassique dit « CRUDE » (Create Read, Update, Delete) de l’informatique. 15 Base de données V L’implémentation du CRUDE sur les données 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. 16 Base de données V L’ajout de données : INSERT Syntaxe standard : INSERT INTO <nom_table> VALUES(<expr>…) Exemples : INSERT INTO personne VALUES('nom',10); INSERT INTO employe VALUES('DERAY', ORACLE 'ODILE', DATE '1960-01-01'); 17 Base de données V L’ajout de données : INSERT à projection Elle permet de ne fournir que certaines données, les autres utilisant les valeurs par défaut. Syntaxe modifiée : INSERT INTO <nom_table>(<col1> [, … ]) VALUES (<expr1> [, … ]); Exemple : INSERT INTO personne (nom) VALUES ('Durand') ; Elle est plus stable 18 Base de données V La modification des données : UPDATE Permet de mettre à jour les ‘tuples’ d'une table vérifiant un certain prédicat. UPDATE <nom_table> SET <col>=<expr>[,<col>=<expr>…] [WHERE <predicat>] 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 ! 19 Base de données V Exemples de commandes UPDATE UPDATE personne SET ORACLE date_naissance = DATE '1900-01-01' 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é. 20 Base de données V Effacement de données : DELETE Permet de supprimer d’une table les tuples qui vérifient un certain prédicat. Syntaxe générale : DELETE FROM <tab> [WHERE <predicat>] Si aucune clause WHERE n'est spécifiée, tous les tuples sont supprimés (cf. update) ! 21 Base de données V Exemples de suppression DELETE FROM personne DELETE FROM personne WHERE date IS NULL; 22 FIN DU COURS 23