Sunteți pe pagina 1din 4

Comanda INSERT

Pentru a insera noi rnduri ntr-un tabel sau ntr-o vedere se utilizeaz
comanda INSERT. O linie nou inserat va ocupa n tabel o locaie arbitrar
(independena logic a datelor n bazele de date relaionale). Comanda INSERT are
una din urmtoarele dou forme:
INSERT [INTO] denumire_Tabel [(denumire_coloan[,])]
VALUES (expresie [, )
INSERT [INTO] denumire_Tabel [(denumire_coloan[,])]
Comanda_Select

Prima form permite inserarea direct a unui rnd ntr-un tabel al bazei de
date, iar a doua form permite inserarea mai multor rnduri care sunt rezultatul unei
comenzi SELECT.
expresie poate fi o expresie constant, null(dac este acceptat) sau default (dac este
definit o valoare implicit).
Dac lista coloanelor lipsete, atunci valorile din clauza values trebuie introduse n
ordinea n care se gsesc coloanele n tabel.
Dac se introduc date doar n anumite coloane, atunci lista acestor coloane trebuie
specificat, n plus n restul coloanelor se ncarc valoarea implicit (null sau valoarea
definit prin clauza default). De remarcat c valorile de tip caracter sau de tip dat
calendaristic trebuie incluse ntre apostrofuri.
Daca Insert nu respect constrngerile de integritate sau de validare sau furnizeaz o
valoare incompatibil pentru o coloan, atunci ntreaga operaie eueaz i se afieaz
un mesaj de eroare.
Exemple
insert into tBonuriConsum (NrBon,DataBon,CodGest,CodConsumator)
values (101,'03/10/08','g1','c2')
insert into tBonuriConsum (NrBon,CodGest,CodConsumator,DataBon)
values (102,'g2','c1','03/12/08')
insert into tBonuriConsum
values (103,'03/15/08','g1','c1')
insert into tBonuriConsum
(NrBon,CodGest,CodConsumator)
values (104,'g2','c1')

Aici, am presupus c pentru coloana DataBon este definita valoarea implicit:


DataBon datetime default getdate()

Comanda SELECT
Comanda SELECT este principalul instrument pentru regsirea datelor dintr-o
baz de date relaional. SELECT este destul de complex, dar principalele clauze se
pot sintetiza astfel:
SELECT [ALL | DISTINCT] [TOP n [Percent] [WITH TIES]]
{ * | lista_de_coloane_rezultat}
[INTO tabel_nou]
FROM lista_de_tabele
[WHERE conditie]
[GROUP BY lista_de_expresii_de_grupare
[HAVING conditie]
]
[ORDER BY {expresie_de_ordonare [ ASC | DESC][,]}]

Clauzele SELECT i FROM sunt obligatorii i permit specificarea listei


coloanelor prezente n rezultat i a listei tabelelor din care vor fi consultate informaii.
Numele unui tabel poate fi urmat de un alias al acestuia. Restul clauzelor sunt
opionale, permind rafinarea comenzii i oferind anumite servicii suplimentare.
Optiunea ALL este implicit i permite selectarea tuturor rndurilor,
Optiunea DISTINCT impune suprimarea dublurilor (de rnduri) din rezultat.
La eliminarea duplicatelor valorile NULL se consider ca fiind egale ntre ele.
TOP n [PERCENT] - vor fi returnate numai primele n rnduri din rezultat.
Dac se specific i opiunea PERCENT, atunci numai primele n procente din rnduri
le rezultatului sunt returnate. In acest caz n trebuie s fie ntre 0 i 100. Dac
interogarea conine clauza ORDER BY, atunci sunt returnate primele n rnduri (sau n
procente de rnduri ) din rezultatul ordonat dup criteriile clauzei ORDER BY. n
lipsa clauzei ORDER BY, ordinea rndurilor este arbitrar.
WITH TIES - dac exist mai multe rnduri cu aceeai valoare a criteriilor
din clauza ORDER BY i sunt printre ultimele candidate pentru a face parte din cele
TOP n (PERCENT) rnduri , atunci ele vor fi incluse n rezultatul returnat. TOP
...WITH TIES se poate folosi numai n interogrile care conin clauza ORDER BY.
Clauza INTO tabel_nou creeaz un nou tabel unde se insereaz rndurile
rezultat.
Opiunea * impune includerea n rezultat a tuturor coloanelor tabelelor
menionate n clauza FROM.
lista_de_coloane_rezultat este format din coloane ale tabelelor clauzei
FROM, coloane calculate sau funcii agregat. Coloanele calculate sau obinute pe baza
funciilor agregat nu au denumiri implicite.
Denumirile coloanelor rezultat poat fi impuse prin construcii de forma
expresie AS alias_coloan
sau
alias_coloan = expresie.
Dac aliasul este format din mai multe cuvinte separate prin spaiu va trebui
s-l scriem ntre apostrofuri , ghilimele sau paranteze ptrate
Exemple:

codCl AS CodClient
codF AS 'Cod furnizor'

codStd AS "Cod student"


pret AS [Pret unitar]
cantitate * pret as valoare
"cod student"=codStd
'cod student'=codStd
[cod student]=codStd

alias_coloan poate fi folosit n clauza ORDER BY dar nu i n clauzele


WHERE, GROUP BY sau HAVING.
Denumirea de coloan trebuie prefixat cu denumirea sau aliasul tabelului din
care provine ori de cte ori exist ambiguiti: tabel.coloan
Construciile de forma denumire_tabel.* sau alias_tabel.* implic
includerea n rezultat a tuturor coloanelor tabelului specificat
Sistemul SQL Server accept urmtoarele funcii agregat (de grup): COUNT,
SUM, MAX, MIN, AVG (valoare medie), VAR i VARP (dispersia), STDEV i
STDEVP (deviaia standard).
Clauza FROM specific sursele din care se selecteaz rndurile (tabele, vederi,
fraze SELECT imbricate). Clauza FROM este obligatorie ori de cte ori n clauza
SELECT se face referire la cel puin o coloan.
Clauza WHERE specific o condiie care este folosit pentru a selecta rndurile.
Rndurile care nu satisfac condiia specificat prin WHERE nu particip la prelucrare.
Prin GROUP BY se constituie subansamble, iar prin clauza HAVING se
selecteaz subansamble. Clauza GROUP BY se introduce dac SELECT include
funcii(prelucrri) la nivel de grupuri de rnduri. In acest caz coloanele citate n
clauza SELECT vor fi fie argumente ale functiilor de agregare(sum, count, max, min,
avg, etc.), fie vor aprea n clauza GROUP BY pentru definirea nivelului de grupare.
Grupurile care nu satisfac condiia din clauza HAVING sunt eliminate
Clauza ORDER BY specific ordinea n care trebuie returnate rndurile din
rezultat. Ordinea implicit este ASC (cresctoare), iar pentru o secven cresctoare
valorile null sunt afiate ultimele. Dac nu se face nici o specificare atunci ordinea de
returnare a rndurilor este la latitudinea server-ului.
Funcii de agregare
Funciile de agregare efectueaz un anumit calcul asupra unui set de valori i
returneaz ca rezultat o singur valoare. Cu excepia funciei COUNT, toate funciile
de agregare ignor valorile NULL. Funciile de agregare sunt adesea folosite
mpreun cu clauza GROUP BY pentru a calcula valori agregate la nivelul grupurilor
de rnduri. Folosirea funciilor de agregare este permis numai n lista SELECT a
unei fraze SELECT principal sau imbricat sau ntr-o clauz HAVING.
Principalele funcii de agregare disponibile n SQL Server sunt:

Sintax

Semnificaie
Numrul de elemente ale unui grup,
cuprinznd toate duplicatele i
rndurile cu valori NULL
numrul de elemente ale unui grup include toate duplicatele, dar fr
valorile NULL;
numrul de elemente ale unui grup fr duplicate i fr valori NULL.

Count(*)
COUNT([ALL] expresie)
COUNT( DISTINCT expresie] )
MAX( expresie)

maximul dintr-un grup de valori.

MIN (expresie)

minimul dintr-un grup de valori.

SUM([ALL | DISTINCT] expresie numeric)

suma valorilor unui grup.

AVG([ALL | DISTINCT] expresie numeric)

media valorilor unui grup;

VAR(expresie_numeric)

returneaz dispersia estimat pentru


valorile expresiei dat ca argument.
1
2
(x x) ,
n 1

reprezint

media valorilor.
returneaz dispersia calculat pentru
valorile expresiei dat ca argument.

VARP(expresie_numeric)

1
2
(x x) ,
n

reprezint

media

valorilor.
returneaz deviaia standard estimat
pentru valorile expresiei dat ca
STDEV(expresie_numeric)

argument.

1
(x x)2 ,
n 1

reprezint media valorilor.


returneaz deviaia standard calculat
pentru valorile expresiei dat ca
argument.

STDEVP(expresie_numeric)

1
(x x) 2 ,
n

reprezint media

valorilor.
unde:
ALL - indic faptul c agregarea se aplic tuturor valorilor. ALL este opiunea
implicit.
DISTINCT - specific faptul c agregarea se aplic doar asupra unei singure instane a
fiecrei valori din grup, duplicatele fiind ignorate.
expresie - este o expresie de orice tip. Expresia nu poate conine funcii de agregare
sau fraze SELECT imbricate.

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