Anda di halaman 1dari 3

Limbajul SQL a fost pentru prima dat standardizat de ctre Organizaia Internaional pentru

Standardizare (ISO) n anul 1987. De atunci limbajul a suferit modificri/mbuntiri n mai multe
rnduri, ultima versiune stabil fiind SQL:2008 (denumit ISO/IEC 9075:2008).
Dei standardizat la nivel internaional, fiecare dezvoltator de baze de date a modificat i a extins
versiunea standard pentru a exploata avantajele oferite de implementarea particular a produsului
propriu. Datorit dimensiunii mari i a complexitii standardului cei mai muli dezvoltatori nu l-au
implementat n totalitate. Vice-versa, standardul nu specific comportamentul bazei de date n anumite
situaii, decizille ramnnd la latitudinea dezvoltatorilor. Se vorbete astfel de dialecte SQL. Rezultatul
este apariia de incompatibiliti ntre SGBD-uri relaionale diferite. Unele incompatibiliti sunt
intenionat pstrate de dezvoltatori cu scopul de fidelizare a clienilor.
Declaraia de conformitate Oracle cu standardul ISO SQL:2008 poate fi studiat la adresa
http://download.oracle.com/docs/cd/E14072_01/server.112/e10592/ap_standard_sql003.htm

n continuare sunt listate n forma Backus-Naur cele mai uzuale comenzi SQL. Conveniile de sintax n
acest format sunt urmtoarele:
| reprezint conjuncia
[] reprezint elemente opionale
{||} reprezint exact un element din list

Comenzi DDL (de definire a datelor)

Crearea tabelelor
CREATE [{GLOBAL | LOCAL} TEMPORARY] TABLE
nume_tabel
(nume_coloan {data_type | domain_name} [constrngeri]
[, column_name {data_type | domain_name} [constrngeri]]
[]
)
[ ON COMMIT { DELETE | PRESERVE } ROWS ]

Opiunea TEMPORARY specific crearea unui tabel temporar, care i pstreaz coninutul doar pe
parcursul unei sesiuni (opiunea ON DELETE PRESERVE ROWS) sau doar pe durata unei tranzacii (pn la
apariia comnzii COMMIT). n Oracle exist doar varianta GLOBAL a tabelelor temporare: definiia
tabelului temporar este vizibil din toate sesiunile de lucru ns accesul la date este privat (datele
inserate intr-o sesiune pot fi accesate doar din sesiunea respectiv).
Constrngerile specificate la creare n dreptul fiecrei coloane:
o NOT NULL coloana nu permite valoarea NULL
o UNIQUE - coloana permite doar valori unice
o DEFAULT valoare - valoare este inserat implicit
o CHECK (conditie) - permite doar valori ce satisfac anumite condiii
o PRIMARY KEY - coloana constituie cheie primar pentru tabel
o Constrangerile de tip cheie straina se declar la creare astfel:
REFERENCES nume_tabel_parinte[(lista_chei_candidat)]
[ ON DELETE {SET NULL | CASCADE | NO ACTION}]
[ ON UPDATE {SET NULL | CASCADE | NO ACTION}]

NO ACTION (utilizat n Oracle) este nlocuit n unele SGBD-uri cu RESTRICT


Alternativ constrangerile de tip UNIQUE, declararea cheii primare si a cheilor straine pot fi specificate la
sfarsitul comenzii:
CREATE TABLE nume_tabel
{(nume_coloana tip [NOT NULL] [UNIQUE] [DEFAULT valoare_implicita]
[CHECK (condiie)]
[,...]}

[PRIMARY KEY (lista_coloane),]

{[UNIQUE (lista_coloane),] [,]}

{[FOREIGN KEY (lista_coloane_FK)
REFERENCES nume_tabel_parinte [(lista_chei_candidat)],
[ ON DELETE {SET NULL | CASCADE | NO ACTION}]
[ ON UPDATE {SET NULL | CASCADE | NO ACTION}]

{[CHECK (conditie)] [,] })


tergerea unui tabel
DROP TABLE nume_tabel [RESTRICT | CASCADE]
CASCADE permite tergerea unui tabel care e refereniat de un VIEW sau de chei strine i terge view-ul
i restricia de tip cheie strin

n Oracle sintaxa pentru tergerea tabelelor este:
DROP TABLE nume_tabel [CASCADE CONSTRAINTS] [PURGE]
n Oracle tabelele terse sunt reciclate dac nu este specificat opiunea PURGE, ele putnd fii
recuperate cu comanda:
FLASHBACK TABLE nume_tabel TO
{ { SCN | TIMESTAMP } expr [ { ENABLE | DISABLE } TRIGGERS ] |
BEFORE DROP [ RENAME TO table ]} ;

Comenzi DML (de manipulare a datelor)

Inserarea nregistrrilor
INSERT INTO nume_tabel [ (lista_coloane) ]
VALUES (lista_valori)


Actualizarea valorilor
UPDATE nume_tabel
SET nume_coloana1 = valoare1
[, nume_coloana2 = valoare2...]
[WHERE conditie]


tergerea nregistrrilor
DELETE FROM nume_tabel
[WHERE conditie]


Interogarea bazei de date
SELECT [DISTINCT | ALL] {* | [expresie_coloana [AS nume_nou]] [,...] }
FROM nume_tabel [alias] [, ...]
[WHERE conditie]
[GROUP BY lista_coloane] [HAVING conditie]
[ORDER BY lista_coloane]

Anda mungkin juga menyukai