Denumirile coloanelor pot fi scrise explicit, sau pot lipsi (se recomandă numai în cazul în care utilizatorul este foarte sigur asupra structurii tabelului, dar trebuie să fie atent la valorile trecute în clauza VALUES şi la tipul acestora).
Denumirile coloanelor pot fi scrise explicit, sau pot lipsi (se recomandă numai în cazul în care utilizatorul este foarte sigur asupra structurii tabelului, dar trebuie să fie atent la valorile trecute în clauza VALUES şi la tipul acestora).
INSERT INTO employees
VALUES( 20, ‘David’, ‘Pop’, 21000, SYSDATE, 90);
Deoarece câmpul high_range permite întroducerea unei valori numerice de maxim 3 cifre, 1000 reprezintă o valoare prea mare pentru această coloană.
Deoarece câmpul high_range permite întroducerea unei valori numerice de maxim 3 cifre, 1000 reprezintă o valoare prea mare pentru această coloană.
Comanda INSERT se poate executa pe acelaşi tabel (folosind subquery), dar se va executa la infinit – se tot inserează valoarea returnată de subquery în ea însăşi.
Comanda INSERT se poate executa pe acelaşi tabel (folosind subquery), dar se va executa la infinit – se tot inserează valoarea returnată de subquery în ea însăşi.
Comanda UPDATE este folosită pentru a modifica o valoare într-un tabel.
Comanda UPDATE este folosită pentru a modifica o valoare într-un tabel.
Dacă în momentul creării unei coloane, aceasta nu are definită o valoare implicită, Oracle introduce valoarea NULL în coloana respectivă.
UPDATE <tabel> SET <coloana> = <valoare sau subquery> WHERE <condiţie pt. linia selectată>
Valoarea cheii externe trebuie să se regăsească între valorile cheii primare;
Valoarea cheii externe trebuie să se regăsească între valorile cheii primare;
Nu putem modifica cheia primară dacă acesteia îi corespunde o cheie externă; în acest caz modificăm sau ştergem cheia externă, după care putem modifica cheia primară.
Se foloseşte pentru a şterge linii dintr-un tabel.
Se foloseşte pentru a şterge linii dintr-un tabel.
Are următoarea sintaxă:
DELETE FROM <nume tabel>
WHERE <condiţia pentru liniile selectate>
La ştergeri, trebuie să respectăm restricţiile de implementare:
R- Restrictive – nu se poate şterge “părintele” dacă are “copil”
C – on delete Cascade – dacă şterg “părintele” , se şterg şi “copiii”
N – on delete Null – dacă şterg “părintele” , cheia externă devine NULL
D – Default – dacă şterg “părintele” , “copiii” trec pe nivelul “părintelui”
1. DELETE FROM copy_f_customers
1. DELETE FROM copy_f_customers
WHERE ID= 123;
(şterge clienţii cu codul 123)
2. DELETE FROM copy_f_customers
(şterge toate rândurile)
În general se foloseşte la tabele de dimensiuni foarte mari.
În general se foloseşte la tabele de dimensiuni foarte mari.
Actualizează datele din tabelul sursă, care au corespondent în tabelul destinaţie ( UPDATE ) şi inserează în tabelul sursă datele noi ( INSERT ) .
MERGE INTO <tabel destinaţie> USING <tabel sursă sau subquery> ON <condiţie>
Interval year (precizie_an) to month – returnează intervalul de timp exprimat în ani şi luni; precizie_an se referă la numărul de cifre din reprezentarea anului şi are valoarea implicită 2.
Interval day (precizie_zile) to second (precizie fracţiuni de secundă) - returnează intervalul de timp exprimat în zile, ore, minute şi secunde, unde precizie_zile se referă la numărul maxim de cifre alocate zilei şi are valoarea implicită 2, iar precizie fracţiuni de secundă reprezintă numărul de cifre zecimale din reprezentarea secundei, având valoarea implicită 6.
Interval day (precizie_zile) to second (precizie fracţiuni de secundă) - returnează intervalul de timp exprimat în zile, ore, minute şi secunde, unde precizie_zile se referă la numărul maxim de cifre alocate zilei şi are valoarea implicită 2, iar precizie fracţiuni de secundă reprezintă numărul de cifre zecimale din reprezentarea secundei, având valoarea implicită 6.
LONG – se foloseşte în cazul datelor multimedia, caractere de dimesiune de până la 2 G; stocarea este in-line, folosirea acestui tip nu este recomandată.
LONG – se foloseşte în cazul datelor multimedia, caractere de dimesiune de până la 2 G; stocarea este in-line, folosirea acestui tip nu este recomandată.
RAW– se foloseşte pentru date binare, fişiere multimedia (jpg, mp3, wav) de dimensiune variabilă de max. 2000 bytes;
CLOB - Caracter Large Object – tip de caractere de dimensiune variabilă – max. 4 Giga
CLOB - Caracter Large Object – tip de caractere de dimensiune variabilă – max. 4 Giga
BLOB – Binary Large Object - tip multimedia de dimensiune variabilă – max. 4 Giga
BFILE –Binary File - şir binar de 4 Giga, se reţine doar directorul şi numele fişierului
Comanda CREATE TABEL permite crearea unui nou tabel în schema proprie.
Comanda CREATE TABEL permite crearea unui nou tabel în schema proprie.
Prin schema proprie înţelegem mulţimea tuturor obiectelor ce aparţin utilizatorului curent, numit şi proprietar.
Comanda are sintaxa:
CREATE TABLE <nume tabel> ([DEFAULT <valoare sau expresie>]>
Atât numele tabelului cât şi numele coloanelor sunt identificatori.
Atât numele tabelului cât şi numele coloanelor sunt identificatori.
Reamintim ca un identificator ORACLE
- poate conţine doar litere, cifre şi caracterele _,$ şi #;
- începe obligatoriu cu o literă;
- nu poate depăşi 30 de caractere;
- nu poate fi un cuvânt rezervat Oracle.
Proprietarul are toate drepturile asupra obiectelor pe care le-a creat.
Proprietarul are toate drepturile asupra obiectelor pe care le-a creat.
Pentru crearea unui tabel în altă schemă, se foloseşte comanda:
CREATE ANY TABLE
Tabelele utilizatorilor sunt înregistrate în dicţionarul bazei de date (catalogul BD). Acest dicţionar apare în momentul creării bazei de date, acesta conţine şi tabelele interne.
În dicţionarul BD se pot vedea toate tabelele existente, dacă folosim comanda :
În dicţionarul BD se pot vedea toate tabelele existente, dacă folosim comanda :
SELECT * FROM DICTIONARY
Coloanele unui tabel pot avea valori implicite (Default Value).
Coloanele unui tabel pot avea valori implicite (Default Value).
Valorile implicite pot fi valori literale, expresii sau funcţii SQL (SYSDATE, USER), dar nu pot fi numele altor coloane, pseudocoloane (NEXTVAL sau CURRVAL).
Valorile implicite trebuie să fie compatibile cu tipul datei din coloana respectivă.
O altă modalitate de a crea un tabel este:
O altă modalitate de a crea un tabel este:
CREATE TABLE <nume tabel> AS
SELECT <coloana 1>, <coloana 2>, <coloana n>
FROM <tabel>
EXERCIŢIU:
EXERCIŢIU:
Scrieţi o comandă SQL care crează tabelul “products table” cu următoarea structură:
product_id column,
product_name,
product_description columns,
purchase_date – valoarea implicită a datei curente.