MOTS-CLES COMMENTAIRES EXEMPLES

Documents pareils
ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Langage SQL : créer et interroger une base

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Le Langage De Description De Données(LDD)

SQL Historique

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Bases de Données relationnelles et leurs systèmes de Gestion

Olivier Mondet

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

Le Langage SQL version Oracle

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

MySQL / SQL EXEMPLES

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

TP3 : Creation de tables 1 seance

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

Création et Gestion des tables

FileMaker 13. Guide de référence SQL

Bases de données relationnelles

1 Introduction et installation

Introduction au Système de Gestion de Base de Données et aux Base de Données

Pour les débutants. langage de définition des données

Les bases de données

Le langage SQL Rappels

TP Contraintes - Triggers

Cours Bases de données 2ème année IUT

Intégrité des données

Compétences Business Objects

Bases de données Cours 4 : Le langage SQL pour ORACLE

Partie 0 : Gestion des tablespace et des utilisateurs... 3

Cours SQL. Base du langage SQL et des bases de données

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Introduction aux Bases de Données 2004/2005

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

16H Cours / 18H TD / 20H TP

Systèmes de Gestion de Bases de Données

Optimisation SQL. Quelques règles de bases

Le langage SQL (première partie) c Olivier Caron

LE LANGAGE SQL2 1. INTRODUCTION

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

I. MySQL : Serveur et SGBD

Université de Nice Sophia-Antipolis. Langage SQL. version 5.7 du polycopié. Richard Grin

Résumé S Q L. Auteur: Alexandre PATIN Edition: 22 février alexandre.patin@free.fr URL :

Durée : 4 heures Le sujet se présente sous la forme de deux dossiers indépendants

Auto-évaluation Oracle: cours de base

I4 : Bases de Données

MODE OPERATOIRE OPENOFFICE BASE

BTS/CGO P10 SYSTEME INFORMATION Année

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

Historisation des données

Partie II Cours 3 (suite) : Sécurité de bases de données

A QUOI SERVENT LES BASES DE DONNÉES?

Système de Gestion de Bases de Données Relationnelles. MySQL. Youssef CHAHIR

1. Base de données SQLite

CREATION WEB DYNAMIQUE

Intégrité sémantique dans les bases de données relationnelles

TD n 10 : Ma première Base de Données

1 Position du problème

Devoir Data WareHouse

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

SQL Server ressource SOMMAIRE

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

PHP 5. La base de données MySql. A. Belaïd 1

SQL Serveur Programme de formation. France Belgique Suisse - Canada. Formez vos salariés pour optimiser la productivité de votre entreprise

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Bases de données et sites WEB

WEB DEVELOPER SGBD SYSTEME DE GESTION DE BASES DE DONNEES L étudiant sera capable :

Corrigés détaillés des exercices

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Vincent Augusto

SUPPORT SQL. Thierry GRANDADAM

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Les BASES de DONNEES dans WampServer

MySQL avec Mac OS X. Quelques manipulations avec le terminal sont nécessaires si une version de MySQL est déjà lancée:

Durée : 4 heures coefficient : 4 Le sujet se présente sous la forme de deux dossiers indépendants

La présente publication est protégée par les droits d auteur. Tous droits réservés.

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

Notes de cours : bases de données distribuées et repliquées

Mejdi BLAGHGI & Anis ASSÈS

Gestion des utilisateurs et de leurs droits

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

A QUOI SERVENT LES BASES DE DONNÉES?

SQL Server 2000, Analysis Services et DTS

Bases de données. Yamine AIT AMEUR. INPT-ENSEEIHT DIMA 2 Rue Charles Camichel Toulouse Cedex 7

Gestion de base de données

Comprendre les bases de données

Exercices sur SQL server 2000

Gestion des transactions et accès concurrents dans les bases de données relationnelles

TP 8: LES OPERATEURS ENSEMBLISTES

Structured Query Language

Support de cours. Introduction à SQL et MySQL. 2003, Sébastien Namèche

1 Modélisation d une base de données pour une société de bourse

Support de Cours REQUÊTES TRANSACT-SQL DANS MICROSOFT SQL SERVER Stéphane N GUESSAN Groupe Pigier Abidjan Version 1.

OpenPaaS Le réseau social d'entreprise

Bases de données. Mihaela Mathieu

SQL Server Cyril Gruau. 11 février 2003

Transcription:

Aide mémoire SQL MOTS-CLES COMMENTAIRES EXEMPLES SELECT Opérateur de projection, permettant de choisir les attributs à afficher Suivi de noms d'attributs ou de * (indiquant tous les attributs) FROM WHERE DISTINCT ORDER BY ' Suivi d'une ou plusieurs noms de table. La présence de plusieurs tables réalise le produit cartésien de ces tables. Opérateur de sélection, qui permet de choisir des n-uplets selon certains critères (séparés par AND ou OR) Cet opérateur permet aussi de réaliser des jointures, le plus souvent par égalité des deux colonnes de sens identique dans les deux tables. La clause DISTINCT permet d éliminer les doublons : si dans le résultat plusieurs n-uplets sont identiques, un seule sera conservé. La clause ORDER BY permet de trier les résultats par ordre croissant (ASC) ou décroissant (DESC). Le tri peut se faire sur un ou plusieurs attributs. L option ASC est prise par défaut pour chacune des expressions citées. Les cotes sont obligatoires pour entourer les chaînes de caractères et les dates. Affiche le nom et le prénom de tous les élèves SELECT nomeleve, prenomeleve ; Affiche tous les articles (toutes les colonnes) SELECT * FROM Article; Affiche la désignation de tous les articles de la commande numéro 1258 Critère de jointure! SELECT Designation FROM Article, Commande WHERE Article.numArt = Commande.numArt AND numcom = 1258; Critère de sélection! Afficher toutes les villes où habite au moins un élève SELECT DISTINCT villeeleve ; Afficher la liste des employés par salaire décroissant SELECT nomempl, salaire FROM Employe ORDER BY salaire DESC; Afficher les élèves par ordre alphabétique du nom puis du prénom SELECT * ORDER BY nomeleve, prenomeleve; Recherche tous les articles de couleur rouges : SELECT numart FROM Article WHERE couleur = ROUGE ; IN NULL LIKE IN indique si la valeur est égale à l'une de celles qui se trouvent entre parenthèses (peuvent être les résultats d'une sousrequête). On peut utiliser aussi NOT IN (la valeur n'est égale à aucune de celles de la liste) Indique une valeur non définie (non renseignée). Attention, 0 n'est pas une valeur NULL L'opérateur de comparaison est IS ou IS NOT Permet de comparer une valeur avec une chaîne non complète. % désigne plusieurs caractères _ désigne un seul caractère quelconque (ou aucun) SELECT numeleve WHERE datenaissance = '12/10/1980'; Liste des employés occupant la fonction de programmeur, analyste ou développeur SELECT nomempl, numempl FROM Employe WHERE fonction IN ('programmeur', 'analyste', developpeur'); Afficher le nom des professeurs dont on ne connaît pas le prénom SELECT nomprof WHERE prenomprof IS NULL; Recherche tous les noms commençant par DE : SELECT nomcom, prenomcom, ruecom FROM Commercants WHERE nomcom LIKE 'DE%';!

UPPER LOWER BETWEEN AS Opérateurs de calcul (+ - * ) EXISTS UPPER transforme tous les caractères d un champ en majuscule. Attention, il faut marquer le nom voulu en majuscule. LOWER les transforme en minuscule. Attention, il faut marquer le nom voulu en minuscule. Indique si une valeur est comprise entre deux valeurs. Les extrêmes sont inclus dans l'intervalle. Permet de renommer un attribut (seulement pour l'affichage de la réponse à la requête) Permet d'afficher le résultat d'un calcul à partir d'un ou plusieurs attributs. Permet de tester l'existence de données dans une sous-requête. Si la sous-requête renvoie au moins une ligne, même remplie de marqueurs NULL, le prédicat est vrai. Dans le cas contraire le prédicat à la valeur faux. Le prédicat EXISTS peut être combiné avec l'opérateur de négation NOT (NOT EXISTS) pour tester l'absence de données dans la sousrequête. SELECT numart FROM Article WHERE UPPER (couleur) = 'BLEU'; SELECT NumArt FROM Article WHERE LOWER (couleur) = 'blanc'; Articles qui coûtent entre 10 et 20 euros inclus. Select numart, nomart FROM Article WHERE prix BETWEEN 10 AND 20; Affiche la référence et la marge de tous les produits SELECT refprod, (prixvente prixachat) AS marge FROM Produit; Affiche la référence et la marge de tous les produits SELECT refprod, (prixvente prixachat) FROM Produit; SELECT nomattr1 FROM table1 WHERE EXISTS (SELECT * FROM table2 WHERE condition); SELECT nomattr1 FROM table1 WHERE NOT EXISTS (SELECT * FROM table2 WHERE condition); OPERATEURS ENSEMBLISTES UNION INTERSECT MINUS Il est possible de faire l union des résultats de deux requêtes. L'union élimine les doublons. On a alors A! B (ou A + B - AB). Il est possible de faire l intersection des résultats de deux requêtes. On a alors : A B. Il est possible de faire la différence des résultats de deux requêtes. On a alors : A B. La liste des villes où habitent des élèves et des professeurs : SELECT villeeleve UNION SELECT villeprof ; La liste des villes où habitent à la fois des élèves et des professeurs : SELECT DISTINCT VilleEleve INTERSECT SELECT DISTINCT VilleProf ; La liste des villes où habitent seulement des élèves et pas de professeurs : SELECT DISTINCT VilleEleve MINUS SELECT DISTINCT VilleProf ; #

OPERATEURS D'AGREGATION COUNT(*) COUNT(attribut) SUM(attribut) AVG(attribut) MAX(attribut) MIN(attribut) Permet de compter le nombre de lignes (nuplets) résultats. Permet de compter le nombre de lignes où l'attribut indiqué a une valeur non nulle. Permet d'additionner les valeurs d'une colonne numérique pour les n-uplets sélectionnés. (A ne pas confondre avec COUNT!) Permet d'afficher la moyenne des valeurs d'une colonne numérique pour les lignes sélectionnées. Permet d'obtenir la valeur maximale (ou minimale) d'un attribut pour un ensemble de n-uplets sélectionnés. Compte le nombre d'élève habitant Cachan et appelle le résultat NbCachanais. SELECT COUNT (*) AS NbCachanais WHERE villeeleve = 'CACHAN'; Calcul le cumul (la somme) de tous les opérations de débit du compte 1259 le 09/01/04. SELECT SUM(montantOperation) FROM Operations WHERE compte = '1259' AND date = '09/01/04'; Afficher le salaire moyen des analystes SELECT AVG(salaire) FROM Employe WHERE fonction = 'analyste'; Affiche le salaire de la secrétaire la mieux payée : SELECT MAX(salaire) FROM Employe WHERE function = 'secretaire'; GROUP BY, HAVING GROUP BY HAVING Permet de subdiviser la table en groupes, chaque groupe étant l ensemble des n-uplets ayant une valeur commune pour les expressions spécifiées. Les attributs de la clause SELECT doivent alors être des opérateurs d'agrégation ou des expressions figurant dans la clause GROUP BY. Sert à préciser quels groupes doivent être sélectionnés. Cette clause se place après GROUP BY et le prédicat ne peut porter que sur des opérateurs d'agrégation ou des expressions figurant dans la clause GROUP BY. GROUP BY expr1, expr2, Affiche le nombre de professeurs par bureau SELECT bureau, COUNT(nomProf) GROUP BY bureau; HAVING predicat Affiche les bureaux qui accueillent plus de 2 professeurs SELECT bureau GROUP BY bureau HAVING COUNT (*) >2; ANY, ALL Le critère de recherche employé dans une clause WHERE (l expression à droite d un opérateur de comparaison) peut être le résultat d un SELECT. Dans le cas des opérateurs classiques, la sous-interrogation ne doit ramener qu un n-uplet et un attribut. Elle peut ramener plusieurs n-uplets à la suite de l opérateur [NOT] IN, ou à la suite des opérateurs classiques moyennant l ajout d un mot clé (ANY ou ALL). ANY La comparaison est vraie si elle est vraie pour au moins un élément de l ensemble (donc fausse si l ensemble des n-uplets est vide). WHERE expr1 = /!= / < / > / <= / >= expr2 ANY (SELECT ); ALL La comparaison est vraie si elle est vraie pour tous les éléments de l ensemble (donc vraie si l ensemble des n-uplets est vide). WHERE expr1 = /!= / < / > / <= / >= expr2 ALL (SELECT ); $

Affiche le bureau qui accueille le plus de professeurs SELECT bureau GROUP BY bureau HAVING COUNT (*) >= ALL(SELECT COUNT (*) GROUP BY bureau); Jointure JOINTURES C'un produit cartésien entre deux tables suivi d'une sélection selon le critère de jointure (n'importe quelle opération de comparaison entre un attribut de table1 avec un attribut de table2). Généralement, le = (équi-jointure). SELECT attr1, attr2, FROM table1, table2 WHERE table1.attr1 = table2.attr2; JOINTURES INTERNES Jointure interne Il s agit d une jointure naturelle mettant deux fois en jeu la même table. Ceci permet de rassembler venant d un n-uplet d une table avec les informations venant d un autre n-uplet. A noter qu il est obligatoire de spécifier deux fois la table source dans la clause FROM, en attribuant un alias à l une des occurrences. SELECT table.expr1, alias.expr2 FROM table, table alias WHERE table.champ1 = alias.champ2; LEFT / RIGHT / FULL OUTER JOIN JOINTURES EXTERNES Lorsqu on effectue une jointure naturelle sur deux tables, il est possible qu un n-uplet d une table n ait pas de correspondant dans l autre. Dans ce cas, le n-uplet en question n est pas affiché. La jointure externe permet de résoudre ce problème par l ajout de n-uplets fictifs, qui réalisent la correspondance avec les n-uplets de l autre table n ayant pas de correspondant réel (LEFT OUTER JOIN correspond à l ajout de n-uplets fictifs dans table1). SELECT expr1, expr2, FROM table1 LEFT OUTER JOIN table2 ON table1.champ1 = table2.champ2; SELECT expr1, expr2, FROM table1 RIGHT OUTER JOIN table2 ON table1.champ1 = table2.champ2; CREATION, MISE A JOUR, DESTRUCTION DE TABLES ET CONTRAINTES CREATE TABLE ALTER TABLE table est le nom donné à la nouvelle table. col1, col2, sont les noms des attributs. type1, type2, sont les types des données contenues dans les attributs. Pour modifier la structure d une base de données existante. CREATE TABLE table (col1 type1, col2 type2 ); Ajoute les colonnes spécifiées à une table existante. ALTER TABLE table ADD (col1 type1, col2 type2, ); Modifie la définition des colonnes spécifiées. ALTER TABLE table MODIFY (col1 type1, col2 type2 ); Supprime la colonne col. ALTER TABLE table DROP col; %

DROP TABLE CONSTRAINT PRIMARY KEY UNIQUE FOREIGN KEY CHECK Supprime la définition d une table et par conséquent l ensemble des n-uplets qu elle contient. Définit et nomme une contrainte sur un ou plusieurs attributs. Indique la clé primaire de la table. Aucun des attributs de cette clé ne doit avoir une valeur NULL. Interdit qu un attribut (ou la concaténation de plusieurs attributs) contienne deux valeurs identiques. Indique que la concaténation de col1, col2, est une clé étrangère faisant référence à la concaténation de col 1, col 2, de table. Si col 1,col 2, sont omises, la clé primaire de table est prise par défaut. Donne une condition devant être vérifiée par un ou plusieurs attributs. DROP TABLE table; CONSTRAINT nomcontrainte contrainte PRIMARY KEY (col1, col2, ) UNIQUE (col1, col2, ) FOREIGN KEY (col1, col2, ) REFERENCES table [(col 1,col 2, )] CHECK (condition) PRINCIPAUX TYPES DE DONNEES CHAR(taille) Chaînes de caractères de longueur fixe CHAR(3) VARCHAR(taillemax) Chaînes de caractères de longueur variable VARCHAR(10) SMALLINT Entier court (sur 16 bits : de -32768 à 32757) INTEGER Entier long (sur 32 bits : de -2 147 483 648 à 2 147 483 647) NUMBER(n,[d]) Nombres décimaux qui ont n chiffres dont d chiffres après la virgule REAL Nombre à virgule flottante (faible précision) FLOAT Nombre à virgule flottante (grande précision) DOUBLE PRECISION DATE Date (jour, mois, année) 10/01/2002 TIME Heures, minutes et secondes (les secondes peuvent 10:12:42.85 comporter un certain nombre de décimales) TIMESTAMP Moment précis : date avec heures, minutes et secondes (6 chiffres après la virgule, c'est-à-dire en microsecondes) CREATION, MISE A JOUR, DESTRUCTION DE N-UPLETS Nombre à 5 chiffres avant la virgule et 2 après la virgule : NUMBER(7,2) INSERT UPDATE DELETE Insère un nouvel n-uplet dans table. Si (col1, col2, ) est omis, l ordre utilisé par défaut est celui spécifié lors de la création de la table. A l inverse, si cette liste est donnée, les attributs n y figurant pas auront la valeur NULL. Modifie les n-uplets de table qui vérifient le prédicat. Si predicat est omis, tous les n-uplets sont mis à jour. Supprime les n-uplets de table qui vérifient le prédicat. Si predicat est omis, tous les n-uplets sont supprimés. VUES INSERT INTO table [(col1, col2, )] VALUES (val1, val2, ) UPDATE table SET col1 = expr1, col2 = expr2, WHERE predicat DELETE FROM table WHERE predicat &

CREATE VIEW Permet de créer une vue en spécifiant une requête. Remarque : il est impossible de modifier le schéma d une vue. Il faut alors la supprimer et la recréer. CREATE VIEW nomvue AS unerequeteselect; CREATE VIEW BureauxProfs AS SELECT bureau, COUNT(nomProf) GROUP BY bureau; DROP VIEW Supprime une vue. DROP VIEW nomvue; GRANT GESTION DE PRIVILEGES Permet au propriétaire de table de donner à utilisateur des droits d accès sur celle-ci (droit de lecture, de modification, de suppression). Si l option WITH GRANT OPTION est spécifiée, utilisateur pourra à son tour transmettre ces droits. GRANT privilege ON table TO utilisateur [WITH GRANT OPTION] REVOKE Permet de reprendre un privilège à un utilisateur. REVOKE privilege ON table FROM utilisateur '