Le langage SQL
SQL : plusieurs facettes Une syntaxe simple Un langage Déclaratif/Associatif Un seul langage pour l’Interrogation, la Manipulation, la Définition et de le Contrôle des données
SQL : plusieurs facettes Définition des données: Create , Drop, alter, rename Interrogation de données: select Modifications de données: Insert, Upadate, Delete Gestion des transactions: Commit, rallback Contrôle des données : Grant Revoke
SQL : Langage de définition de données
Plan Types de données Création et modification de tables Création et modification de contraintes Création et modification de données
Types de données
Types de données Type numérique Entier: INTEGER INT SMALLINT NUMBER() Réel: DECIMAL (NUMBER – Oracle) REAL (ex : 3.27E-4, 24E5 ) DOUBLE PRECISION FLOAT NUMERIC(n,d)
Types de données Type texte Chaîne de caractères de longueur fixe: CHARACTER() CHAR () Chaîne de caractère de longueur variable: CHARACTER VARYING() VARCHAR()
Types de données Type date DATE (Oracle) (ex: ‘1998-08-25’) DATETIME (SQLServer) TIME (Ex: '14:04:32.25‘ ) TIMESTAMP ( ex: '1998-08-25 14:04:32.25)
Types de données Autres types (liés à l'implémentation) Monétaire: CURRENCY MONEY (SQL Server) Booléen: LOGICAL
Création et modification de tables (LDD)
Création de table clause CREATE TABLE La clause permet de créer une structure de stockage. Syntaxe CREATE TABLE <nomtable> ( <nomattribut> <type> [[ DEFAULT <valeurdéfaut> ] [[ CONSTRAINT <nomcontrainte>] <contrainte_attr>], ……………………………………………………………..., [[ CONSTRAINT <nomcontrainte>] <contrainte_tab>], …………………………………………………………… ) A t r i b u s C o n t r a i e S de tables
CREATE TABLE Exemple Oracle CREATE TABLE Entreprise ( id_entreprise INTEGER, nom VARCHAR(30) ); CREATE TABLE Employé ( id_employe INTEGER, nom VARCHAR(30), prenon VARCHAR(20), pays VARCHAR(10) DEFAULT ‘Maroc', Salaire_base NUMERIC(5,2)
CREATE TABLE Exemple SQL Server CREATE TABLE Entreprise ( id_entreprise INTEGER, nom VARCHAR(30) ); CREATE TABLE Employé ( id_employe INTEGER, nom VARCHAR(30), prénom VARCHAR(20), pays VARCHAR(10) DEFAULT ‘Maroc', Salaire_base MONEY
Syntaxe de spécification De Colonne 15
Modification de table clause ALTER TABLE La clause ALTER TABLE permet : d'ajouter un attribut de supprimer un attribut de modifier un attribut d'ajouter une contrainte de supprimer une contrainte
clause ALTER TABLE (Oracle) Syntaxe Oracle: ALTER TABLE <nom_table> ADD <definition_attribut> MODIFY <definition_attribut> DROP <nom_attribut> ADD <definition_contrainte> DROP <nom_contrainte> Exemples ALTER TABLE Entreprise ADD adresse VARCHAR(20); MODIFY adresse VARCHAR(30);
clause ALTER TABLE (SQL Server) Syntaxe SQL Server: ALTER TABLE <nom_table> ADD <definition_attribut> DROP COLUMN <nom_attribut> ALTER COLUMN <nom_attribut> <type_données> ADD CONSTRAINT <definition_contrainte> DROP CONSTRAINT <nom_contrainte> Exemples ALTER TABLE Entreprise ADD adresse VARCHAR(20); ALTER COLUMN adresse VARCHAR(30);
Suppression d'une table clause DROP TABLE La clause DROP TABLE supprime une table. Syntaxe : DROP TABLE <nomtable>; Exemple : DROP TABLE Employe ; Attention: on ne peut supprimer une table, dont la clé primaire est une clé étrangère dans une autre table, avant cette autre table.
Création et modification de contraintes (LDD)
Définition des contraintes clause CREATE TABLE Syntaxe A t r i b u s CREATE TABLE <nom_table> ( <nom_attribut> <type> [ DEFAULT <valeur_défaut> ], [[ CONSTRAINT <nom_contrainte> ]<contrainte> ], …, [ CONSTRAINT <nom_contrainte> <contrainte> ] ) C o n t r a i e s
Contrainte de clé clause PRIMARY KEY L’attribut (ou le groupe d’attributs) doit avoir une valeur unique et identifier un tuple de manière unique Exemple CREATE TABLE entreprise ( id_entreprise INTEGER CONSTRAINT pk_entreprise PRIMARY KEY, nom VARCHAR(20) ); Ou (contrainte de table) : CREATE TABLE entreprise ( id_entreprise INTEGER, nom VARCHAR(20), CONSTRAINT pk_entreprise PRIMARY KEY(id_entreprise) );
Contrainte de non nullité clause NOT NULL L’attribut ne peut pas prendre de valeur nulle, il doit être toujours renseigné. Exemple: CREATE TABLE Employe ( id_employe INTEGER CONSTRAINT pk_employe PRIMARY KEY, nom VARCHAR(30), prénom VARCHAR(20), pays VARCHAR(10) DEFAULT ‘Maroc', id_entreprise INTEGER, Salaire_base MONEY CONSTRAINT nn_salaire NOT NULL);
Contrainte d'unicité clause UNIQUE L’attribut (ou le groupe d’attributs) doit avoir une valeur unique. Exemple: CREATE TABLE Entreprise ( id_entreprise NUMERIC(4) CONSTRAINT pk_entreprise PRIMARY KEY, nom VARCHAR(20) CONSTRAINT unq_nom UNIQUE ); Ou (contraintes de table): id_entreprise NUMERIC(4), nom VARCHAR(20), CONSTRAINT pk_entreprise PRIMARY KEY(id_entreprise), CONSTRAINT unq_nom UNIQUE(nom) );
Contrainte référentielle clause REFERENCES Toute valeur d'un attribut ou d'un groupe d'attributs, appelé clé étrangère, doit exister dans une autre table. Exemple: CREATE TABLE Employé ( id_employe INTEGER CONSTRAINT pk_employe PRIMARY KEY, nom VARCHAR(30), prénom VARCHAR(20), pays VARCHAR(10) DEFAULT ‘Maroc', id_entreprise INTEGER CONSTRAINT fk_employe_entreprise Foreign KEY REFERENCES entreprise(id_entreprise), Salaire_base MONEY CONSTRAINT nn_salaire NOT NULL );
Contrainte de domaine clause CHECK spécifie les valeurs que peut prendre un attribut d’une relation. Exemple: CREATE TABLE Employé ( id_employe INTEGER CONSTRAINT pk_employe PRIMARY KEY, nom VARCHAR(30), prénom VARCHAR(20), Echelle Varchar(10) CONSTRAINT check_Echelle CHECK (Echelle IN (‘Cadre', ‘Technicien’ ), pays VARCHAR(10) DEFAULT ‘Maroc', id_entreprise INTEGER, Salaire_base MONEY );
Contrainte référentielle et suppression clause ON DELETE CASCADE Si le tuple référencé est supprimé alors tous les tuples qui le référencent sont supprimés également. Exemple : CREATE TABLE Employé ( id_employe INTEGER CONSTRAINT pk_employe PRIMARY KEY, nom VARCHAR(30), prénom VARCHAR(20), pays VARCHAR(10) DEFAULT ‘Maroc', id_entreprise INTEGER CONSTRAINT fk_employe_entreprise Foreign KEY REFERENCES entreprise(id_entreprise) ON DELETE CASCADE, Salaire_base MONEY CONSTRAINT nn_salaire NOT NULL);
Un autre exemple CREATE TABLE T_Vendeur( noVendeur NUMERIC(6) CONSTRAINT pk_noVendeur PRIMARY KEY, nom VARCHAR(20) NOT NULL, alias VARCHAR(10) CONSTRAINT unq_alias UNIQUE, noAgence NUMERIC(4)CONSTRAINT fk_noAgence REFERENCES Agence(noAgence) ON DELETE CASCADE NOT NULL , comm CHAR(1) DEFAULT 'O' CHECK (comm IN ('O','N')), salaire NUMERIC(9,2), commission NUMERIC(5,2), CONSTRAINT chk_sal CHECK (commission<salaire), CONSTRAINT chk_comm CHECK ((comm='N' AND commission IS NULL) OR (comm='O' AND commission IS NOT NULL)) );
Suppression des contraintes clause ALTER TABLE Syntaxe : ALTER TABLE <nomtable> DROP CONSTRAINT <nomcontrainte> Exemple : ALTER TABLE Employe DROP CONSTRAINT nn_salaire;
Synthèse
Synthèse Nous avons vu : Types de données Oracle : NUMBER(p), NUMBER(p,s), VARCHAR(l), DATE SQL Server : INT, NUMERIC(n,d), VARCHAR(l), DATETIME Création et modification de tables CREATE TABLE, ALTER TABLE, DROP TABLE Création et modification de contraintes PRIMARY KEY, NOT NULL, FOREIGN KEY, CHECK Création et modification de données SELECT, INSERT, UPDATE, DELETE