SQL création et modification de données Dan VODISLAV Université de Cergy-Pontoise Diplôme Universitaire Plan Création de tables SQL Types de données Contraintes Modification de la définition d'une table Suppression de tables Création de vues Modification de données INSERT DELETE UPDATE UCP, DU: SQL - création et modification de données 2
Création de tables Langage de définition de données (LDD) Création de tables Définition de contraintes sur les données Modification de la définition d'une table Suppression d'une table Création de vues Commandes CREATE TABLE ALTER TABLE DROP TABLE TRUNCATE TABLE CREATE VIEW UCP, DU: SQL - création et modification de données 3 CREATE TABLE Création d'une table CREATE TABLE <nom-table> ( <nom-attribut> <type-attribut> <contraintes-attribut>, <contraintes-table>) Types d'attributs Chaîne de caractères de taille fixe ou variable: CHAR(n), VARCHAR(n) Numériques: NUMERIC(n, d), FLOAT(n), INTEGER, Date: DATE, TIME, TIMESTAMP, INTERVAL, Bloc de données: BLOB, CLOB, Exemple CREATE TABLE Département ( dcode CHAR(3), dnom VARCHAR(20), ville VARCHAR(20), chef CHAR(8)) UCP, DU: SQL - création et modification de données 4
Contraintes d'attribut NOT NULL: on n'accepte pas les valeurs nulles pour l'attribut dnom VARCHAR(20) NOT NULL UNIQUE: la valeur doit être unique dans la table Un attribut unique et non nul peut servir de clé primaire DEFAULT <valeur>: valeur par défaut si pas précisée Sinon, la valeur par défaut est NULL CHECK (<condition>): condition à respecter salaire NUMERIC(6,2) CHECK(salaire>0) PRIMARY KEY: clé principale dcode VARCHAR(20) PRIMARY KEY UCP, DU: SQL - création et modification de données 5 Contraintes de table PRIMARY KEY (clé primaire constituée de plusieurs attributs) CREATE TABLE Appartement( adresse VARCHAR(50), no-apt INTEGER, superficie NUMERIC(5,2), PRIMARY KEY(adresse, no-apt)) FOREIGN KEY: clé étrangère (valeur qui est clé dans une autre table) On spécifie les attributs formant la clé étrangère, la table référencée et éventuellement les attributs clé (si leur nom est différent de ceux de la clé étrangère) CREATE TABLE Personne( nom VARCHAR(20) PRIMARY KEY adresse VARCHAR(50) NOT NULL, no-apt INTEGER NOT NULL, FOREIGN KEY(adresse, no-apt) REFERENCES Apartement) On peut nommer les contraintes (le système leur génère sinon un nom interne) C'est préférable, car on peut les modifier/supprimer plus facilement CONSTRAINT FK_Personne FOREIGN KEY(adresse, no-apt) REFERENCES Apartement UCP, DU: SQL - création et modification de données 6
Contraintes de table (suite) Déclencheurs sur mise à jour de clé étrangère Définies pour une clé étrangère S.e qui référence une clé primaire R.c on delete <action> (suppression d'un n-uplet de R, donc d'une clé primaire R.c) on update <action> (modification d'une clé primaire R.c) <action>: CASCADE: suppression/modification correspondante des n-uplets de S RESTRICT: interdiction de l'opération si R.c est référencée dans S SET NULL / SET DEFAULT <valeur> : remplacement de S.e par NULL/<valeur> CREATE TABLE Département ( dcode CHAR(3) PRIMARY KEY, dnom VARCHAR(20) NOT NULL, ville VARCHAR(20) DEFAULT 'Paris', chef CHAR(8) NOT NULL, FOREIGN KEY(chef) REFERENCES Employé(ecode) on delete RESTRICT on update CASCADE) UCP, DU: SQL - création et modification de données 7 Modification de la définition d'une table ALTER TABLE ADD <nom-attribut> <type-attribut> <contraintes-attribut> ALTER <nom-attribut> <type-attribut> <contraintes-attribut> DROP <nom-attribut> ADD <contrainte-table> DROP CONSTRAINT <nom-contrainte> UCP, DU: SQL - création et modification de données 8
Vidage et suppression de table TRUNCATE TABLE <nom-table> Élimine toutes les données de la table, mais la table reste (vide) Plus rapide que la commande DELETE, qui permet une suppression sélective des n-uplets DROP TABLE <nom-table> Élimine la table et les données qu'elle contient UCP, DU: SQL - création et modification de données 9 Création de vues Vue = table virtuelle définie à l'aide d'une requête Commande CREATE VIEW Exemple: les employés travaillant à Paris CREATE VIEW EmployéParis AS SELECT * FROM Employé WHERE dcode IN (SELECT dcode FROM Département WHERE ville='paris') La vue a pour attributs les attributs du SELECT On peut interroger la vue comme une table normale Exemple: les employés de Paris qui gagnent plus de 4000 euros SELECT dnom FROM EmployéParis WHERE salaire > 4000 UCP, DU: SQL - création et modification de données 10
Insertion de données dans une table INSERT INTO <table>(<attrib 1 >,, <attrib k >) VALUES (<valeur 1 >,, <valeur k >) On insère un nouvel n-uplet dans la table <table>, en donnant aux attributs <attrib 1 >,, <attrib k > les valeurs <valeur 1 >,, <valeur k > Les attributs de <table> non spécifiés dans l'insertion reçoivent la valeur par défaut (NULL ou celle précisée par DEFAULT) Formes particulières INSERT INTO T(a 1,, a k ) VALUES (v 1,, v k ), (v' 1,, v' k ), INSERT INTO T(a 1,, a k ) SELECT FROM WHERE Exemple INSERT INTO Département(dcode, dnom, chef) VALUES('D7', 'Financier', 'E22') UCP, DU: SQL - création et modification de données 11 Suppression de données DELETE FROM <table> WHERE <condition> On supprime de la table les n-uplets qui satisfont la condition Exemple: supprimer tous les employés qui ont par erreur une date d'embauche ultérieure à la date courante La fonction CURRENT_DATE retourne la date courante DELETE FROM Employé WHERE embauche > CURRENT_DATE UCP, DU: SQL - création et modification de données 12
Modification de données UPDATE <table> SET <attrib 1 > = <expression 1 >, <attrib k > = <expression k > WHERE <condition> Seuls les n-uplets qui respectent la condition sont modifiés Seuls les attributs précisés sont modifiés L'expression de modification de valeur peut utiliser l'ancienne valeur de l'attribut Augmenter de 2% les salaires au département Administratif UPDATE Employé SET salaire = salaire * 1.02 WHERE dcode IN (SELECT dcode FROM Département WHERE dnom = 'Administratif') UCP, DU: SQL - création et modification de données 13