SQL : 4 fonctions d'exploitation de SGBD SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage informatique ayant pour objet le dialogue avec une base de données relationnelle. SQL couvre les quatre fonctions indispensables à la mise en oeuvre et à l'exploitation de bases de données relationnelles : langage de définition de données (LDD) : CREATE, ALTER, DROP langage d’interrogation de données (LID): SELECT langage de manipulation de données (LMD) : INSERT, UPDATE, DELETE langage de contrôle de données (LCD) : GRANT, REVOKE
LDD : Création et suppression de bases de données Création de bases de données : CREATE DATABASE Nom_BD; Exemple : création d'une BD nommée ”Musique” CREATE DATABASE Musique; Suppression d'une base de données DROP DATABASE Nom_BD; Exemple : suppression de la BD nommée ”Musique” DROP DATABASE Musique; Voir la liste des bases de données : SHOW DATABASES; Tous les exemples utiliseront la BD Musique en annexe du polycopié : SQL-LDD-cours.pdfSQL-LDD-cours.pdf
LDD : Creation d'une table Clause CREATE : création d'une table dans une base de données : CREATE TABLE Nom_table (Nom_colonne1 Type, Nom_colonne2 Type,...); Exemple : Création d'un table nommée ”artiste”, avec deux colonnes : identifiant de type entier comme clé primaire, nom de 20 caractères : CREATE TABLE Artiste ( codeartiste SMALLINT NOT NULL, nomartiste VARCHAR(20) NOT NULL, VARCHAR(30) UNIQUE, PRIMARY KEY (codeartiste) );
Les types de données Pour chaque colonne que l'on crée, il faut préciser le type de données que le champ va contenir. Celui-ci peut être un des types suivants :
Les types de données Exemples :
Les types de données Exemple
Les contraintes d'intégrité Une contrainte d'intégrité permettent de s'assurer que les données saisies dans la base sont conformes aux données attendues. Ces contraintes doivent être exprimées dès la création de la table. On distingue trois types de contraintes d'intégrité : Contrainte de domaine : contrôle le format de la donnée saisie par rapport au domaine de valeur prévu pour l'attribut. Exemple : le champ datesortie de la Table ALBUM doit être une date au format JJ/MM/AAAA Contraintes de relation (ou de table): concerne la clé primaire qui doit être unique. Exemple : le champ codeartiste est obligatoire et unique. Contraintes d'intégrité référentielle : limite l'ajout ou la suppression des enregistrements liés par des clés étrangères. Exemple : On ne peut supprimer la catégorie de code 1 car il existe un album de cette catégorie (codealbum = 1)
Les contraintes de domaines Éviter les champs vides dans une table : NOT NULL Ex : obliger la saisie du codeartiste : codeartiste SMALLINT NOT NULL Forcer une valeur par défaut : DEFAULT Ex : définir la valeur par défaut de datesortie à la date du jour : datesortie DATE DEFAULT CURRENT_DATE Forcer l'unicité d'une valeur : UNIQUE Ex : vérifier que tous les s sont différents : VARCHAR(30) UNIQUE Tester une condition sur un champ : CHECK Ex : définir le domaine du code catégorie comme entier inférieur à 6 : codecate SMALLINT, CHECK (codecate < 6)
Les contraintes de relation La contrainte de relation définit une clé primaire unique pour chaque enregistrement. Le mot clé primary key permet de définir un ou plusieurs champ qui serviront de clé primaire : PRIMARY KEY (colonne1, colonne2,....) Exemples : définir le champ codealbum comme clé primaire de la table album : PRIMARY KEY (codealbum) définir les champs codealbum et codeartiste comme clé primaire de la table participer : PRIMARY KEY (codealbum, codeartiste)
Les contraintes d'intégrité référentielle La contrainte d'intégrité référentielle définit une clé étrangère en référence à la clé primaire d'une autre table : Le mot clé FOREIGN KEY permet de définir la colonne qui sera clé étrangère. Le mot clé REFERENCES permet de définir la clé primaire référencée. FOREIGN KEY (clé étrangère) REFERENCES table (clé primaire) Exemple : définir la colonne codecate de la table ALBUM comme clé étrangère en référence à la clé primaire de la table CATEGORIE : FOREIGN KEY (codecate) REFERENCES CATEGORIE(codecate)
LDD : Modification d'une table Clause ALTER TABLE: modification d'une table. Ajout de colonne : ALTER + ADD ALTER TABLE Nom_table ADD Nom_colonne Type ; Exemples : Ajout de la colonne (unique) à la table ARTISTE : ALTER TABLE ARTISTE ADD VARCHAR(30) UNIQUE; Ajout de la colonne nbtitres (entier) à la table ALBUM : ALTER TABLE ALBUM ADD nbtitres SMALLINT;
LDD : Modification d'une table Clause ALTER TABLE: modification d'une table. Modification du type d'une colonne : ALTER + MODIFY ALTER TABLE Nom_table MODIFY Nom_colonne Nouveau_Type ; Exemples : Modification du type de la colonne nomartiste de la table ARTISTE en chaine de 20 caractères maxi : ALTER TABLE ARTISTE MODIFY nomartiste VARCHAR(20) ;
LDD : Modification d'une table Clause ALTER TABLE : modification d'une table. Suppression d'une colonne : ALTER + DROP COLUMN ALTER TABLE Nom_table DROP COLUMN Nom_colonne ; Exemples : Suppression de la colonne ASIN de la table ALBUM : ALTER TABLE ALBUM DROP COLUMN ASIN ; Suppression de la colonne de la table ARTISTE : ALTER TABLE ARTISTE DROP COLUMN ;
LDD : Suppression d'une table Clause DROP TABLE : supprimer une table DROP TABLE Nom_table; Exemple : suppression de table ARTISTE : DROP TABLE ARTISTE Clause TRUNCATE : vider une table. Supprime les données mais conserve la structure. TRUNCATE TABLE Nom_table Exemple : Vider la table PARTICIPER : TRUNCATE TABLE PARTICIPER
LDD : Renommer une table Clause RENAME TABLE : renommer une table RENAME TABLE Ancien_Nom TO Nouveau_nom; Exemple : Renommer la table ARTISTE en MUSICIEN : RENAME TABLE ARTISTE TO MUSICIEN ;
LDD : Création d'une vue Clause CREATE VIEW : creation de vue Une vue est une table virtuelle qui rassemble des informations provenant de plusieurs tables. On parle de "vue" car il s'agit simplement d'une représentation des données dans le but d'une exploitation visuelle. Les données présentes dans une vue sont définies grâce à une clause SELECT : CREATE VIEW Nom_de_la_Vue (colonnes) AS SELECT …;
LDD : Création d'une vue Clause CREATE VIEW : creation de vue Exemple : création d'une vue nommée Albums2000 regroupant le titre, le label et le nom de catégorie des albums sortis après l'an 2000: CREATE VIEW Albums2000 AS SELECT titrealbum, label, nomcate FROM ALBUM, CATEGORIE WHERE ALBUM.codecate = CATEGORIE.codecate AND datesortie > 01/01/2000;
LDD : Suppression d'une vue Clause DROP VIEW : supprimer une vue DROP VIEW Nom_vue; Exemple : supprimer la vue Albums2000 : DROP VIEW Albums2000;