SQL : Langage de définition de données 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” : • Suppression d'une base de données : DROP DATABASE Nom_BD; Exemple : suppression de la BD nommée ”Musique” : • Afficher la liste des bases de données : SHOW DATABASES; LDD : Création d'une table Création d'une table dans une base de données : CREATE TABLE Nom_de_la_table (Nom_de_colonne1 Type_de_donnée, Nom_de_colonne2 Type_de_donnée, ...); Exemple : Création d'un table nommée ”artiste”, avec deux colonnes : identifiant de type entier comme clé primaire, nom de 20 caractères : 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 : Type de donnée Type alphanumérique Type alphanumérique Type numérique Type numérique Type numérique Type numérique Type horaire Type horaire Type horaire Syntaxe CHAR(n) VARCHAR(n) NUMBER(n,[d]) SMALLINT INTEGER FLOAT DATE TIME TIMESTAMP Description Chaîne de caractères de longueur fixe n (n<16383) Chaîne de caractères de n caractères maximum (n<16383) Nombre de n chiffres [optionnellement d après la virgule] Entier signé de 16 bits (-32768 à 32757) Entier signé de 32 bits (-2E31 à 2E31-1) Nombre à virgule flottante Date sous la forme 16/07/99 Heure sous la forme 12:54:24.85 Date et Heure Exemples : trouver les types des colonnes suivantes : Colonne Type codealbum de ALBUM titrealbum de ALBUM ASIN de ALBUM datesortie de ALBUM SQL : LDD Page 1 / 5 Les contraintes d'intégrité Une contrainte d'intégrité est une clause permettant de s'assurer que les données saisies dans la base soient 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 : • Contraintes de relation (ou de table): concerne la clé primaire qui doit être unique. Exemple : • Contraintes d'intégrité référentielle : limite l'ajout ou la suppression des enregistrements liés par des clés étrangères. Exemple : Les contraintes de domaines sur les champs • Éviter les champs vides dans une table : NOT NULL Exemple : obliger la saisie du codeartiste : • Définir une valeur par défaut : DEFAULT <valeur> Exemple : définir la valeur par défaut de datesortie à la date du jour : • Forcer l'unicité d'une valeur : UNIQUE Exemple : vérifier que tous les emails sont différents : • Tester une condition sur un champ : CHECK Exemple : définir le domaine du code catégorie comme entier inférieur à 6 : Les contraintes de relationn 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 : • définir les champs codealbum et codeartiste comme clé primaire de la table participer : 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) SQL : LDD Page 2 / 5 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 : 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 email (unique) à la table ARTISTE : • Ajout de la colonne nbtitres (entier) à la table ALBUM : Modification du type d'une colonne : ALTER + MODIFY ALTER TABLE Nom_table MODIFY Nom_colonne Nouveau_Type ; Exemple : Modification du type de la colonne nomartiste de la table ARTISTE en chaine de 20 caractères maxi : 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 : • Suppression de la colonne email de la table ARTISTE : LDD : Suppression d'une table Clause DROP TABLE : supprimer une table DROP TABLE Nom_table; Exemple : suppression de table ARTISTE : Clause TRUNCATE : vider une table. Supprime les données mais conserve la structure. TRUNCATE TABLE Nom_table; Exemple : Vider la 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 : SQL : LDD Page 3 / 5 LDD : Création d'une vue Clause CREATE VIEW : création 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 …; 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: LDD : Suppression d'une vue Clause DROP VIEW : supprimer une vue DROP VIEW Nom_vue; Exemple : supprimer la vue Albums2000 : Exercices à faire sur la BD MUSIQUE fournie en annexe : 1. Créer les tables CATEGORIES et ALBUM 2. Modifier la table ALBUM pour ajouter le champs media (10 caractères max.) 3. Modifier la table ARTISTE pour ajouter le champs date-naissance (date). 4. Créer une table LABEL regroupant les différents éditeurs avec deux colonnes : codelabel et nomlabel 5. Modifier la table ALBUM : supprimer la colonne label et ajouter une colonne codelabel, clé étrangère en référence à la clé primaire de la table LABEL. 6. Vider la table ALBUM 7. Créer une vue nommée album-rock qui contient le code album, le titre, le label et la date de sortie des albums de catégorie « rock » SQL : LDD Page 4 / 5 ANNEXE : BD MUSIQUE Schéma relationnel de la Base de données « MUSIQUE » : ALBUM (codealbum, titrealbum, ASIN, label, datesortie, codecate) Clé primaire : codealbum Clé étrangère : codecate en référence à codecate de CATEGORIE CATEGORIE (codecate, nomcate) Clé primaire : codecate ARTISTE (codeartiste, nomartistel) Clé primaire : codeartiste PARTICIPER (codealbum,codeartiste) Clé primaire : codealbum + codeartiste Clé étrangère : codealbum en référence à codealbum de ALBUM codeartiste en référence à codeartiste de ARTISTE Extrait du contenu des tables : TABLE ALBUM codealbum titrealbum ASIN label datesortie codecate 1 'It's All Right with Me' 'B000MM1F4Q' 'Dreyfus' 27/032007 1 2 'I'm wide awake, it's morning' 'B00070FV0M' Saddle Creek 25/01/2005 3 3 'Babylon by bus' 'B00005MK9Y' 'Polygram Records' 14/02/1978 2 4 'OK Computer' 'B000002UJQ' 'Capitol' 3 12/11/1997 TABLE CATEGORIE codecate nomcate 1 'Jazz' 2 'Reggae' 3 'Rock' 4 'Classique' 5 'Chansons' TABLE ARTISTE codeartiste nomartiste 1 'Bob Marley' 2 'Bright Eyes' 3 'Sara Lazarus' 4 'Birelli Lagrene Project' 5 'Radiohead' TABLE PARTICIPER codealbum codeartiste 1 3 1 4 2 2 3 1 4 5 SQL : LDD Page 5 / 5