Le Langage SQL version Oracle



Documents pareils
COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Initiation à SQL. Le langage de communication avec une base de données relationnelles. Application avec PostgreSQL. Nathalie Camelin 2011/2012

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

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

Optimisation SQL. Quelques règles de bases

Langage SQL : créer et interroger une base

Le langage SQL Rappels

SQL Historique

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

Le Langage De Description De Données(LDD)

Bases de données relationnelles

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

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

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

MySQL / SQL EXEMPLES

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

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

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

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

16H Cours / 18H TD / 20H TP

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

Les bases de données

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

Cours Base de données relationnelles. M. Boughanem, IUP STRI

Olivier Mondet

Mejdi BLAGHGI & Anis ASSÈS

TP Contraintes - Triggers

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

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

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

CREATION WEB DYNAMIQUE

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

Compétences Business Objects

Systèmes de Gestion de Bases de Données

Bases de Données. Plan

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

1 Introduction et installation

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

FileMaker 13. Guide de référence SQL

Présentation du module Base de données spatio-temporelles

Support de cours «SGBD»

Bases de données relationnelles & SQL

Création et Gestion des tables

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Information utiles. webpage : Google+ : digiusto/

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

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

Bases de Données Avancées

MODE OPERATOIRE OPENOFFICE BASE

INTRODUCTION : Données structurées et accès simplifié

OpenPaaS Le réseau social d'entreprise

Bases de données Outils de gestion

Faculté des sciences de gestion et sciences économiques BASE DE DONNEES

TP Bases de données réparties

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

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

I. MySQL : Serveur et SGBD

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

SAP BusinessObjects Web Intelligence (WebI) BI 4

SOMMAIRE. Travailler avec les requêtes... 3

Bases de données cours 4 Construction de requêtes en SQL. Catalin Dima

Administration des bases de données. Jean-Yves Antoine

Cours SGBD 1. Concepts et langages des Bases de Données Relationnelles

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

PHP 4 PARTIE : BASE DE DONNEES

INTRODUCTION AU DATA MINING

Introduction aux Bases de Données 2004/2005

Vincent Augusto

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

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

Mysql. Les requêtes préparées Prepared statements

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

TP3 : Creation de tables 1 seance

Bases de données et sites WEB

Quelques aspects du Relationnel-Objet du SGBD Oracle

Bases de données avancées Introduction

Devoir Data WareHouse

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

CHAPITRE 1 ARCHITECTURE

Cours 4. Gestion de la performance. DBA - Maîtrise ASR - Université Evry

A QUOI SERVENT LES BASES DE DONNÉES?

Les BASES de DONNEES dans WampServer

Plan de formation : Certification OCA Oracle 11g. Les administrateurs de base de données (DBA) Oracle gèrent les systèmes informatiques

Gestion des utilisateurs et de leurs droits

Bases de Données Relationnelles. Le Modèle Relationnel

SQL Server et Active Directory

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

Bases de données - Modèle relationnel

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

Bases de données. Mihaela Mathieu

Du 10 Fév. au 14 Mars 2014

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

Whitepaper. Méthodologie de création de rapports personnalisés SQL Server Reporting Services

LE LANGAGE SQL2 1. INTRODUCTION

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

I4 : Bases de Données

Transcription:

Université de Manouba École Supérieure d Économie Numérique Département des Technologies des Systèmes d Information Le Langage SQL version Oracle Document version 1.1 Mohamed Anis BACH TOBJI anis.bach@isg.rnu.tn

Table des matières CHAPITRE 1 INTRODUCTION... 5 1.1 Les tables... 5 1.2 Les types de données... 5 CHAPITRE 2 LA SELECTION SIMPLE... 7 2.1 La sélection simple... 7 2.1.1 La clause SELECT... 7 2.1.2 Le traitement des valeurs NULL... 9 2.1.3 Le mot clé DISTINCT... 9 2.1.4 La clause ORDER BY... 10 2.1.5 La restriction de lignes... 10 2.1.6 Les opérateurs de comparaison... 11 2.1.7 Les opérateurs logiques... 12 CHAPITRE 3 LES FONCTIONS... 13 3.1 Les fonctions de lignes... 13 3.1.1 Les fonctions de caractères... 13 3.1.2 Les fonctions numériques... 15 3.1.3 Les fonctions de date... 16 3.1.4 Les fonctions de conversion... 17 3.1.5 Les fonctions opérant sur tous les types de données... 17 3.2 Les fonctions de groupe... 18 3.2.1 La clause GROUP BY... 20 3.2.2 Groupes dans des groupes... 20 3.2.3 La clause HAVING... 21 CHAPITRE 4 EXTRACTION DES DONNEES A PARTIR DE PLUSIEURS TABLES... 22 4.1 Equi-jointure... 23 4.2 Non Equi-jointure... 23 4.3 Jointure externe... 23 4.4 Jointure d une table à elle-même... 24

CHAPITRE 5 LES OPERATEURS ENSEMBLISTES... 25 5.1 L opérateur UNION... 25 5.2 L opérateur INTERSECT... 25 5.3 L opérateur MINUS... 26 CHAPITRE 6 LES SOUS-REQUETES... 27 6.1 Les sous-requêtes simples (non corrélées)... 27 6.1.1 Les sous-requêtes produisant une seule ligne... 28 6.1.2 Les sous-requêtes produisant plusieurs lignes... 28 6.2 Les sous-requêtes corrélées (synchronisées)... 30 6.3 L opérateur EXISTS... 31 6.4 NOT EXISTS vs NOT IN... 33 6.5 La division et le NOT EXISTS... 33 CHAPITRE 7 LE LANGAGE DE DEFINITION DE DONNEES... 39 7.1 Création d une table CREATE TABLE... 39 7.2 Les contraintes... 39 7.3 Modification d une table ALTER TABLE... 41 7.3.1 Renommer une table... 41 7.3.2 Ajouter une colonne... 41 7.3.3 Renommer une colonne... 42 7.3.4 Modifier une colonne... 42 7.3.5 Supprimer une colonne... 42 7.3.6 Marquer une colonne... 43 7.3.7 Ajouter une contrainte... 43 7.3.8 Désactivation/Activation de contraintes... 43 7.3.9 La suppression d une contrainte... 44 7.4 Suppression d une table DROP TABLE... 44 7.5 Consultation des contraintes... 44 CHAPITRE 8 LE LANGAGE DE MANIPULATION DE DONNEES... 46 8.1 Ajout de données INSERT... 46 8.2 Modification de données UPDATE... 47

8.3 Suppression de données DELETE... 48 ANNEXE A... 49 ANNEXE B... 50 BIBLIOGRAPHIE... 52

Chapitre 1 Introduction Le langage SQL (Structered Query Language) est le langage standard de gestion des bases de données relationnelles. Il permet de définir, manipuler et contrôler les données. Ainsi SQL est constitué de trois sous langages : 1. LDD (Langage de Définition de Données) incluant les requêtes CREATE, ALTER, DROP, RENAME, TRUNCATE. Le LDD permet de créer, de changer et d'éliminer une structure de données Oracle. 2. LMD (langage de manipulation de données) incluant les requêtes SELECT, INSERT, UPDATE, DELETE, MERGE. Le LMD permet de sélectionner, d'insérer, de modifier et de supprimer des lignes à partir d'une table. 3. LCD (langage de contrôle de données) incluant les requêtes GRANT, REVOKE. Le LCD permet de donner ou de priver les droits d'accès à une base de données Oracle ou à ces structures. SQL a été implémenté par IBM dans les années 70, et se base sur l'algèbre relationnelle de Codd. Chaque SGBDR (DB2, Informix, Ingres, SQL SERVER...) présente sa propre version de SQL. ORACLE possède sa propre version. Ceci dit, toutes les versions sont fondées sur le même noyau. ORACLE fournit un éditeur de requêtes SQL, il s'agit de SQL*PLUS. Pour accéder à cet éditeur, il faut être un utilisateur (avoir un login et un mot de passe). Une fois l'éditeur affiché, on peut saisir les requêtes et voir les résultats retournés. 1.1 Les tables La table est l'objet principal d'une base de données car c'est là ou on stocke les données. Oracle identifie une table par son nom. Elle peut avoir une ou plusieurs colonnes (champ, attribut, mesure etc.). Une colonne est caractérisée par son nom et son type de données. La table peut avoir zéro ou plusieurs lignes (enregistrements, objets, tuples etc.). 1.2 Les types de données Oracle offre les types de données suivants : CHAR(n) : Chaîne de caractère fixe de longueur maximale n. VARCHAR2(n) : Chaîne de caractère variable de longueur maximale n. NUMBER(n,d) : Réel avec n le nombre de chiffres du réel, d le nombre de décimaux. Exemple : NUMBER(5,2) inclut tous les nombres de -999.99 999.99 DATE : Le type de données incluant la date et l'heure. Le format par défaut est le suivant : DD-MON-YY, par exemple : `04-0CT-04'.

Chapitre 1 : Introduction 6 LONG : Chaîne de caractère variable de taille maximale 2 Go. CLOB : Chaîne de caractère variable de taille maximale 4 Go. RAW(n) : Données binaires de longueur n. LONG RAW : Données binaires de longueur variable allant jusqu'à 2 Go. BLOB : Données binaires de longueur variable allant jusqu'à 4 Go. BFILE : Données binaires stockées dans un fichier externe allant jusqu'à 4 Go. ROWID : Chaîne hexadécimale représentant l'adresse unique d'une ligne dans une table. C'est un type de données qu'on peut utiliser pour stocker les valeurs retournées par le pseudo colonne ROWID. TIMESTAMP[(n)][WITH TIME ZONE] : Stocke la date et l'heure. L'heure est stockée avec n fractions de secondes, n peut varier de 0 à 9, 6 est la valeur par défaut. Exemple : '04-OCT-04 12.45.32.1654 AM', ici n=4. Si le mot clé WITH TIME ZONE est spécifié alors l'heure est affichée avec la différence entre l'heure de la zone locale et celle de Greenwich. INTERVAL YEAR[(y)] TO MONTH : Stocke une période de temps sous forme d'années et de mois. INTERVAL DAY TO SECOND : Stocke une période de temps sous forme de jours et de secondes. Remarque - Une colonne de type LONG ne peut pas être copiée lors de la création d'une table à l'aide d'une requête SELECT. - Une colonne de type LONG ne peut pas être incluse dans une clause GROUP BY ou HAVING. - Une table ne peut contenir qu'une seule colonne de type LONG. - Une colonne de type LONG ne peut pas avoir de contrainte. - Le type de données CLOB inclut LONG. - Il n'y a pas de type de données booléen, ce dernier peut être simulé par NUMBER(1) ou CHAR(1). - Une colonne non renseignée porte la valeur NULL qui est différente de 0 pour les nombres et de la chaîne vide pour les chaînes de caractères.

2.1 La sélection simple Chapitre 2 La sélection simple La requête SELECT nous permet d'extraire des données à partir d'une base de données. La clause SELECT est suivie d'une ou de plusieurs colonnes, ce sont les colonnes qu'on veut extraire. La clause FROM est suivie par le nom de la table à partir de laquelle on veut afficher les données. Tous les exemples qui suivent se basent sur les tables EMP, DEPT et SALGRADE créées par défaut lors de l'installation d'oracle pour l'utilisateur scott/tiger (voir Annexe A). La requête R1 affiche toutes les colonnes de la table EMP : REQ 1 : SELECT * FROM EMP ; Le symbole * remplace toutes les colonnes de la table EMP. REQ 2 : SELECT EMPNO, ENAME, SAL FROM EMP ; Cette opération est dite opération de projection sur EMP sur les colonnes EMPNO, ENAME et SAL. EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 2.1.1 La clause SELECT Figure 1 : Projection sur EMPNO, ENAME et SAL En réalité la clause SELECT peut inclure des expressions autres que les colonnes. Elle peut être suivie par : Des expressions arithmétiques. Des alias de colonnes. Des colonnes concaténées. Des littéraux (constantes). REQ 3 : Donner les noms et les salaires annuels de tous les employés? SELECT ENAME, SAL*12 FROM EMP ;

.. Chapitre 2 : La sélection simple 8 Voici ce que nous affiche cette requête : ENAME SAL*12 SMITH 9600 ALLEN 19200 WARD 15000 JONES 35700 MARTIN 15000 BLAKE 34200 CLARK 29400 SCOTT 36000 KING 60000 TURNER 18000 ADAMS 13200 JAMES 11400 FORD 36000 MILLER 15600 14 ligne(s) sélectionné(es). REQ 4 : L entête de la 2 ème colonne est sal*12, on peut modifier l entête en lui affectant un alias : SELECT ENAME, SAL*12 ANNSAL FROM EMP ; L alias et la colonne (ou l expression) sont séparés d un espace. ENAME ANNSAL SMITH 9600 ALLEN 19200 REQ 5 : Afficher les codes et les noms concaténés de tous employés? SELECT EMPNO ENAME EMPLOYEE FROM EMP ; EMPLOYEE 7369SMITH 7499ALLEN. REQ 6 SELECT EMPNO ENAME EMPLOYEE, works in, DEPTNO FROM EMP ; EMPLOYEE works in DEPTNO 7369 SMITH works in 20 7499 ALLEN works in 30

Chapitre 2 : La sélection simple 9 Nous avons introduit le littéral (espace) concaténé à EMPNO et ENAME, ainsi que le littéral works in. Ces deux littéraux s affichent pour chaque ligne. 2.1.2 Le traitement des valeurs NULL Si une ligne donnée n a pas de valeur pour une colonne donnée, alors cette case porte la valeur NULL. Toute colonne, quelque soit son type de données, peut avoir la valeur NULL. Ceci dit, certaines contraintes appliquées sur une colonne (PRIMARY KEY, NOT NULL ) l empêchent d avoir la valeur NULL. Cette valeur est traitée différemment des autres valeurs. En effet si NULL est impliquée dans : REQ 7 Une expression arithmétique, alors le résultat de toute l expression est NULL. Une expression logique, alors le résultat de tout l expression est FAUX. Le revenu annuel d un employé est SAL*12 auquel on ajoute la commission COMM. Afficher les salaires annuels de tous les employés? SELECT ENAME, SAL*12 + COMM ANNSAL FROM EMP ; ENAME ANNSAL SMITH ALLEN 19500 WARD 15500 JONES MARTIN 16400 BLAKE CLARK SCOTT KING TURNER 18000 ADAMS JAMES FORD MILLER Quoique le salaire de SMITH est de 9600, le résultat affiché ci-dessus est NULL. La fonction NVL(col,val) nous sera très utile dans ce cas, car cette fonction retourne val si la colonne porte la valeur NULL. REQ 8 La requête correcte est : SELECT ENAME, SAL*12+NVL(COMM,0) ANNSAL FROM EMP ; 2.1.3 Le mot clé DISTINCT Ce mot clé est introduit après SELECT, il sert à éliminer les occurrences, ainsi pour afficher les codes de départements (chacun une seule fois) :

Chapitre 2 : La sélection simple 10 REQ 9 SELECT DISTINCT DEPTNO FROM EMP ; DEPTNO 10 20 30 DISTINCT ne peut être introduite qu une seule fois, juste après le SELECT, et concerne toutes les colonnes qui la suivent. Le résultat est toute combinaison distincte de ces colonnes. REQ 10 Afficher les jobs dans chaque département de manière distincte. SELECT DISTINCT JOB, DEPTNO FROM EMP ; 2.1.4 La clause ORDER BY Le résultat retourné d une requête n a pas d ordre défini. La clause ORDER BY permet de trier le résultat selon une ou plusieurs colonnes dans un ordre croissant ou décroissant. Cette clause doit être la dernière dans la requête et peut être suivie d une colonne, d une expression ou même d un alias. REQ 11 Afficher les employés triés par leurs DEPTNO dans l ordre décroissant et par leurs JOB dans l ordre croissant. SELECT * FROM EMP ORDER BY DEPTNO DESC, JOB ASC ; Chaque groupe de lignes ayant le même DEPTNO est lui-même trié selon le JOB dans l ordre croissant. 2.1.5 La restriction de lignes Supposons que nous voulons afficher les employés du département 20. La requête que nous devons formuler doit retourner chaque ligne de la table EMP dont la colonne DEPTNO a pour valeur 20. Cette opération relationnelle est dite opération de restriction (ou sélection), et se base sur la clause WHERE. EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO Figure 2 : Opération de restriction La clause WHERE est suivie d une condition simple ou composée (combinaison de plusieurs conditions). Chaque ligne satisfaisant cette condition est retournée.

Chapitre 2 : La sélection simple 11 REQ 12 Afficher les employés du département 20. SELECT * FROM EMP WHERE DEPTNO=20 ; REQ 13 Afficher les employés dont la commission est inférieure au salaire. SELECT * FROM EMP WHERE NVL(COMM,0)<SAL ; 2.1.6 Les opérateurs de comparaison Les opérateurs de comparaison classiques sont utilisables pour comparer deux valeurs de même type (<, <=, >, >=, <>,!=, =). Cependant Oracle offre quatre opérateurs de comparaison qui lui sont spéciaux : BETWEEN v 1 AND v 2 col v 1 AND col v 2. IN (v 1,v 2,v 3,,v n ) col= v 1 OR col=v 2 OR...OR col=v n. LIKE pattern (les symboles % et _ sont utilisés pour spécifier un pattern, le % remplace une sous chaîne y compris la chaîne vide, le _ remplace un seul caractère). IS NULL (l opérateur = ne peut pas être utilisée pour comparer une colonne à NULL, on utilise cet opérateur). L opérateur logique NOT peut être utilisé avec ces opérateurs NOT BETWEEN., NOT IN.., NOT LIKE., IS NOT NULL. REQ 14 Donner les noms et les salaires des employés dont le salaire est entre 1000 et 2000? SELECT ENAME, SAL FROM EMP WHERE SAL BETWEEN 1000 AND 2000 ; REQ 15 Donner les employés dont le manager est 7902, 7566 ou 7788? SELECT * FROM EMP WHERE MGR IN (7902, 7566, 7788) ; REQ 16 Afficher les employés dont le nom commence par S? SELECT * FROM EMP WHERE ENAME LIKE S% ; REQ 17 Afficher les employés dont le nom est composé de 4 caractères?

Chapitre 2 : La sélection simple 12 SELECT * FROM EMP WHERE ENAME LIKE ; REQ 18 Afficher les employés qui n ont pas de manager? SELECT * FROM EMP WHERE MGR IS NULL ; 2.1.7 Les opérateurs logiques Les opérateurs logiques sont les trois suivants AND, OR et NOT. Il est inutile de vous rappeler que AND est prioritaire au OR, tout comme les opérateurs * et / qui sont prioritaires au + et au -. REQ 19 Afficher tous les clerks dont le salaire est entre 1000 et 2000? SELECT * FROM EMP WHERE SAL BETWEEN 1000 AND 2000 AND JOB= CLERK ; REQ 20 Afficher tous les managers dont le salaire est supérieur à 1500 et tous les salesman? SELECT * FROM EMP WHERE SAL>1500 AND JOB= MANAGER OR JOB= SALESMAN ; REQ 21 Afficher tous les salesman et tous les managers dont le salaire est supérieur à 1500? SELECT * FROM EMP WHERE SAL>1500 AND (JOB= MANAGER OR JOB= SALESMAN );