SQL - Oracle - dcanl.free.frdcanl.free.fr/Etudes/COURS_IUT_IQ2/BDD2/CM/SQL_-_Oracle_1.pdf ·...

50
Richard CHBEIR Richard CHBEIR Richard CHBEIR Richard CHBEIR Email [email protected] SQL*Plus - Oracle SQL*Plus - Oracle

Transcript of SQL - Oracle - dcanl.free.frdcanl.free.fr/Etudes/COURS_IUT_IQ2/BDD2/CM/SQL_-_Oracle_1.pdf ·...

R ic h a rd C HB EIRR ic h a rd C HB EIRR ic h a rd C HB EIRR ic h a rd C HB EIREmail���[email protected]

SQL*Plus - OracleSQL*Plus - Oracle

[email protected]

DéfinitionDéfinition

SQL*PlusEst un outil d'Oracle possédant son propre langage de commande. Il permet de

Utiliser SQL pour manipuler (interrogation, insertion, mise à jour, etc.) les données d'une BDD OracleGénérer des rapportsInterpréter des commandes PL/SQL

[email protected]

DéfinitionDéfinition

Les ordres SQL

Langage de contrôle des données (LCD)GRANTREVOKE

Contrôle des transactionsCOMMITROLLBACKSAVEPOINT

Langage de définition des données (LDD)

CREATEALTERDROPRENAMETRUNCATE

Langage de manipulation des données (LMD)INSERTUPDATEDELETE

Recherche de donnéesSELECT

[email protected]

SQL*Plus et requêtesSQL*Plus et requêtes

[email protected]

Interaction entre SQL et Interaction entre SQL et SQL*PlusSQL*Plus

Serveur

Buffer SQL

SQL*Plus

RésultatsOrdre SQL

[email protected]

Connexion à SQL*PlusConnexion à SQL*Plus

Depuis une session ouverte

C:\> sqlplus [username[/Password[@database]]]

Depuis une ligne de commande

Depuis Programmes/Oracle/Application …

[email protected]

SQL*Plus et requêtesSQL*Plus et requêtes

Les tables utilisées

[email protected]

Structure d'une tableStructure d'une table

DESC[RIBE] nom_table

Signifie que la colonne doit contenir des données Donne le type de donnée de la colonne

[email protected]

Types de donnéesTypes de données

Valeurs de date et heure situées entre le 1er janvier 4712 av J.C. et le 31 décembre 9999 après J.C.

DATE

Chaîne de caractères de taille fixe sCHAR(s)

Chaîne de caractères de taille variable inférieure ou égale à sVARCHAR(s)

Valeur numérique contenant au maximum p chiffres dont s chiffres après la virgule

NUMBER(p,s)

DescriptionTypes de données

[email protected]

Chaque requête SQL a besoin du caractère ';' pour qu'elle soit exécutéeIl ne tient pas compte de la casse

Des commandes Des noms des tablesDes noms des colonnes

SeleCt oPtioN, sEction FrOm jourNal= Select Option, Section From JOURNAL

Mais pas les littéraux (placés entre simples quotes)Select Feature From JOURNAL Where Section = 'f'

≠ Select Feature From JOURNAL Where Section = 'F'

SQL*Plus et requêtesSQL*Plus et requêtes

[email protected]

Utilisation d'aliasUtilisation d'alias

Renomme un en-tête de colonneUtile dans les calculsSuit immédiatement le nom de la colonne

Le mot clé AS placé entre le nom et l'alias est optionnel

Doit obligatoirement être inclus entre guillemets s'il contient

Des espaces, des caractères spéciauxDes majuscules/minuscules à différencier

[email protected]

SQL*Plus et requêtesSQL*Plus et requêtes

Formatage des donnéesAlignement des entêtes et des données

A gauche pour les chaînes A droite pour les nombres

Environnement SQL*PlusTaille

– Numwidth» Set numwidth 5

Feedback– Show– Set feedback off

[email protected]

SQL*Plus et requêtesSQL*Plus et requêtes

SQL*PlusConvertit tous les noms de colonnes en majusculesLes entêtes ne peuvent pas être plus longs que la longueur définie pour les donnéesSupprime tous les espaces dans les entêtes de colonnes qui sont des fonctions

[email protected]

Utilisation d'aliasUtilisation d'alias

[email protected]

Opérateurs logiquesOpérateurs logiquesSQL*Plus permet d'utiliser les opérateurs suivants

=>>=<<=!=, ^= ou <>Like

% remplace une chaîne de caractères_ remplace un caractère

ISNull, Not NullPas = ou != avec Null

[email protected]

Liste de valeursListe de valeursIN ou NOT IN

Page IN (1,2,3)Section IN ('A', 'B', 'C')

BETWEEN ou NOT BETWEENPage BETWEEN 1 and 3Section BETWEEN 'A' and 'C'

ANYPage = ANY(1, 2, 3)

[email protected]

Opérateurs arithmétiquesOpérateurs arithmétiques

La multiplication et la division ont priorité sur l'addition et la soustraction

[email protected]

Opérateurs arithmétiquesOpérateurs arithmétiques

Trouver la liste des employés avec leur salaire annuel augmenté d'un bonus de 100 €

[email protected]

Opérateurs arithmétiquesOpérateurs arithmétiques

Trouver le résultat de 1654.52*999

[email protected]

Opérateurs AND et OROpérateurs AND et OR

PrioritéJe cherche les employés dont le nom est King ou commence par M qui

touchent un salaire supérieur à 2000

AND est plus fort que OR

[email protected]

Opérateur de concaténationOpérateur de concaténation

Est représenté par ||Permet de concaténer des colonnes (ou des chaînes de caractères) avec d'autres colonnes (ou chaînes)

[email protected]

Opérateur de concaténationOpérateur de concaténation

Est représenté par || ou la fonction CONCAT( ) Permet de concaténer des colonnes (ou des chaînes de caractères) avec d'autres colonnes (ou chaînes)

[email protected]

Combinaisons de tablesCombinaisons de tables

[email protected]

Commandes d'EditionCommandes d'Edition

Indique quelle doit être la ligne couranteN

Affiche et exécute l'ordre SQL actuellement dans le bufferR[UN]

Affiche une ligne nL[IST] n

Affiche toutes les lignes du buffer SQLL[IST]

Insère la ligne texteI[NPUT] texte

Insère un nombre indéfini de lignesI[NPUT]

Supprime la ligne couranteDEL

Efface l'écranCL[EAR] SCR[EEN]

Supprime toutes les ligne du buffer SQLCL[EAR] BUFFER

Supprime le texte dans la ligne couranteC[HANGE] /texte/

Remplace l'ancien texte par le nouveau dans la ligne courante

C[HANGE]/ancien/Nouveau

Ajoute du texte à la fin de la ligne couranteA[PPEND] text

DescriptionCommande

[email protected]

Commandes d'EditionCommandes d'Edition

Exemple

[email protected]

Commandes de FichiersCommandes de Fichiers

Quitte SQL*PlusEXIT ou QUIT

Stocke les résultats de requête dans un fichier. OFF ferme le fichier spool. OUT ferme le fichier et envoie à l'imprimante

Spo[OL] [fichier[.ext]]OFF|OUT]

Appelle l'éditeur et édite le contenu d'un fichier déjà sauvegardé

ED[IT] [fichier[.ext]]

Appelle l'éditeur et sauvegarde le contenu du buffer dans un fichier nommé afiedt.buf

ED[IT]

Exécute un fichier de commandes@ fichier

Exécute un fichier de commandesSTA[RT] fichier[.ext]

Charge le contenu d'un fichier dans le buffer SQL.GET fichier[.ext]

Sauvegarde dans un fichier le contenue actuel du buffer SQL. L'extension par défaut est .sql

SAV[E] fichier[.ext][REP[LACE] APP[END]]

DescriptionCommande

[email protected]

Environnement SQL*PlusEnvironnement SQL*Plus

[email protected]

Fonctions SQLFonctions SQL

Deux types de fonctionsFonctions Mono-ligne

Agissent sur une seule ligne à la foisRamènent un seul résultat

Fonction multi-ligneManipulent des groupes de lignes Ramènent un seul résultat par groupe de lignes

[email protected]

Fonctions mono-ligneFonctions mono-ligne

Syntaxe

Manipulent des éléments de donnéesAcceptent des argumentsAgissent sur chacune des lignes rapportéesRamènent un seul résultat par lignePeuvent modifier les types de donnéesPeuvent être imbriquées

Fonction (colonne|expression, [arg1, arg2, …])

[email protected]

Fonctions Mono-ligneFonctions Mono-ligne

Numérique

DateConversion

Caractère

Générale

Fonctions Mono-ligne

[email protected]

Fonctions caractèresFonctions caractères

Complète une chaîne de caractères sur la droite avec la ‘chaîne’ pour parvenir à une longueur totale de n caractères

RPAD(Colonne|expression,n,’chaîne’)

Complète une chaîne de caractères sur la gauche avec la ‘chaîne’ pour parvenir à une longueur totale de n caractères

LPAD(Colonne|expression,n,’chaîne’)

Ramène une valeur égale à la position du caractère mINSTR(Colonne|expression,m)

Donne le nombre de caractèresLENGTH(Colonne|expression)

Extrait une partie de la chaîne en commençant au mème caractère et sur une longueur de n caractères

SUBSTR(Colonne|expression,m[,n])

Concatène la première chaîne à la deuxièmeCONCAT(Colonne1|expression1, Colonne2|expression2)

Majuscule en début de chaque motINITCAP(Colonne|expression)

Conversion en majusculeUPPER(Colonne|expression)

Conversion en minusculeLOWER(Colonne|expression)

DescriptionFonction

[email protected]

Fonctions caractèresFonctions caractères

[email protected]

Fonctions NumériquesFonctions Numériques

Retourne la valeur absolueEx: ABS(-5) = 5

ABS(n)

Donne la taille de stockage du paramètre (numérique, date, chaîne, etc.)Ex: VSIZE(5) = 2

VSIZE(n)

Donne la racine carré de nEx: SQRT(9) = 3

SQRT(n)

Donne le reste de la division de m par nEx: MOD(1600, 300) = 100

MOD(m,n)

Tronque la valeur du paramètre à une précision de 10-n

Ex: TRUNC(45.636,2) = 45.63

TRUNC(Colonne|expression, n)

Arrondit la valeur du paramètre à une précision de 10-n

Ex: ROUND(45.636,2) = 45.64

ROUND(Colonne|expression, n)

DescriptionFonction

[email protected]

Utilisation des datesUtilisation des dates

Oracle stocke les dates dans un format interne de 7 octets

Siècle, année, mois, jour, heures, minutes, et secondesLe format par défaut est : DD-MON-YYLa fonction SYSDATE renvoie la date et l’heure actuelle

[email protected]

Modèles de Format DateModèles de Format Date

Nombre de jours depuis le 31 décembre 4713 av. J.CJ

Numéro de la semaine dans l'année (ou le mois)WW (ou W)

Numéro du mois exprimé en chiffre romainsRM

Numéro du trimestreQ

Av. J.C. ou apr. J.CBC (ou B.C.), AD (ou A.D.)

Siècle (le S fait précéder les dates av. J.C. d'un signeSCC ou CC

Jour exprimé en toutes lettresDAY

3 premières lettres du nom du jourDY

Mois exprimé en toutes lettresMONTH

Mois exprimé en 2 chiffresMM

Année exprimée en toutes lettresYEAR

Année exprimée avec 4, 3, ou 2 chiffresYYYY, YYY, YY

DescriptionType

[email protected]

Modèles de Format DateModèles de Format Date

Secondes (0 à 59)SS

Minutes (0 à 59)M1

Heure du jour ou heure (1 à 12) ou heure (0 à 23)HH ou HH12 ou HH24

Après-midiPM ou P.M.

MatinAM, A.M.

DescriptionType

[email protected]

Utilisation des datesUtilisation des dates

Comment afficher dans une requête la date du jour

[email protected]

Opérations arithmétiques sur Opérations arithmétiques sur les datesles dates

Ajoute un certain nombre d’heure à une date

DateDate+(nombre d’heures)/24

Donne le nombre de jours entre deux datesNombre de jours

Date-date

Soustrait le Nbre de jour d’une dateDateDate-Nbre de jours

Ajoute le Nbre de jour à une dateDateDate+Nbre de jours

DescriptionRésultatOpération

[email protected]

Opérations arithmétiques sur Opérations arithmétiques sur les datesles dates

On souhaite afficher le nom et le nombre de semaines d’ancienneté de tous les employés du département 10

[email protected]

Fonctions DateFonctions Date

Tronque une date à l’unité précisée par le modèle de format

TRUNC(date[,’fmt’])

Arrondit une date à l’unité précisée par le modèle de format

ROUND(date[,’fmt’])

Dernier jour du moisLAST_DAY(date)

Fournit la date de la première occurrence du jour spécifié ‘char’ ou nombre de jour n après la date fournie

NEXT_DAY(date, ‘char’)NEXT_DAY(date, n)

Ajoute un nombre n de mois calendaires à une date

ADD_MONTHS (date, n)

Nombre de mois situés entre deux dates. La partie non entière représente une portion de mois

MONTHS_BETWEEN(date1, date2)

DescriptionFonction

[email protected]

Fonctions DateFonctions Date

01/01/02TRUNC('25-JAN-02',’YEAR’)

01/02/02ROUND('25-JAN-02',’MONTH’)

31/01/02LAST_DAY('23-JAN-02')

28/01/02NEXT_DAY('23-JAN-02', 'LUNDI')NEXT_DAY('23-JAN-02', 1)

11-JUL-99ADD_MONTHS ('11-JAN-99', 6)

19.6774194MONTHS_BETWEEN('01-SEP-99','11-JAN-98')

RésultatExemple

[email protected]

Fonctions DateFonctions Date

Afficher les dates d'embauches et le mois de début d'activités des employés ayant commencé en 1987

[email protected]

Fonctions de conversionFonctions de conversion

Conversion de types de données

Conversion implicite Conversion explicite

[email protected]

Conversion impliciteConversion implicite

VARCHAR2DATE

VARCHAR2NUMBER

DATEVARCHAR2 ou CHAR

NUMBERVARCHAR2 ou CHAR

VersDe

Pour les affectations

[email protected]

Conversion impliciteConversion implicite

DATEVARCHAR2 ou CHAR

NUMBERVARCHAR2 ou CHAR

VersDe

Pour l'évaluation d'expression

[email protected]

Conversion expliciteConversion explicite

Convertit une chaîne de caractères en date. Le format par défaut est DD-MON-YY

TO_DATE(chat,['fmt'])

Convertit une chaîne en un nombreTO_NUMBER

Convertit un nombre ou une date en une chaîne de type VARCHAR2

TO_CHAR(nombre|date,['fmt'])

RésultatFonction

[email protected]

TO_CHAR avec les DatesTO_CHAR avec les Dates

[email protected]

TO_CHAR avec les NombresTO_CHAR avec les Nombres

1,234999,999Séparateur de milliers,

1234.00999999.99Point décimal.

€1234L999999Symbole monétaire local flottantL

$1234$999999Signe dollar flottant$

001234099999Affichage des zéros de gauche0

1234999999Détermine la largeur maximum de l'affichage9

RésultatExempleDescriptionElément

[email protected]

TO_CHAR avec les nombresTO_CHAR avec les nombres

Afficher le salaire des employés en dollar

Ou en Euro

[email protected]

Fonction TO_NUMBERFonction TO_NUMBER

Afficher les employés embauchés le 22 février 1981