This shows you the differences between two versions of the page.
bd:laboratoare:06 [2019/03/23 13:15] iulia.radulescu [Funcții pentru date calendaristice] |
bd:laboratoare:06 [2022/05/02 10:57] (current) sorin.ciolofan [Funcții pentru șiruri de caractere] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Laborator 06 - Funcții SQL (I) ====== | ====== Laborator 06 - Funcții SQL (I) ====== | ||
- | ===== Funcții numerice ===== | + | ===== Obiective ===== |
+ | |||
+ | * Funcții pentru valori numerice | ||
+ | * Funcții pentru șiruri de caractere | ||
+ | * Funcții pentru date calendaristice | ||
+ | |||
+ | ===== Materiale ajutătoare ===== | ||
+ | |||
+ | [[bd:resurse:tables|Resurse BD]] | ||
+ | |||
+ | ===== Funcții SQL ===== | ||
**Descriere**\\ | **Descriere**\\ | ||
Line 23: | Line 33: | ||
* Funcții de diverse (care acceptă orice tip de argument) | * Funcții de diverse (care acceptă orice tip de argument) | ||
* Funcții de grup | * Funcții de grup | ||
+ | |||
+ | Documentație [[https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/Functions.html#GUID-D079EFD3-C683-441F-977E-2C9503089982|External Link]] | ||
===== Funcții pentru valori numerice ===== | ===== Funcții pentru valori numerice ===== | ||
Line 29: | Line 41: | ||
^Funcție ^Descriere funcție ^ | ^Funcție ^Descriere funcție ^ | ||
- | |sin(n) |Returnează sinus de n unde n este în radiani | | + | |**SIN(n)** |returnează sinus de n unde n este în radiani | |
- | |cos(n) |Returnează cosinus de n unde n este în radiani | | + | |**COS(n)** |returnează cosinus de n unde n este în radiani | |
- | |tan(n) |Returnează tangenta de n unde n este în radiani | | + | |**TAN(n)** |returnează tangenta de n unde n este în radiani | |
- | |sinh(n) | Returnează sinus hiperbolic de n | | + | |**SINH(n)** |returnează sinus hiperbolic de n | |
- | |cosh(n) |Returnează cosinus hiperbolic de n | | + | |**COSH(n)** |returnează cosinus hiperbolic de n | |
- | |stanh(n) |Returnează tangenta hiperbolică de n | | + | |**TANH(n)** |returnează tangenta hiperbolică de n | |
- | |asin(n) |Returnează arcsinus de n | | + | |**ASIN(n)** |returnează arcsinus de n | |
- | |acos(n) |Returnează arccosinus de n | | + | |**ACOS(n)** |returnează arccosinus de n | |
- | |atan(n) |Returnează arctangenta de n | | + | |**ATAN(n)** |returnează arctangenta de n | |
+ | |**SIGN(n)**| returnează -1 dacă n<0, 0 dacă n=0, 1 dacă n>0| | ||
+ | |**ABS(n)** | returnează valoarea absolută a lui n| | ||
+ | |**CEIL(n)** | returnează cel mai mic întreg''>''''=''n| | ||
+ | |**FLOOR(n)** | returnează cel mai mare întreg''<''''=''n| | ||
+ | |**EXP(n)** | returnează e la puterea n| | ||
+ | |**POWER(m,n)** | returnează m la puterea n| | ||
+ | |**SQRT(n)** | returnează rădăcina pătrată a lui n| | ||
+ | |**LN(n)** | returnează logaritmul natural al lui n (n>0)| | ||
+ | |**LOG(m,n)** | returnează logaritmul în baza m a lui n| | ||
+ | |**MOD(m,n)** | returnează restul împărțirii lui m la n| | ||
+ | |**ROUND(n[, m])** | returnează n rotunjit astfel: m zecimale dacă m>0, 0 dacă m este omis, m cifre înainte de virgulă dacă m<0| | ||
+ | |**TRUNC(n[, m])** | returnează n trunchiat astfel: m zecimale dacă m>0, 0 dacă m este omis, m cifre înainte de virgulă dacă m<0| | ||
+ | **Exemple** | ||
- | **Exemple**\\ | + | {{:bd:laboratoare:lab_6_functii_numerice_corect.png?direct&400}} |
- | + | ||
- | **SIGN(n)** – returnează | + | |
- | * -1 dacă n<0 | + | |
- | * 0 dacă n=0 | + | |
- | * 1 dacă n>0 | + | |
- | + | ||
- | **ABS(n)** – returnează valoarea absolută a lui n | + | |
- | + | ||
- | **CEIL(n)** – returnează cel mai mic întreg>=n | + | |
- | + | ||
- | **FLOOR(n)** – returnează cel mai mare întreg<=n | + | |
- | + | ||
- | **EXP(n)** – returnează e la puterea n | + | |
- | + | ||
- | **POWER(m,n)** – returnează m la puterea n | + | |
- | + | ||
- | **SQRT(n)** – returnează rădăcina pătrată a lui n | + | |
- | + | ||
- | **LN(n)** – returnează logaritmul natural al lui n (n>0) | + | |
- | + | ||
- | **LOG(m,n)** – returnează logaritmul în baza m a lui n | + | |
- | + | ||
- | **MOD(m,n)** – returnează restul împărțirii lui m la n | + | |
- | + | ||
- | **ROUND(n[, m])** – returnează n rotunjit astfel: | + | |
- | * m zecimale dacă m>0 | + | |
- | * 0 dacă m este omis | + | |
- | * m cifre înainte de virgulă dacă m<0 | + | |
- | + | ||
- | **TRUNC(n[, m])** – returnează n trunchiat astfel: | + | |
- | * m zecimale dacă m>0 | + | |
- | * 0 dacă m este omis | + | |
- | * m cifre înainte de virgulă dacă m<0 | + | |
- | + | ||
- | {{:bd:laboratoare:lab_6_functii_numerice.png?direct&400}} | + | |
===== Funcții pentru șiruri de caractere ===== | ===== Funcții pentru șiruri de caractere ===== | ||
Line 85: | Line 75: | ||
* CHAR pot avea lungimea maximă de 255 | * CHAR pot avea lungimea maximă de 255 | ||
- | **Exemple** | ||
- | **CHR(n)** – returnează caracterul care are reprezentarea decimală n | ||
- | **CONCAT(str1, str2)** – returnează concatenarea lui str1 cu str2 | + | ^Funcție ^Descriere funcție ^ |
+ | |**CHR(n)** |returnează caracterul care are reprezentarea decimală n| | ||
+ | |**CONCAT(str1, str2)** |returnează concatenarea lui str1 cu str2| | ||
+ | |**INITCAP(str)** |converteste fiecare prima litera a fiecarui cuvânt din str la litera mare iar restul de litere la litere mici| | ||
+ | |**REPLACE(str, strOld, strNew)**|înlocuiește în șirul de caractere str subșirul de caractere strOld cu subșirul de caractere strNew| | ||
+ | |**RPAD(str1, n[,str2])** |adaugă la dreapta lui str1 caracterele din str2 până la lungimea n iar dacă str2 lipseșe adaugă spațiu| | ||
+ | |**LPAD(str1, n[,str2])** |adaugă la stânga lui str1 caracterele din str2 până la lungimea n iar dacă str2 lipseșe adaugă spațiu| | ||
+ | |**RTRIM(str1[, str2])** |șterge din str1 ultimele caractere dacă sunt în str2| | ||
+ | |**SUBSTR(str, m[, n])** |returnează n caractere din str începând cu poziția m| | ||
+ | |**INSTR(str1, str2[, n[, m]])** |returnează poziția lui str2 în str1, începând cu poziția n, la a m-a apariție| | ||
+ | |**TRANSLATE(str1, from_str, to_str)** |înlocuiește în șirul de caractere str1 toate aparițiile caracterelor din form_str cu caracterul corespondent din to_str (înlocuirea se face caracter cu caracter)| | ||
+ | |**LENGTH(str)** |returnează lungimea șirului de caractere str| | ||
- | **INITCAP(str)** – returnează fiecare cuvânt din șirul de caractere str cu majuscule | + | **Exemple** |
- | + | ||
- | **REPLACE(str, subStrOld, subStrNew)** – înlocuiește în șirul de caractere str subșirul de caractere subStrOld cu subșirul de caractere subStrNew | + | |
- | + | ||
- | **RPAD(str1, n[,str2])** – adaugă la dreapta lui str1 caracterele din str2 până la lungimea n iar dacă str2 lipseșe adaugă spațiu | + | |
- | + | ||
- | **LPAD(str1, n[,str2])** – adaugă la stânga lui str1 caracterele din str2 până la lungimea n iar dacă str2 lipseșe adaugă spațiu | + | |
- | + | ||
- | **RTRIM(str1[, str2])** – șterge din str1 ultimele caractere dacă sunt în str2 | + | |
- | + | ||
- | **SUBSTR(str, m[, n])** – returnează n caractere din str începând cu poziția m | + | |
- | + | ||
- | **INSTR(str1, str2[, n[, m]])** – returnează poziția lui str2 în str1, începând cu poziția n, la a m-a apariție | + | |
- | + | ||
- | **TRANSLATE(str1, from_str, to_str)** – înlocuiește în șirul de caractere str1 toate aparițiile caracterelor din form_str cu caractereul corespondent din to_str (înlocuirea se face caracter cu caracter) | + | |
- | + | ||
- | **LENGTH(str)** – returnează lungimea șirului de caractere str | + | |
- | {{:bd:laboratoare:lab_6_functii_siruri.png?direct&400}} | + | {{:bd:laboratoare:lab_6_functii_siruri.png?direct&500}} |
===== Funcții pentru date calendaristice ===== | ===== Funcții pentru date calendaristice ===== | ||
Line 119: | Line 102: | ||
<note important>Toate funcțiile de tip dată calendaristică întorc o valoare de tip DATE, cu excepția funcției MONTHS_BETWEEN care întoarece o valoare numerică.</note> | <note important>Toate funcțiile de tip dată calendaristică întorc o valoare de tip DATE, cu excepția funcției MONTHS_BETWEEN care întoarece o valoare numerică.</note> | ||
- | Funcțiile ROUND și TRUNC (la fel ca și funcțiile TO_DATE, TO_CHAR) recunosc mai multe tipuri de formatare, printre care: | + | Funcțiile ROUND și TRUNC [[https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/ROUND-and-TRUNC-Date-Functions.html#GUID-8E10AB76-21DA-490F-A389-023B648DDEF8|Link]] (la fel ca și funcțiile TO_DATE, TO_CHAR) recunosc mai multe tipuri de formatare, printre care: |
* CC, SCC – pentru secol | * CC, SCC – pentru secol | ||
* SYYYY, YYYY, YEAR, SYEAR, YYY, YY, Y – pentru an | * SYYYY, YYYY, YEAR, SYEAR, YYY, YY, Y – pentru an | ||
Line 131: | Line 114: | ||
* SS - secunde | * SS - secunde | ||
* RR – formatul pentru an și secol | * RR – formatul pentru an și secol | ||
+ | |||
<spoiler Variție An> | <spoiler Variție An> | ||
Line 143: | Line 127: | ||
</spoiler> | </spoiler> | ||
- | **Exemple** | ||
- | **LAST_DAY(date)** – returnează data ultimei zile din luna cuprinsă în date | ||
- | **NEXT_DAY(date, str)** – returnează data următoarei zile din săptămână dată de str, după data date | ||
- | **ADD_MONTHS(date, n)** – returnează o dată prin adăugarea a n luni la date | ||
- | **MONTHS_BETWEEN(date1, date2)** – returnează numărul de luni (și fracțiuni de luni) cuprinse între date1 și date2. Dacă date1>=date2 rezultatul va fi pozitiv, altfel negativ | + | ^Funcție ^Descriere funcție ^ |
+ | |**LAST_DAY(date)** | returnează data ultimei zile din luna cuprinsă în date| | ||
+ | |**NEXT_DAY(date, str)** | returnează data următoarei zile din săptămână dată de str, după data date| | ||
+ | |**ADD_MONTHS(date, n)** | returnează o dată prin adăugarea a n luni la date| | ||
+ | |**MONTHS_BETWEEN(date1, date2)** | returnează numărul de luni (și fracțiuni de luni) cuprinse între date1 și date2. Dacă date1>=date2 rezultatul va fi pozitiv, altfel negativ| | ||
+ | |**ROUND(date, format)** | returnează data prin rotunjirea lui date la formatul format| | ||
+ | |**TRUNC(date, format)** | returnează data prin trunchierea lui date la formatul format| | ||
+ | |**SYSDATE **| returnează data curentă(data de sistem) în diferite formate| | ||
+ | |**EXTRACT(part FROM date)** | extrage partea part din dată date, returnează o valoare numerică| | ||
- | **ROUND(date, format)** – returnează data prin rotunjirea lui date la formatul format | + | **Exemple** |
- | + | ||
- | **TRUNC(date, format)** – returnează data prin trunchierea lui date la formatul format | + | |
- | + | ||
- | **SYSDATE **– returnează data curentă(data de sistem) în diferite formate | + | |
- | + | ||
- | **EXTRACT(part FROM date)** – extrage partea part din dată date, returnează o valoare numerică | + | |
- | {{:bd:laboratoare:lab_6_functii_date_calendaristice.png?direct&400}} | + | {{:bd:laboratoare:lab_6_functii_date_calendaristice.png?direct&600}} |
<note important> | <note important> | ||
Line 170: | Line 152: | ||
* data – numar /24 – adună la dată un număr de ore, returnează tot o dată calendaristică. | * data – numar /24 – adună la dată un număr de ore, returnează tot o dată calendaristică. | ||
<newcolumn> | <newcolumn> | ||
- | \\ | + | |
- | \\ | + | |
- | \\ | + | |
- | {{:bd:laboratoare:18. data6.png?direct&200}}\\ | + | |
</columns> | </columns> | ||
</note> | </note> | ||
+ | |||
+ | {{:bd:laboratoare:lab_6_adunare_la_data.png?direct&300}} | ||
<note tip> | <note tip> | ||
Line 181: | Line 162: | ||
* Pentru a modifica acest parametru la nivel de sesiune se utilizeaza următoarea comandă: | * Pentru a modifica acest parametru la nivel de sesiune se utilizeaza următoarea comandă: | ||
<code sql>ALTER SESSION SET NLS_DATE_FORMAT = new_format</code> | <code sql>ALTER SESSION SET NLS_DATE_FORMAT = new_format</code> | ||
- | {{:bd:laboratoare:19. data7.png?direct&400}}\\ | ||
</note> | </note> | ||
+ | |||
+ | {{:bd:laboratoare:lab_6_schimbare_data_sesiune.png?direct&500}} | ||
+ | |||
+ | ===== Exercitiu individual ===== | ||
+ | Pentru angajatii ce au numele de lungime 4, faceti o lista cu: | ||
+ | * numele angajatului scris cu litere mari | ||
+ | * ziua in care s-au angajat | ||
+ | * denumirea departamentului in care lucreaza scrisa cu litere mici | ||
+ | * initiala numelui sefului | ||