Memento SQL I - SQL comme Langage de Définition de Données 1) Créer une table CREATE TABLE <NomTable> ( <NomColonne1> <Type1> [DEFAULT <expr1>] [<ContrainteColonne>] [, <NomColonne2> <Type2> [DEFAULT <expr2>] [<ContrainteColonne>], …], [CONSTRAINT <NomContrainte1>] <ContrainteTable1> [, [CONSTRAINT <NomContrainte2>] <ContrainteTable2>, …] ); <Type> = • Number (<NbChiffres> [, <NbDecimales>]) • VarChar2 (<TailleMax>) • Date <ContrainteColonne> = • NOT NULL • UNIQUE • PRIMARY KEY • REFERENCES <NomTable> (<NomColonne>) • CHECK (<Condition>) <ContrainteTable> = • PRIMARY KEY (<NomColonne1> [, <NomColonne2>, …]) • FOREIGN KEY (<NomColonne1> [, <NomColonne2>, …]) REFERENCES <NomTable> (<NomColonne1> [, <NomColonne2>, …]) • CHECK (<NomColonne ou Expression> <Condition>) • NOT NULL (<NomColonne1> [, <NomColonne2>, …]) • UNIQUE (<NomColonne1> [, <NomColonne2>, …]) 2) Supprimer une table DROP TABLE <NomTable>; 3) Modifier la structure d’une table ALTER TABLE <NomTable> • ADD COLUMN <NomColonne1> <Type1> [DEFAULT <expr1>] [<ContrainteColonne>] • ADD CONSTRAINT <ContrainteTable>; • DROP COLUMN <NomColonne> ; • DROP CONSTRAINT <NomContrainte> ; 4) Insérer une ou plusieurs lignes dans une table INSERT INTO <NomTable> (<NomColonne1> [, <NomColonne2>, …]) • VALUES (<Valeur1> [, <Valeur2>, …]) ; • <Requête> ; 5) Supprimer une ou plusieurs lignes d’une table DELETE FROM <NomTable> [WHERE <Condition> ]; 6) Modifier une ou plusieurs lignes d’une table UPDATE <NomTable> SET <NomColonne1> = <Expression1 ou Requete1> [, <NomColonne2> = <Expression2 ou Requete2>, …] [WHERE <Condition>] ; II - SQL comme langage de requêtes 1) Interrogation de la Base de Données SELECT <Projection> FROM <NomTable1 ou Requête1> [<Alias1>] [, <NomTable2 | Requête2> [<Alias2>] ,…] [WHERE <Condition>] [GROUP BY <NomColonne1> [, <NomColonne2>, …] ] [HAVING <Condition>] [ORDER BY <NomColonne1> [ASC ou DESC] [, <NomColonne2> [ASC ou DESC], …] ]; <Requête1> UNION <Requete2> ; <Requête1> INTERSECT <Requete2> ; <Requête1> MINUS <Requete2> ; <Projection> = • * • [DISTINCT] <NomColonne1 ou Expression1> [ [AS]<Surnom1>] [, <NomColonne2 ou Expression2> [ [AS]<Surnom2>], …] • COUNT (*) [ [AS]<Surnom>] • <OperateurAgregation> ([DISTINCT] <NomColonne1> [, <NomColonne2>, …]) [[AS]<Surnom>] <OperateurAgregation> = • COUNT nombre de lignes ou de valeurs (si DISTINCT) • SUM somme des valeurs • AVG moyenne des valeurs • MAX maximum des valeurs • MIN minimum des valeurs <Condition> = • NOT <Condition> • <Condition> AND <Condition> • <Condition> OR <Condition> • • • • • • • <Expression> <Comparateur> <Expression> <NomColonne> IS [NOT] NULL <Expression> = ou <> <Requête> <Expression> [NOT] IN (<Requête>) EXISTS (<Requête>) <Expression> [NOT] LIKE <Chaine> <Expression> [NOT] BETWEEN <Expression> AND <Expression> <Comparateur> = {=, <>, <, <=, >, >=} 2) Les vues CREATE [OR REPLACE] VIEW <NomVue> [(<NomColonne1> [, <NomColonne2>, …])] AS <Requête>; DROP VIEW <NomVue>; Une vue est une table virtuelle résultat d’une requête. On peut interroger une vue comme on interroge une table. 3) Diverses précisions - Pour <Chaine> (LIKE) : ‘%’ remplace 0, 1 ou n caractères ‘_’ remplace 1 caractère Traitement de l’absence de valeur (NULL) Un calcul numérique n’a pas de valeurs si au moins un terme du calcul n’a pas de valeur. NVL (<Expression1>, <Expression2>) = • <Expression1> si elle est définie • <Expression2> sinon (donc si elle vaut NULL) Fonctions diverses • TO_CHAR (<Nombre ou Date> [, <Format>]) • TO_NUMBER (<Chaine>) • TO_DATE (<Chaine>) • Decode (<Expr1>, <Expr2>, <Expr3>, <Expr4>) Equivaut à : Si <Expr1> == <Expr2> alors <Expr3> sinon <Expr4> • SYSDATE