Differences

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

Link to this comparison view

bd:laboratoare:03 [2019/02/17 15:10]
fbratiloveanu [Crearea unei copii a unui tabel]
bd:laboratoare:03 [2021/03/16 12:38] (current)
ciprian.truica [Exerciții individuale]
Line 1: Line 1:
 ===== Laborator 03 - Cereri cu variabile substituite în SQL*Plus===== ===== Laborator 03 - Cereri cu variabile substituite în SQL*Plus=====
-**Conținut**+ 
 +==== Obiective ==== 
   * Crearea unei copii a unui tabel   * Crearea unei copii a unui tabel
   * Variabile substituite   * Variabile substituite
Line 9: Line 11:
     * Variabile definite cu DEFINE și resetate cu UNDEFINE     * Variabile definite cu DEFINE și resetate cu UNDEFINE
   * Exerciții   * Exerciții
 +==== Materiale ajutătoare ====
 +
 +[[bd:​resurse:​tables|Resurse BD]]
 +
 +{{:​bd:​laboratoare:​laborator03.pdf|Laborator 3}}
 +
  
 ==== Crearea unei copii a unui tabel ==== ==== Crearea unei copii a unui tabel ====
Line 20: Line 28:
 Ex1. Să se creeze o copie a tabelului **emp**. Folosiți ambele metode. Ex1. Să se creeze o copie a tabelului **emp**. Folosiți ambele metode.
  
-{{:​bd:​laboratoare:​carbon_ex3_1.png?​nolink&​400|}}+{{ :​bd:​laboratoare:​create_methods.png?​nolink&​400 }}
  
 **Observații:​** **Observații:​**
-  * Niciuna dintre metode nu păstrează constrângerile de Primary Key, Unique, Foreign Key. Excepție este NOT NULL; +  * Niciuna dintre metode nu păstrează constrângerile de Primary Key, Unique, Foreign Key. **Excepție este NOT NULL**
-  * Prima metoda permite ​schimbarea numelor ​de coloana, a doua metoda nu permite acest lucru; +  * Daca cererea SELECT contine o expresie sau functie trebuie sa i se atribuie un alias valid. 
-  * Pentru metoda I, dacă copia nu are același număr ​de coloane ​atunci ​trebuie ​să se specifice coloanele ​în care se vor insera date; + 
-  * Pentru metoda I, dacă copia nu respectă ​ordinea coloanelor din tabelul original, atunci ​trebuie ​să se specifice coloanele, atât pentru Insert cât și pentru Select+**Metoda I** 
-  Pentru metoda ​II, coloanele ​vor avea același ​nume ca și coloanele din tabela ​originală.+  * Permite ​schimbarea numelor ​coloanelor. 
 +  * Daca copia nu are definit acelasi numar de coloane ​ca tabelul original ​trebuie ​sa se specifice ​in SELECT ​coloanele ​din care se vor insera date. 
 +  * Daca copia nu respecta ​ordinea coloanelor din tabelul original trebuie ​sa se specifice coloanele ​- atat in INSERT cat si in SELECT
 + 
 +**Metoda ​II** 
 +    * Coloanele din copie vor pastra aveleasi ​nume ca si coloanele din tabelul ​original. 
  
 ==== Variabile substituite ==== ==== Variabile substituite ====
Line 41: Line 55:
 <color red>Ex. 1.</​color>​ Să se selecteze id_ang, nume, functie și salariu pentru angajatii care au același sef. Id-ul șefului se va introduce de la tastatură. <color red>Ex. 1.</​color>​ Să se selecteze id_ang, nume, functie și salariu pentru angajatii care au același sef. Id-ul șefului se va introduce de la tastatură.
  
-{{ :​bd:​laboratoare:​lab03.ex1a.png |}}+{{ :​bd:​laboratoare:​lab3_1_new.png |}}
  
 Rezultatul execuției exercițiului 1: Rezultatul execuției exercițiului 1:
Line 55: Line 69:
 <color red>Ex. 2.</​color>​ Să se selecteze numele, funcția și salariu pentru angajații care au aceași funcție. Funcția va fi introdusa ​ de la tastatură. <color red>Ex. 2.</​color>​ Să se selecteze numele, funcția și salariu pentru angajații care au aceași funcție. Funcția va fi introdusa ​ de la tastatură.
  
-{{ :​bd:​laboratoare:​lab03.ex2a.png |}}+{{ :​bd:​laboratoare:​lab3_2_new.png |}}
  
 Rezultatul execuției exercițiului 2: Rezultatul execuției exercițiului 2:
Line 69: Line 83:
 <color red>Ex. 3.</​color>​ Să se selecteze numele, funcția și salariul anual pentru toți angajații din același departament. Salariul anual este calculat după formula 12*salariu. Se va introduce de la tastatură funcția pentru salariul anual, ​ numele tabelului, numele coloanei pe care se pune condiția și id-ul departamentului. <color red>Ex. 3.</​color>​ Să se selecteze numele, funcția și salariul anual pentru toți angajații din același departament. Salariul anual este calculat după formula 12*salariu. Se va introduce de la tastatură funcția pentru salariul anual, ​ numele tabelului, numele coloanei pe care se pune condiția și id-ul departamentului.
  
-{{ :​bd:​laboratoare:​lab03.ex3a.png |}}+{{ :​bd:​laboratoare:​lab3_3_new.png |}}
  
 Rezultatul execuției exercițiului 3: Rezultatul execuției exercițiului 3:
Line 83: Line 97:
 <color red>Ex. 4.</​color>​ Să se selecteze numele, funcția și venitul lunar pentru toți angajații care au venitul lunar mai mare de 2000. Venitul lunar este o funcție care are formula salariu + nvl(comision,​ 0). <color red>Ex. 4.</​color>​ Să se selecteze numele, funcția și venitul lunar pentru toți angajații care au venitul lunar mai mare de 2000. Venitul lunar este o funcție care are formula salariu + nvl(comision,​ 0).
  
-{{ :​bd:​laboratoare:​lab03.ex4a.png |}}+{{ :​bd:​laboratoare:​lab3_4_new.png |}}
  
 Rezultatul execuției exercițiului 4: Rezultatul execuției exercițiului 4:
Line 105: Line 119:
 Se va scrie următorul select înr-un fișier: Se va scrie următorul select înr-un fișier:
  
-{{ :​bd:​laboratoare:​lab03.ex5a.png |}}+{{ :​bd:​laboratoare:​lab3_5_new.png |}}
  
 Execuția fișierului:​ Execuția fișierului:​
Line 119: Line 133:
 Când definim o variabilă cu ampersand, promptul va fi numele variabilei; Când definim o variabilă cu ampersand, promptul va fi numele variabilei;
 Folosind comanda ACCEPT, se poate redefini promptul și chiar se pot ascunde caracterele introduse de la tastatură. Folosind comanda ACCEPT, se poate redefini promptul și chiar se pot ascunde caracterele introduse de la tastatură.
 +
 +<​note>​
 +Sintaxa completă pentru comanda ACCEPT [[https://​docs.oracle.com/​en/​database/​oracle/​oracle-database/​19/​sqpug/​ACCEPT.html#​GUID-5D07E526-202B-429B-9E0C-005D1E37BBAB|Link]]
 +<​code>​
 +ACC[EPT] variable [NUM[BER] | CHAR | DATE | BINARY_FLOAT | BINARY_DOUBLE] [FOR[MAT] format] [DEF[AULT] default] [PROMPT text|NOPR[OMPT]] [HIDE]
 +</​code>​
 +</​note>​
 +
  
 <color red>Ex. 6.</​color>​ Să se selecteze numele, salariul și funcția angajaților care au aceeași funcție. Funcția se va da de la tastatură. <color red>Ex. 6.</​color>​ Să se selecteze numele, salariul și funcția angajaților care au aceeași funcție. Funcția se va da de la tastatură.
 Se vor scrie următoarele comenzi într-un fisier (de exemplu ex6.sql) Se vor scrie următoarele comenzi într-un fisier (de exemplu ex6.sql)
  
-{{ :​bd:​laboratoare:​lab03.ex6a.png |}}+{{ :​bd:​laboratoare:​lab3_6_new.png |}}
  
 Execuția fișierul: Execuția fișierul:
Line 132: Line 154:
 <color red>Ex. 7.</​color>​ Să se adauge un nou angajat. La introducerea salariului caracterele să fie ascunse. <color red>Ex. 7.</​color>​ Să se adauge un nou angajat. La introducerea salariului caracterele să fie ascunse.
  
-{{ :​bd:​laboratoare:​lab03.ex7a.png |}}+{{ :​bd:​laboratoare:​lab3_7_new.png |}}
  
 Execuția fișierului:​ Execuția fișierului:​
Line 143: Line 165:
 <color red>Ex. 8.</​color>​ Să se calculeze o primă de 15% pentru toți angajații din departamentul 20. <color red>Ex. 8.</​color>​ Să se calculeze o primă de 15% pentru toți angajații din departamentul 20.
  
-{{ :​bd:​laboratoare:​lab03.ex8a.png |}}+{{ :​bd:​laboratoare:​lab3_8_new.png |}}
  
 Rezultatul execuției exercițiului 8: Rezultatul execuției exercițiului 8:
Line 154: Line 176:
 ====Exerciții individuale==== ====Exerciții individuale====
  
-1. Să se scrie o comandă SQL care listează toți angajații dintr-un departament (introdus ca parametru de la tastatură),​ care au venitul anual peste un venit mediu anual (introdus tot de la tastatură)+1. Să se scrie o comandă SQL care listează toți angajații dintr-un departament (introdus ca parametru de la tastatură),​ care au venitul anual peste un venit mediu anual (introdus tot de la tastatură)
 +Să se afișeze numele angajatului,​ id-ul de departamentul,​ venitul anual.
  
 Dați cel puțin 4 metode de rezolvare. Dați cel puțin 4 metode de rezolvare.
  
-====Bibliografie==== +
-  - **Alexandru Boicea** -// Oracle SQL SQL Plus//, Editura Printech+
bd/laboratoare/03.1550409058.txt.gz · Last modified: 2019/02/17 15:10 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