Differences

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

Link to this comparison view

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
  
bd/laboratoare/06.1553339700.txt.gz · Last modified: 2019/03/23 13:15 by iulia.radulescu
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