Functii Join Sub Queries

download Functii Join Sub Queries

of 174

  • date post

    14-Jul-2015
  • Category

    Documents

  • view

    29
  • download

    0

Embed Size (px)

Transcript of Functii Join Sub Queries

ORACLE

ZIUA 3

CASE AND CHARACTER MANIPULATION

Selectarea si folosirea functiilor single-row care realizeaza conversii si si/sau manipularea sirurilor de caractere Selectarea si folosirea functiilor LOWER, UPPER si INITCAP (transformare tipurilor de litere) Selectarea si folosirea functiilor CONCAT, SUBSTR, LENGTH, INSTR,LPAD, RPAD, TRIM si REPLACE (folosite pentru manipularea sirurilor de caractere)

CASE AND CHARACTER MANIPULATIONTabela DUALTabela DUAL are o singura linie (denumita X) si o singura coloana (denumita DUMMY) si este folosita pentru utilizarea instructiunilor SELECT care nu se aplica direct asupra tabelelor. Interogarile care folosesc tabela DUAL furnizeaza ca rezultat o linie. Tabela DUAL poate fi utila in realizarea calculelor si pentru evaluarea expresiilor ce nu contin date din tabele. Tabela va fi folosita pentru a studia multe dintre functiile single-row. Exemplu SELECT (319/29) +12 FROM DUAL; Rezultat: 23

CASE AND CHARACTER MANIPULATIONSINGLE-ROW CHARACTER FUNCTIONS Functiile caracter single-row sunt impartite in doua categorii: Functii care fac conversii asupra tipurilor de litere din sirurile de caractere (LOWER, UPPER, INITCAP) Functii care realizeaza diverse operatii asupra sirurilor de caractere concatenare, extragere de subsiruri, cautare etc. (CONCAT, SUBSTR, LENGTH, INSTR, LPAD | RPAD, TRIM, REPLACE) Functiile single-row pot fi folosite in clauzele SELECT, WHERE si ORDER BY.

CASE AND CHARACTER MANIPULATIONFUNCTII CARE FAC CONVERSII ASUPRA TIPURILOR DE LITERE DIN SIRURILE DE CARACTERE (CASE-MANIPULATION FUNCTIONS) Aceste functii pot fi folosite in majoritatea clauzelor instructiunii SELECT. 1) LOWER(column|expression) converteste toate literele in litere

miciExemplu

SELECT title FROM d_cds WHERE LOWER(title) = 'carpe diem';

CASE AND CHARACTER MANIPULATIONFUNCTII CARE FAC CONVERSII ASUPRA TIPURILOR DE LITERE DIN SIRURILE DE CARACTERE 2) UPPER(column|expression) converteste toate literele in litere mari. SELECT title FROM d_cds WHERE UPPER(title) = 'CARPE DIEM'; 3) INITCAP( column|expression) converteste litera de inceput a fiecarui cuvant in litera mare. SELECT title FROM d_cds WHERE INITCAP(title) = 'Carpe Diem';

CASE AND CHARACTER MANIPULATIONFUNCTII CARE REALIZEAZA DIVERSE OPERATII ASUPRA SIRURILOR DE CARACTERE (CHARACTER-MANIPULATION FUNCTIONS) 1) CONCAT concateneaza doua siruri de caractere Exemplu: CONCAT ( Hello , World ) rezultatul=HelloWorld 2) SUBSTR - extrage un subsir de o dimensiune specificata Exemplu: SUBSTR ( HelloWorld , 1, 5) rezultatul=Hello 3) LENGTH: returneaza o valoare numerica ce reprezinta lungimea unui sir de caractere Exemplu: LENGTH ( HelloWorld ) rezultatul=10 4) INSTR: determina pozitia primei aparitii a unui caracter dat intr-un sir de caractere Exemplu: INSTR ( HelloWorld , W ) rezultatul=6

CASE AND CHARACTER MANIPULATIONFUNCTII CARE REALIZEAZA DIVERSE OPERATII ASUPRA SIRURILOR DE CARACTERE 5) LPAD: completeaza la afisare, cu un caracter dat, partea stanga a valorii de afisat, pe o anumita lungime. Exemplu: LPAD (salary, 10, * ) rezultatul=*****24000 6) RPAD: completeaza la afisare, cu un caracter dat, partea dreapta a valorii de afisat, pe o anumita lungime. Exemplu: RPAD (salary, 10, * ) rezultatul=24000***** 7) TRIM: Elimina toate caracterele specificate atat de la inceputul cat si de la sfarsitul unui sir de caractere (implicit se elimina si de la inceput si de la sfarsit). Sintaxa este urmatoarea: trim ( [leading | trailing | both [character(s) to be removed ] from] string to trim) Exemplu: TRIM ( H FROM HelloWorld ) rezultatul=elloWorld

CASE AND CHARACTER MANIPULATIONFUNCTII CARE REALIZEAZA DIVERSE OPERATII ASUPRA SIRURILOR DE CARACTERE 8) REPLACE: inlocuieste o secventa de caractere dintr-un string cu un alt sir de caractere. Sintaxa este urmatoarea: replace (string1, string_to_replace, [replacement_string] ) - string1 sirul in care se face inlocuirea secventei de caractere - string_to_replace secventa de caractere ce va fi inlocuita - [replacement_string] sirul de caractere ce va inlocui secventa Exemplu: REPLACE('JACK and JUE','J','BL') rezultatul=BLACK and BLUE

CASE AND CHARACTER MANIPULATIONAPLICATII1. Care este lungimea sirului de caractere Oracle Internet Academy ? 2. Care este pozitia caracterului I in Oracle Internet Academy ?

NUMBER FUNCTIONSFunctiile numerice de tipul single-row pot avea ca parametri numere si furnizeaza ca rezultate valori numerice. Cele trei functii numerice sunt urmatoarele:

ROUND TRUNC MOD

NUMBER FUNCTIONSFunctia ROUNDeste folosita pentru a rotunji numere la un numar specificat de zecimale. - functia poate rotunji numerele si in partea stanga a punctului zecimal. - functia poate fi folosita si cu date calendaristice. Sintaxa: ROUND(column|expression, decimal places) Daca nu este specificat numarul de zecimale (decimal places) sau acesta este 0, numarul nu va avea zecimale.

NUMBER FUNCTIONSFunctia ROUND

exemple

ROUND(45.926) - rezultatul=46 ROUND(45.926, 0) rezultatul=46 ROUND(45.926,2) - rezultatul=45.93 ROUND(45.926, -1) rezultatul=50 ROUND(45.926,-2) rezultatul=0

NUMBER FUNCTIONSFunctia TRUNCeste folosita pentru a trunchia o valoare la un numar specificat de zecimale Daca numarul de zecimale nu este specificat, atunci implicit este considerat 0 functia poate fi folosita si cu date calendaristice. Sintaxa: TRUNC(column|expression, decimal places)-

NUMBER FUNCTIONSFunctia TRUNC

exemple

TRUNC(45.926) - rezultatul=45 TRUNC(45.926, 0) rezultatul=45 TRUNC(45.926,2) - rezultatul=45.92 TRUNC(45.926, -1) rezultatul=40 TRUNC(45.926,-2) rezultatul=0

NUMBER FUNCTIONSFunctia MOD- se foloseste pentru a determina restul impartirii a doua numere intregi

Exemple:1) MOD( 1600 / 300) rezultatul este 100

2) SELECT last_name, salary, MOD(salary, 2) As "Mod Demo" FROM f_staffs WHERE staff_type IN( Order Taker , Cook , Manager'); Coloana "Mod Demo indica daca salariul este numar par sau impar.

NUMBER FUNCTIONSAPLICATII 1. Sa se afiseze campurile last_name si salary pentru acei angajaticare lucreaza in departmentul 80. Sa se dea fiecarui angajat o crestere salariala de 5.33% iar rezultatul sa fie trunchiat la doua zecimale. SELECT last_name, TRUNC(salary * .0533,2) FROM employees WHERE department_id = 80;

NUMBER FUNCTIONS2. Folositi tabela DUAL pentru a realiza urmatoarele:

845.553 rotunjit la o pozitie zecimala 30695.348 rotunjit la doua pozitii zecimale 30695.348 - rotunjit cu -2 pozitii zecimale (cu 2 pozitii zecimale la stanga) 2.3454 trunchierea lui 454 de pozitiile zecimale

NUMBER FUNCTIONS

SELECT round(845.553,1) FROM DUAL; SELECT round(30695.348,2) FROM DUAL;

SELECT ROUND(30695.348,-2) FROM DUAL; SELECT TRUNC(2.3454,1) FROM DUAL;

DATE FUNCTIONS- Formatul implicit pentru datele calendaristice este DD-MON-RR Exemplu: 02-DEC-99 - Datele calendaristice sunt stocate intern in format numeric fiind reprezentate: secolul, anul, luna, ziua, orele, minutele si secundele. Aceasta reprezentare permite efectuarea de operatii aritmetice asupra datelor calendaristice. - Datele calendaristice Oracle se regasesc in intervalul de valori: 1 ianuarie 4712 i.c. 31 decembrie 9999 d.c. - Atunci cand inseram intr-o tabela o inregistrare care are un camp de tip data calendaristica informatia cu privire la secol este preluata de la functia SYSDATE. - SYSDATE este o functie pentru date calendaristice care ne furnizeaza data si ora curenta a serverului bazei de date Oracle

DATE FUNCTIONSExemplu: pentru afisarea datei curente, se foloseste tabela DUAL SELECT SYSDATE FROM DUAL - Tipul de date data calendaristica stocheaza intotdeauna anul sub forma a 4 cifre 2 cifre pentru secol si 2 cifre pentru an Functii pentru date calendaristice: MONTHS_BETWEEN, ADD_MONTHS, NEXT_DAY, LAST_DAY, ROUND, TRUNC. Inafara de funcia MONTHS_BETWEEN, toate celelate functii returneaza valori de tip data calendaristica. - De asemenea, asupra datelor calendaristice se pot face operatii aritmetice

DATE FUNCTIONSEXEMPLE:1) SELECT last_name, hire_date+60 FROM employees 2) SELECT last_name, (SYSDATE-hire_date)/7 FROM employees 3) SELECT order_no, amt_due, purch_date+30 Due Date FROM dual

DATE FUNCTIONS

MONTHS_BETWEEN determina numarul de luni dintre 2 date calendaristice ADD_MONTHS aduna un anumit numar de luni la o data calendaristica NEXT_DAY - returneaza data calendaristica corespunzatoare zilei din saptamana specificate, care urmeaza unei anumite date calendaristice LAST_DAY returneaza ultima zi a lunii corespunzatoare datei specificate ROUND rotunjeste o data calendaristica TRUNC trunchiaza o data calendaristica

DATE FUNCTIONSExemple:1) 2) 3) 4) MONTHS_BETWEEN( 01-SEP-92 , 01-JUN-91 ) rezultatul=15 ADD_MONTHS( 11-JAN-94 ,6) rezultatul este= 11-JUL-94 NEXT_DAY( 01-SEP-95 , FRIDAY ) rezultatul este= 08-SEP-95 LAST_DAY( 01-FEB-95 ) rezultatul este= 28-FEB-95

Pentru urmatoarele exemple, presupunem ca SYSDATE= 25-JUL-95 5) ROUND(SYSDATE, MONTH ) rezultatul este= 01-AUG-95 6) ROUND(SYSDATE, YEAR ) rezultatul este= 01-JAN-96 7) TRUNC(SYSDATE, MONTH ) rezultatul este= 01-JUL-95 8) TRUNC(SYSDATE, YEAR ) rezultatul este= 01-JAN-95

DATE FUNCTIONSExemple:9) SELECT employee_id, hire_date, MONTHS_BETWEEN(SYSDATE, hire_date) AS TENURE, ADD_MONTHS (hire_date, 6) AS REVIEW, NEXT_DAY(hire_date, 'FRIDAY'), LAST_DAY(hire_date) FROM employees WHERE MONTHS_BETWEEN (SYSDATE, hire_date) > 36;

DATE FUNCTIONSAplicatii:1) Afisati numarul de zile dintre data corespunzatoare inceputului ultimei vacante de vara si data inceputului anului scolar curent. Se presupune ca o luna are 30.5 zile. Denumiti iesirea (rezultatul) "Days.SELECT ROUND(MONTHS_BETWEEN ( 15-SEP-07', '15-JUN-07')*30.5) AS Days FROM dual;

DATE FUNCTIONSAplicatii:2) Folosind o singura instructiune