SQL - Oracle - dcanl.free.frdcanl.free.fr/Etudes/COURS_IUT_IQ2/BDD2/CM/SQL_-_Oracle_1.pdf ·...
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
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
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
Interaction entre SQL et Interaction entre SQL et SQL*PlusSQL*Plus
Serveur
Buffer SQL
SQL*Plus
RésultatsOrdre SQL
Connexion à SQL*PlusConnexion à SQL*Plus
Depuis une session ouverte
C:\> sqlplus [username[/Password[@database]]]
Depuis une ligne de commande
Depuis Programmes/Oracle/Application …
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
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
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
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
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
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
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
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)
Opérateurs arithmétiquesOpérateurs arithmétiques
La multiplication et la division ont priorité sur l'addition et la soustraction
Opérateurs arithmétiquesOpérateurs arithmétiques
Trouver la liste des employés avec leur salaire annuel augmenté d'un bonus de 100 €
Opérateurs arithmétiquesOpérateurs arithmétiques
Trouver le résultat de 1654.52*999
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
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)
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)
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
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
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
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, …])
Fonctions Mono-ligneFonctions Mono-ligne
Numérique
DateConversion
Caractère
Générale
Fonctions Mono-ligne
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
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
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
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
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
Utilisation des datesUtilisation des dates
Comment afficher dans une requête la date du jour
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
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
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
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
Fonctions DateFonctions Date
Afficher les dates d'embauches et le mois de début d'activités des employés ayant commencé en 1987
Fonctions de conversionFonctions de conversion
Conversion de types de données
Conversion implicite Conversion explicite
Conversion impliciteConversion implicite
VARCHAR2DATE
VARCHAR2NUMBER
DATEVARCHAR2 ou CHAR
NUMBERVARCHAR2 ou CHAR
VersDe
Pour les affectations
Conversion impliciteConversion implicite
DATEVARCHAR2 ou CHAR
NUMBERVARCHAR2 ou CHAR
VersDe
Pour l'évaluation d'expression
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
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
TO_CHAR avec les nombresTO_CHAR avec les nombres
Afficher le salaire des employés en dollar
Ou en Euro
Fonction TO_NUMBERFonction TO_NUMBER
Afficher les employés embauchés le 22 février 1981