Sunteți pe pagina 1din 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 o o o o

UNIQUE - coloana permite doar valori unice DEFAULT valoare - valoare este inserat implicit CHECK (conditie) - permite doar valori ce satisfac anumite condiii PRIMARY KEY - coloana constituie cheie primar pentru tabel 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]

S-ar putea să vă placă și