Differences

This shows you the differences between two versions of the page.

Link to this comparison view

bd:laboratoare:06 [2019/02/17 00:18]
fbratiloveanu [Laborator 06 - Funcții SQL (partea I)]
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}}
- +
-<columns 80% 20% 60% -> +
-SIGN(n) – returnează  +
-  * -1 dacă n<0 +
-  * 0 dacă n=0 +
-  * 1 dacă n>0 +
-{{:​bd:​laboratoare:​01. sign.png?​direct&​200}} +
- +
-<​newcolumn>​ +
-ABS(n) – returnează valoarea absolută a lui n\\ +
-{{:​bd:​laboratoare:​02. abs.png?​direct&​200}} +
- +
-</​columns>​ +
- +
-<columns 100% 50% 50%-> +
-CEIL(n) – returnează cel mai mic întreg>​=n\\ +
-{{:​bd:​laboratoare:​03. ceil.png?​direct&​200}} +
- +
-<​newcolumn>​ +
-FLOOR(n) – returnează cel mai mare întreg<​=n\\ +
-{{:​bd:​laboratoare:​04. floor.png?​direct&​200}} +
- +
-</​columns>​ +
- +
-Mai multe exemple cu funcții trigonometrice:​\\ +
-{{:​bd:​laboratoare:​05._trigo_a.png?​direct&​280}}\\ +
-{{:​bd:​laboratoare:​05._trigo_b.png?​direct&​230}}\\ +
- +
-<columns 100% 50% 50%-> +
-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\\ +
-{{:​bd:​laboratoare:​06. eps.png?​direct&​250}}\\ +
- +
-<​newcolumn>​ +
-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\\ +
-{{:​bd:​laboratoare:​07. llm.png?​direct&​250}}\\ +
-</​columns>​ +
- +
-<columns 100% 50% 50%-> +
-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 +
-{{:​bd:​laboratoare:​08. round.png?​direct&​250}}\\ +
- +
-<​newcolumn>​ +
-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:​09. trunc.png?​direct&​250}}\\ +
-</​columns>​+
  
 ===== Funcții pentru șiruri de caractere ===== ===== Funcții pentru șiruri de caractere =====
Line 105: Line 75:
     * CHAR pot avea lungimea maximă de 255     * CHAR pot avea lungimea maximă de 255
  
-**Exemple** 
-<columns 100% 50% 50%-> 
-CHR(n) – returnează caracterul care are reprezentarea decimală n;\\ 
-CONCAT(str1,​ str2) – returnează concatenarea lui str1 cu str2;\\ 
-INITCAP(str) – returnează fiecare cuvânt din șirul de caractere str cu majuscule.\\ 
  
-<​newcolumn>​ 
-{{:​bd:​laboratoare:​10. str1.png?​direct&​360}}\\ 
-</​columns>​ 
  
-<columns 100% 50% 50%-> +^Funcție ​         ^Descriere funcție ​  ^ 
-REPLACE(str, ​subStrOldsubStrNew– înlocuiește în șirul de caractere str subșirul de caractere ​subStrOld ​cu subșirul de caractere ​subStrNew;​\\ +|**CHR(n)** |returnează caracterul care are reprezentarea decimală n| 
-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;\\ +|**CONCAT(str1,​ str2)** |returnează concatenarea lui str1 cu str2| 
-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;\\ +|**INITCAP(str)** |converteste fiecare prima litera a fiecarui cuvânt din str la litera mare iar restul de litere la litere mici| 
-RTRIM(str1[,​ str2]) ​– șterge ​ din str1 ultimele caractere dacă sunt în str2.+|**REPLACE(str, ​strOldstrNew)**|î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|
  
-<​newcolumn>​ +**Exemple**
-{{:​bd:​laboratoare:​11. str2.png?​direct&​360}}\\ +
-</​columns>​+
  
-<columns 100% 50% 50%-> +{{:​bd:​laboratoare:​lab_6_functii_siruri.png?​direct&​500}}
-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. +
- +
-<​newcolumn>​ +
-{{:​bd:​laboratoare:​12. str3.png?​direct&​360}}\\ +
-</​columns>​+
  
 ===== Funcții pentru date calendaristice ===== ===== Funcții pentru date calendaristice =====
Line 143: 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 155: 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 167: 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.\\ 
  
-{{:​bd:​laboratoare:​13. data1.png?​direct&​360}}\\ 
  
-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.\\ 
-{{:​bd:​laboratoare:​14. data2.png?​direct&​360}}\\ 
  
-ROUND(date, format) ​– returnează data prin rotunjirea lui date la formatul format.\\ +^Funcție ​         ^Descriere funcție ​  ^ 
-{{:​bd:​laboratoare:​15. data3.png?​direct&​250}}\\+|**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ă|
  
-TRUNC(date, format) – returnează data prin trunchierea lui date la formatul format.\\ +**Exemple**
-{{:​bd:​laboratoare:​16. data4.png?​direct&​250}}\\+
  
-SYSDATE – returnează data curentă(data de sistem) în diferite formate\\ +{{:​bd:​laboratoare:​lab_6_functii_date_calendaristice.png?​direct&​600}}
-EXTRACT(part FROM date) – extrage ​ partea ​ part din dată date, returnează o valoare numerică/​\\ +
-{{:​bd:​laboratoare:​17. data5.png?​direct&​280}}\\+
  
 <note important>​ <note important>​
Line 195: 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 206: 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
  
bd/laboratoare/06.1550355496.txt.gz · Last modified: 2019/02/17 00:18 by fbratiloveanu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0