{"id":2051,"date":"2018-12-14T20:00:45","date_gmt":"2018-12-14T17:00:45","guid":{"rendered":"http:\/\/cadredidactice.ub.ro\/simonavarlan\/?page_id=2051"},"modified":"2018-12-15T05:37:54","modified_gmt":"2018-12-15T02:37:54","slug":"programare-cu-rabdare-baze-de-date","status":"publish","type":"page","link":"https:\/\/cadredidactice.ub.ro\/simonavarlan\/programare-cu-rabdare-baze-de-date\/","title":{"rendered":"Programare cu rabdare &#8211; Baze de date"},"content":{"rendered":"<p>Pe aceast\u0103 pagina ve\u021bi g\u0103si detalii pentru a v\u0103 conecta pe conturile voastre de pe APPEX (Oracle Application Express).<\/p>\n<p>V\u0103 rog sa fi\u021bi aten\u021bi la instruc\u021biuni \u0219i s\u0103 le urma\u021bi \u00eentocmai.\u00a0Pentru diferite probleme semnala\u021bi imediat.<\/p>\n<p><span style=\"color: #ff0000\"><strong>INTRA\u021aI la adresa<\/strong>:<\/span>\u00a0<a href=\"https:\/\/iacademy3.oracle.com\">https:\/\/iacademy3.oracle.com<\/a><\/p>\n<ol>\n<li>La <strong>Workspace<\/strong> introduce\u021bi:\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 RO_A920_SQL_S<span style=\"color: #0000ff\">nn<\/span>\u00a0 \u00a0 \u00a0 unde <span style=\"color: #0000ff\">nn<\/span> este de la 01 la 50<\/li>\n<li>La <strong>Student username<\/strong> introduce\u021bi:\u00a0 \u00a0 \u00a0 RO_A920_SQL_S<span style=\"color: #0000ff\">nn<\/span>\u00a0 \u00a0 \u00a0 unde <span style=\"color: #0000ff\">nn<\/span> este de la 01 la 50<\/li>\n<li><strong>Parola<\/strong>:\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0Programarecurabdare2018<\/li>\n<\/ol>\n<p>EXEMPLU<\/p>\n<ol>\n<li>Workspace:\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0RO_A920_SQL_S<span style=\"color: #0000ff\">01<\/span><\/li>\n<li>Student username:\u00a0 \u00a0 \u00a0 \u00a0RO_A920_SQL_S<span style=\"color: #0000ff\">01<\/span><\/li>\n<li>Parola:\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Programarecurabdare2018<\/li>\n<\/ol>\n<p>SAU<\/p>\n<ol>\n<li>Workspace:\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0RO_A920_SQL_S<span style=\"color: #0000ff\">02<\/span><\/li>\n<li>Student username:\u00a0 \u00a0 \u00a0 RO_A920_SQL_S<span style=\"color: #0000ff\">02<\/span><\/li>\n<li>Parola:\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Programarecurabdare2018<\/li>\n<\/ol>\n<p>\u0219i tot a\u0219a p\u00e2n\u0103 la contul cu num\u0103rul 50.<\/p>\n<p>De pe prima pagina face\u021bi click pe <strong><span style=\"text-decoration: underline\">SQL\u00a0 Workshop<\/span><\/strong>\u00a0 \u0219i apoi pe <span style=\"text-decoration: underline\"><strong>SQL Commands<\/strong><\/span>.<\/p>\n<p>Scriptul pentru crearea tabelelor este:\u00a0<a href=\"https:\/\/cadredidactice.ub.ro\/wp-content\/uploads\/sites\/284\/2018\/12\/elevi.zip\" rel=\"\">elevi<\/a><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #339966\"><strong><span style=\"text-decoration: underline\">SQL (Structured Query Language)<\/span><\/strong><\/span><\/p>\n<ol>\n<li>Comenzi DDL (de definire a datelor): CREATE, DROP, ALTER<\/li>\n<li>Comenzi DML (de manipulare a datelor): INSERT, DELETE, UPDATE, SELECT<\/li>\n<\/ol>\n<p>\u00cen forma Backus-Naur cele mai uzuale comenzi SQL.\u00a0Conven\u0163iile de sintax\u0103 \u00een acest format sunt urm\u0103toarele:<\/p>\n<p>&lt;&gt; reprezint\u0103 o variabil\u0103 de substitu\u0163ie<br \/>\n| reprezint\u0103 disjunc\u0163ia<br \/>\n[\u2026] reprezint\u0103 elemente op\u0163ionale<br \/>\n{\u2026|\u2026|\u2026} reprezint\u0103 exact un element din list\u0103<\/p>\n<h4><strong>Inserarea \u00eenregistr\u0103rilor:<\/strong><\/h4>\n<pre>INSERT INTO &lt;nume_tabel&gt; [ (lista_coloane) ] VALUES (lista_valori) \r\nINSERT INTO <strong>elevi<\/strong> VALUES ('124', 'Anghelescu', 'Anca', 12, 350, TO_DATE('10\/05\/1999', 'dd\/mm\/yyyy'));\r\n(describe elevi)<\/pre>\n<h4><span id=\"Actualizarea_valorilor\" class=\"mw-headline\">Actualizarea valorilor:<\/span><\/h4>\n<pre>UPDATE &lt;nume_tabel&gt; SET &lt;nume_coloana1&gt; = valoare1 [, &lt;nume_coloana2&gt; = valoare2...] [WHERE conditie]\r\nUPDATE elevi SET bursa=450 WHERE nr_matricol=124;<\/pre>\n<h4><span id=\".C5.9Etergerea_.C3.AEnregistr.C4.83rilor\" class=\"mw-headline\">\u015etergerea \u00eenregistr\u0103rilor:<\/span><\/h4>\n<pre>DELETE FROM &lt;nume_tabel&gt; [WHERE conditie]\r\nDELETE FROM elevi WHERE nr_matricol=124;<\/pre>\n<h4><strong><span style=\"color: #339966\">COMANDA SELECT<\/span><\/strong><\/h4>\n<pre>SELECT [DISTINCT | ALL] {* | [expresie_coloana [AS &lt;nume_nou&gt;]] [,...] }\r\n       FROM &lt;nume_tabel&gt; [alias] [, ...]\r\n       [WHERE conditie]\r\n       [GROUP BY lista_coloane] [HAVING conditie]\r\n       [ORDER BY exp1 [ASC\/DESC] [,exp2...]]<\/pre>\n<p>SELECT * FROM elevi;<br \/>\nSELECT nume, prenume FROM elevi;<br \/>\nSELECT nume AS &#8222;Nume Profesor&#8221; FROM profesori;<\/p>\n<p>SELECT clasa FROM elevi;<br \/>\nSELECT DISTINCT clasa FROM elevi;<\/p>\n<p><span style=\"color: #ff9900\"><strong><span style=\"text-decoration: underline\">CLAUZA WHERE<\/span><\/strong><\/span><\/p>\n<h3><span id=\"Operatori_de_comparare\" class=\"mw-headline\">Operatori de comparare<\/span><\/h3>\n<p>&#8211; returneaz\u0103 TRUE sau FALSE, sunt aplicabili pentru toate tipurile de date<\/p>\n<table border=\"1\">\n<tbody>\n<tr>\n<td>Operator<\/td>\n<td>Descriere<\/td>\n<td>Exemplu<\/td>\n<\/tr>\n<tr>\n<td>=<br \/>\n&gt;<br \/>\n&gt;=<br \/>\n&lt;<br \/>\n&lt;=<br \/>\n&lt;&gt;<\/td>\n<td>Operatori binari, semnifica\u0163ia uzual\u0103<\/td>\n<td>SELECT nume, prenume FROM elevi WHERE clasa = 9;<\/td>\n<\/tr>\n<tr>\n<td>ANY\/<br \/>\nSOME<\/td>\n<td>Operator aplicat unei liste sau rezultatului unei interog\u0103ri \u00een conjunc\u0163ie cu unul din operatorii de comparare uzuali de mai sus, cu semnifica\u0163ia urm\u0103toare: operatorul uzual prime\u015fte ca al doilea operand fiecare din valorile din list\u0103; returneaz\u0103 TRUE dac\u0103 pt. cel pu\u0163in o valoare din list\u0103 rezultatul e TRUE, altfel returneaz\u0103 FALSE.<\/td>\n<td>SELECT * FROM elevi WHERE clasa = SOME (9,10);<\/td>\n<\/tr>\n<tr>\n<td>ALL<\/td>\n<td>Ca \u015fi ANY\/SOME, cu diferen\u0163a rezultatul este TRUE doar dac\u0103 operatorul uzual returneaz\u0103 TRUE pentru toate valorile din list\u0103.<\/td>\n<td>SELECT * FROM elevi WHERE clasa &gt;= ALL (10, 11);<\/td>\n<\/tr>\n<tr>\n<td>IN<\/td>\n<td>Verific\u0103 apartenen\u0163a valorii primului operand la mul\u0163imea specificat\u0103 de al doilea operand. Este echivalent cu \u201e=ANY\u201d<\/td>\n<td>SELECT * FROM elevi WHERE prenume IN (&#8216;Adrian&#8217;, &#8216;Alex&#8217;);<\/td>\n<\/tr>\n<tr>\n<td>NOT IN<\/td>\n<td>Returneaz\u0103 FALSE dac\u0103 valoarea primului operand nu face parte din lista specificat\u0103 de al doilea operand. Este echivalent cu \u201e&lt;&gt;ANY\u201d<\/td>\n<td>SELECT * FROM elevi WHERE clasa NOT IN (9,10);<\/td>\n<\/tr>\n<tr>\n<td>BETWEEN x AND y<\/td>\n<td>\u00cel putem considera ca pe un operator ternar: returneaz\u0103 TRUE dac\u0103 primul operand satisface simultan condi\u0163iile &gt;=x \u015fi &lt;=y, unde x \u015fi y reprezent\u0103 al\u0163i doi operanzi<\/td>\n<td>SELECT nume, prenume FROM elevi WHERE clasa BETWEEN 10 <span style=\"text-decoration: underline\"><strong>AND<\/strong> <\/span>11;<\/td>\n<\/tr>\n<tr>\n<td>LIKE<\/td>\n<td>Operator binar, verific\u0103 dac\u0103 primul operand este \u00een conformitate cu un \u015fablon specificat de al doilea operand. \u015eablonul este un \u015fir de caractere, ce poate con\u0163ine unul din caracterele speciale:<\/p>\n<dl>\n<dd><b>%<\/b>\u00a0semnific\u0103 orice \u015fir de caractere, chiar \u015firul vid (de lungime 0)<\/dd>\n<dd><b>_<\/b>\u00a0supline\u015fte un singur caracter<\/dd>\n<\/dl>\n<p>Dac\u0103 cele dou\u0103 simboluri speciale trebuiesc interpretate ca atare se utilizeaz\u0103 caracterul ESCAPE: \\% \u015fi \\_<\/td>\n<td>SELECT * FROM elevi WHERE nume LIKE &#8216;%andr%&#8217;;<\/td>\n<\/tr>\n<tr>\n<td>IS [NOT] NULL<\/td>\n<td>Operator unar. Singurul mod de test pentru null<\/td>\n<td>SELECT * FROM elevi WHERE bursa IS NOT NULL <span style=\"text-decoration: underline\"><strong>AND<\/strong> <\/span>bursa &gt; 200;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>SELECT <strong>nota+ 1<\/strong> FROM catalog;<\/p>\n<p>SELECT nume, prenume FROM elevi WHERE bursa IS NOT NULL;<\/p>\n<p>SELECT nume, prenume FROM elevi WHERE bursa IS NOT NULL AND clasa = 9;<\/p>\n<p>SELECT nume, prenume FROM elevi WHERE nume LIKE &#8216;%escu&#8217;;<\/p>\n<ol>\n<li>Scrie\u021bi \u0219i executa\u021bi o interogare pentru a afi\u0219a \u00een mod unic valorile burselor.<\/li>\n<li>Scrie\u021bi o interogare pentru a afi\u0219a numele, prenumele, clasa de studiu si data na\u0219terii pentru to\u021bi elevii.<\/li>\n<li>Afi\u0219a\u021bi numele, prenumele \u0219i data de na\u0219tere a elevilor n\u0103scu\u021bi \u00eentre 1 ianuarie 1995 si 10 iunie 1997. Ordona\u021bi descendent dup\u0103 clasa de studiu.<\/li>\n<li>Afi\u0219a\u021bi numele \u0219i prenumele precum \u0219i clasa de studiu pentru to\u021bi elevii n\u0103scu\u021bi \u00een 1995.<\/li>\n<li>Afi\u0219a\u021bi elevii (toate informa\u021biile pentru ace\u0219tia) care nu iau burs\u0103.<\/li>\n<li>Afi\u0219a\u021bi elevii (nume \u0219i prenume) care iau burs\u0103 \u0219i sunt \u00een clasa 10\u00a0\u0219i 11 de studiu. Ordona\u021bi alfabetic ascendent dup\u0103 nume \u0219i descendent dup\u0103 prenume.<\/li>\n<li>Afi\u0219a\u021bi elevii care iau burs\u0103, precum \u0219i valoarea bursei dac\u0103 aceasta ar fi m\u0103rit\u0103 cu 15%.<\/li>\n<li>Afi\u0219a\u021bi elevii al c\u0103ror nume \u00eencepe cu litera P \u0219i sunt \u00een clasa a-10 a de studiu.<\/li>\n<\/ol>\n<h3><span style=\"text-decoration: underline;color: #33cccc\"><strong>Afi\u0219area informa\u021biilor din mai multe tabele<\/strong><\/span><\/h3>\n<p>SELECT * FROM elevi JOIN catalog ON elevi.nr_matricol = catalog.nr_matricol ORDER BY nume;<\/p>\n<p>SELECT * FROM elevi JOIN catalog ON elevi.nr_matricol = catalog.nr_matricol WHERE prenume=&#8217;Andrei&#8217;;<\/p>\n<p>SELECT nume, prenume, nota , <strong><span style=\"color: #33cccc\">e.<\/span><\/strong>nr_matricol FROM elevi e\u00a0JOIN catalog c\u00a0ON <strong><span style=\"color: #33cccc\">e.<\/span><\/strong>nr_matricol = <strong><span style=\"color: #33cccc\">c.<\/span><\/strong>nr_matricol;<\/p>\n<pre>SELECT nume, prenume, titlu_curs, nota\r\n   FROM elevi e \r\n              JOIN catalog n ON <span style=\"color: #33cccc\"><strong>e.<\/strong><\/span>nr_matricol = <span style=\"color: #33cccc\"><strong>n.<\/strong><\/span>nr_matricol \r\n              JOIN cursuri c ON <strong><span style=\"color: #33cccc\">c.<\/span><\/strong>id_curs = <strong><span style=\"color: #33cccc\">n.<\/span><\/strong>id_curs;<\/pre>\n<ol>\n<li>Afi\u015fa\u0163i elevii \u015fi notele pe care le-au luat si profesorii care le-au pus acele note.<\/li>\n<li>Afisati elevii care au luat nota 10 la materia &#8216;Informatica&#8217;.<\/li>\n<li>Afisa\u0163i profesorii (numele \u015fi prenumele) impreuna cu cursurile pe care fiecare le \u0163ine.<\/li>\n<\/ol>\n<h3><span style=\"text-decoration: underline\"><strong><span style=\"color: #993366;text-decoration: underline\">Func\u0163ii de agregare \u00een SQL<\/span><\/strong><\/span><\/h3>\n<p>SELECT COUNT(*) AS &#8222;Total elevi&#8221; FROM elevi;<\/p>\n<p>SELECT COUNT(bursa) AS &#8222;Elevi bursieri&#8221; FROM elevi;<\/p>\n<p>SELECT AVG(nota) FROM catalog;<\/p>\n<p>SELECT MAX(bursa) FROM elevi;<\/p>\n<pre>SELECT MAX(nota), nr_matricol\r\n FROM catalog\r\n GROUP BY nr_matricol;<\/pre>\n<pre>SELECT nr_matricol, id_curs, MAX(nota)\r\n FROM catalog\r\n GROUP BY nr_matricol, id_curs\r\n ORDER BY nr_matricol;<\/pre>\n<pre>SELECT id_curs, COUNT(nota) \"nr note\"\r\n FROM catalog\r\n WHERE nota&gt;9          --c\u00e2te note de 10 sunt pe curs\r\n GROUP BY id_curs\r\n ORDER BY id_curs;\r\n(Pentru verificare, cursul 29 are 6 note de 10: select * from catalog order by id_curs desc;)<\/pre>\n<pre>SELECT id_curs, COUNT(nota) \"nr note\"\r\n   FROM catalog\r\n   GROUP BY id_curs\r\n   HAVING COUNT(nota)&gt;25\r\n   ORDER BY id_curs;   \r\n--c\u00e2te cursuri au mai mult de 25 de note \r\n\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Pe aceast\u0103 pagina ve\u021bi g\u0103si detalii pentru a v\u0103 conecta pe conturile voastre de pe APPEX (Oracle Application Express). V\u0103 rog sa fi\u021bi aten\u021bi la instruc\u021biuni \u0219i s\u0103 le urma\u021bi \u00eentocmai.\u00a0Pentru diferite probleme semnala\u021bi imediat. INTRA\u021aI la adresa:\u00a0https:\/\/iacademy3.oracle.com La Workspace &hellip;<\/p>\n<p class=\"read-more\"><a href=\"https:\/\/cadredidactice.ub.ro\/simonavarlan\/programare-cu-rabdare-baze-de-date\/\">Continue reading<\/a><\/p>\n","protected":false},"author":269,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2051","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cadredidactice.ub.ro\/simonavarlan\/wp-json\/wp\/v2\/pages\/2051","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cadredidactice.ub.ro\/simonavarlan\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cadredidactice.ub.ro\/simonavarlan\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cadredidactice.ub.ro\/simonavarlan\/wp-json\/wp\/v2\/users\/269"}],"replies":[{"embeddable":true,"href":"https:\/\/cadredidactice.ub.ro\/simonavarlan\/wp-json\/wp\/v2\/comments?post=2051"}],"version-history":[{"count":18,"href":"https:\/\/cadredidactice.ub.ro\/simonavarlan\/wp-json\/wp\/v2\/pages\/2051\/revisions"}],"predecessor-version":[{"id":2071,"href":"https:\/\/cadredidactice.ub.ro\/simonavarlan\/wp-json\/wp\/v2\/pages\/2051\/revisions\/2071"}],"wp:attachment":[{"href":"https:\/\/cadredidactice.ub.ro\/simonavarlan\/wp-json\/wp\/v2\/media?parent=2051"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}