SQL Définition des données
Instructions Définitions (LDD) CREATE, DROP, ALTER
Définition des structures 3 principales étapes: 1. Création de la base de donnée 2. Description des schémas de tables (relations) et de leur contenu 3. Définition des contraintes qui assurent des contrôles sur l intégrité des données
Exemple Employe num nom age fonc sup datent salaire comm dept Departement num nom noresp datecre loc
Types de la norme ANSI Numériques Chaînes de caractères Dates
Types numériques INTEGER Entiers relatifs 4 octets SMALLINT Entiers relatifs 2 octets BIGINT Entiers relatifs 8 octets FLOAT Flottants 4 octets DOUBLE Flottants 8 octets
Types chaînes de caractères CHAR(M) VARCHAR(M) Chaînes de longueur fixe Chaînes de longueur variable M octets au plus M octets Text Chaînes d'octets longueur de la chaîne
Types dates DATE date(hour, mois, an) 4 octets TIME heure(h, mm, ss) 4 octets DATETIME date et heure 8 octets YEAR année 2 octets
Définition des relations Instructions sur les relations CREATE TABLE créer une relation DROP TABLE supprimer une relation ALTER TABLE modifier la structure d'une relation
Exemple CREATE TABLE Employe( num INTEGER, nom VARCHAR(20), age INTEGER, fonc VARCHAR(10), sup CHAR(4), datent DATE, salaire DOUBLE, comm DOUBLE, dept INTEGER);
CREATE TABLE Departement( num nom noresp INTEGER, VARCHAR(14), INTEGER, datcre DATE, loc VARCHAR(15) );
Définition des contraintes Lors de la création de la relation : sur valeurs nulles et valeurs par défaut contraintes de clé d' intégrité référentielle sur le domaine de l'attribut
Valeurs nulles, Valeurs par défaut NOT NULL pour préciser que l attribut correspondant doit toujours avoir une valeur motdepasse VARCHAR(60) NOT NULL DEFAULT pour définir la valeur d' un attribut par défaut adresse VARCHAR (50) DEFAULT Inconnue
Exemple CREATE TABLE Employe( num CHAR(4) NOT NULL, nom VARCHAR(20), age NUMERIC(2), fonc VARCHAR(10), sup CHAR (4), datent DATE, salaire NUMERIC(6,2), comm NUMERIC(3,2), dept CHAR (2) );
CREATE TABLE Departement( num nom CHAR (2) NOT NULL, VARCHAR(14), noresp CHAR (4), datcre DATE, loc VARCHAR(15) DEFAULT 'NICE' );
Clés primaires PRIMARY KEY (att) PRIMARY KEY (att1,..., attn) Tous les attributs figurant dans une clé doivent être déclarés NOT NULL On peut également spécifier que la valeur d un attribut est unique pour l ensemble de la colonne. (UNIQUE) (clés secondaires) UNIQUE (nom, prenom)
CREATE TABLE Employe( num CHAR(4) NOT NULL, nom VARCHAR(20), age NUMERIC(2), fonc VARCHAR(10), sup CHAR (4), datent DATE, salaire NUMERIC(6,2), comm NUMERIC(3,2), dept CHAR (2), PRIMARY KEY (num) );
CREATE TABLE Departement( num CHAR (2) NOT NULL, nom VARCHAR(14) NOT NULL, noresp CHAR (4), datcre DATE, loc VARCHAR(15) NOT NULL DEFAULT 'NICE', PRIMARY KEY (num), UNIQUE(nom, loc) );
Intégrité référentielle Clés étrangères FOREIGN KEY (att) REFERENCES... FOREIGN KEY (att1,..., attn) REFERENCES... FOREIGN KEY(numprod) REFERENCES Produit(num) indique que numprod référence la clé primaire de la table Produit En cas d'insertion, suppression, maj le SGBD vérifie la violation de la contrainte Action par défaut : rejet de l'opération
CREATE TABLE Employe( num CHAR(4) NOT NULL, nom VARCHAR(20), age NUMERIC(2), fonc VARCHAR(10), sup CHAR(4), datent DATE, salaire NUMERIC(6,2), comm NUMERIC(3,2), dept CHAR(2), PRIMARY KEY (num), FOREIGN KEY(dept) REFERENCES Department(num), FOREIGN KEY(sup) REFERENCES Employe(num));
CREATE TABLE Departement( num CHAR (2) NOT NULL, nom VARCHAR(14) NOT NULL, noresp CHAR (4), datcre DATE, loc VARCHAR(15) NOT NULL DEFAULT 'NICE', PRIMARY KEY (num), UNIQUE(nom, loc), FOREIGN KEY(noresp) REFERENCES Employe(num));
Clauses d'action référentielle en cas de violation, si l'action par défaut de rejet de l'opération ne convient pas on peut spécifier la répercussion de la mise à jour ON UPDATE ON DELETE de manière à ce que la contrainte soit respectée SET NULL clé étrangère mise à NULL CASCADE application de la même opération SET DEFAULT valeur par défaut pour la clé étrangère FOREIGN KEY(numprod) REFERENCES Produit ON DELETE CASCADE ON UPDATE CASCADE
CREATE TABLE Employe( num CHAR(4) NOT NULL, nom VARCHAR(20), age NUMERIC(2), fonc VARCHAR(10), sup CHAR(4), datent DATE, salaire NUMERIC(6,2), comm NUMERIC(3,2), dept CHAR(2), PRIMARY KEY (num), FOREIGN KEY(dept) REFERENCES Department(num) ON DELETE SET NULL ON UPDATE CASCADE, FOREIGN KEY(sup) REFERENCES Employe(num) ON DELETE SET NULL ON UPDATE CASCADE);
CREATE TABLE Departement( num CHAR (2) NOT NULL, nom VARCHAR(14) NOT NULL, noresp CHAR (4), datcre DATE, loc VARCHAR(15) NOT NULL DEFAULT 'NICE', PRIMARY KEY (num), UNIQUE(nom, loc), FOREIGN KEY(noresp) REFERENCES Employe ON UPDATE CASCADE );
Contraintes sur domaines CHECK sur un attribut ou une ligne CHECK (annee BETWEEN 1900 AND 2050) CHECK (nomcinema IN (SELECT nom FROM Cinema)) CHECK (capacite<300 OR climatise = O ) En cas d'insertion ou d une modification, le SGBD vérifie que la nouvelle valeur vérifie la contrainte spécifiée par la clause CHECK Contrainte nommée CONSTRAINT annee_cst CHECK (annee BETWEEN 1900 AND 2050)
Modification du schéma Suppression d'une relation DROP TABLE nom_de_relation ; Modification d'une table ALTER TABLE nom_de_relation ACTION description
ALTER TABLE Departement MODIFY nom VARCHAR(20) ALTER TABLE Employe ADD adresse VARCHAR(20); ALTER TABLE Employe ALTER adresse SET DEFAULT NICE ; ALTER TABLE Employe DROP adresse CASCADE; ALTER TABLE Departement ADD CONSTRAINT NLocUnique UNIQUE (nom, loc) ALTER TABLE Employe ADD CONSTRAINT E_cst PRIMARY KEY (num) ALTER TABLE Employe ADD CONSTRAINT E_cst FOREIGN KEY (sup) REFERENCES Employe