Documente Academic
Documente Profesional
Documente Cultură
Folosire clauza SELECT pt. selectia unor anumite campuri dintr-o singura tabela precum si a
tuturor campurilor din tabela respectiva:
Clauza select este insotita de lista de campuri urmata de FROM si numele tabelei.
Observatii:
Poate aparea conditia WHERE , dupa WHERE se poate pune GROUP BY daca avem functie
agregat si dupa ORDER BY pentru ordonare.
Sintaxa generala:
SELECT Coloana1,Coloana2,Coloana N
INTO copie_tabela1
FROM tabela1
Exemplu:
Alte exemple de folosire a clauzei SELECT INTO:
SELECT DISTINCT
October 15, 2009
Clauza SELECT urmata de clauza distinct contine inregistrari unice pt.campurile specificate.
Clauza UPDATE
October 15, 2009
In exemplul de mai jos modificam inregistrarea asociata campului Date ce reprezinta o valoare la
o noua valoare a inregistrarii adica 10/5/2007 pentru persoana cu numele Ionescu si prenumele
Dragos.
Clauza WHERE cuprinde o conditie si este urmata clauzei FROM de selectie a unei tabele
precum si folosirea operatorilor AND pentru mai multe conditii.
Clauza DELETE
October 15, 2009
Exemple:
Sterge una sau mai multe tabele/ baze de date din sistem. Se poate folosi DROP TABLE
pt.stergerea unei tabele sau a mai multor tabele precum si DROP DATABASE pt.stergerea uneia
sau mai multor baze de date.
Exemplu:
RESTRICTII la drop database!!!:
CLAUZA TRUNCATE:
Stergerea unei coloane sau unor coloane se face folosind DROP COLUMN:
Sintaxa generala:
Operatorii AND si OR
October 15, 2009
Query ce permite selectia din tabela clienti unde nume =Ionescu , sau nume=Popescu sau
nume=Georgescu si prenumele =Mihai
Select IdClient,NumeClient
FROM Clienti
WHERE Data >1/1/2007 AND Data< 12/31/2007 and IdClient=8
DML si DDL
October 31, 2009
Ce tine de DML:
Ce tine de DDL:
Clauza WHERE
October 31, 2009
Clauza WHERE urmeaza clauzei FROM si permite filtrarea inregistrarilor dintr-o tabela urmand
o anumita conditie.
Ex:
Clauza ORDER BY
November 1, 2009
Clauza TOP
November 1, 2009
Exemple:
SQL Wildcards
November 1, 2009
Sunt folositi cand cauta date in baza de date. Sunt folositi cu operatorul LIKE
Nume_wildcard Descriere
Exemple:
Operatorul IN
November 1, 2009
Clauza BETWEEN
November 2, 2009
Folosita intr-o clauza WHERE pt.a lua inregistrari dintr-un anumit interval.
Exemple:
Sunt nume sugestive date tabelelor sau unor calcule si sunt insotite de cuvantul rezervat AS.
Exemple:
Functia COUNT este functie agregat si este insotita de clauza GROUP BY (pt.campurile non-
agregat). GROUP BY nume (pt.fiecare nume unic)
GROUP BY se pune dupa WHERE si dupa group by folosim clauza ORDER BY.
GROUP BY se pune dupa inner join.
Exemple:
EXEMPLU CREATE DATABASE, CREATE TABLE, INSERT INTO:
Exemplu complet:
Vom folosi acum comanda INSERT INTO pt.a insera inregistrari in tabela Pers:
Avem 2 metode de inserare a inregistrarilor intr-o tabela:
Metoda 1:
Metoda 2:
Efectul va fi acelasi:
Exista 2 proceduri stocate sistem care fac referire la constrangeri pt.a vedea informatii detaliate
despre constrangeri:
constrangerile sunt folosite in SQL pt. a limita tipul datelor care se vor afla in tabele
CONSTRANGEREA UNIQUE:
ALTE EXEMPLE CONSTRANGERE UNIQUE:
T2(O_Id,O_Nr,P_Id)
Constrangerea FOREIGN KEY este folosita pt. a preveni actiuni ce ar distruge legatura dintre
tabelele T1 si T2.
Previne inserarea de date invalide in coloana FOREIGN KEY (trebuie sa aiba aceleasi valori ale
tabelei la care face referire).
USE nume_BD
GO
OBS: SQL SERVER (MS-SQL) nu este case sensitive nu face distinctie intre litere mari si mici.
CONSTRANGEREA CHECK:
ALTE EXEMPLE CONSTRANGEREA CHECK:
CONSTRANGEREA DEFAULT:
este folosita pt.a insera o valoare default (implicita) intr-o coloana. Valoarea default va fi
adaugata toate inregistrarilor noi introduse daca nici o alta valoare nu este specificata.
Exemple:
Functii agregat (MAX,MIN,SUM,AVG), clauza GROUP BY
November 3, 2009
Dorim sa calculam suma totala (totalul comenzilor din coloana Pret_comanda) pentru fiecare
cumparator unic.
Se va afisa:
Daca omitem a doua linie (omitem clauza GROUP BY adica GROUP BY Cumparator) nu vom
mai avea suma totala pt.fiecare cumparator unic: (practic pt.fiecare inregistrare cumparator
calculeaza suma totala din coloana Pret_Comanda adica 5700):
Se va afisa:
Functia MAX selecteaza valoarea maxima dintr-o coloana selectata in acest exemplu coloana
Pret_comanda ( va intoarce valoarea 2000) in a treia coloana numita maxim iar primele 2
coloane sunt inregistrarile aferente IdComanda si Data_comanda.
Functia MIN selecteaza valoarea minima dintr-o coloana selectata (ca si MAX este tot o
functie agregat)
Functia SUM intoarce suma valorilor dintr-o coloana (este o functie agregat)
Functia AVG intoarce media aritmetica a valorilor dintr-o coloana (este o functie agregat)
Pe scurt este un fel de WHERE pt.functii agregat. Clauza HAVING a fost adaugata in SQL ,
deoarece clauza WHERE nu se foloseste in cazul functiilor agregat.
Exemplu:
Se vor afisa coloanele cu cei 3 cumparatori (Mihai,Ionel,Cosmin) dar cei care au suma
comenzilor<2000.
Ca rezultat va intoarce doar Ionel(la Cumparator) si 1700 in coloana Pret(este coloana alias
coloana cu un anumit pret).
Obs. Functiile scalare (sunt functiile definite de utilizator cele cu create function):
http://www.scribd.com/doc/26261717/Functii-Definite-de-Utilizator-in-SQL-Server
Conversia in litere mari ale inregistrarilor campului nume_banca din tabela BANCA
FUNCTIA UPPER:
Efect:
Efect:
SELECT UCASE(nume_banca) as nume_banca,nume_beneficiar
FROM BANCA
Pentru conversie in litere mici se va folosi LOWER similar ca in exemplul de mai sus.
FUNCTIA LEN:
Efect:
Inseram inregistrari in tabela Pers folosind comanda SQL INSERT INTO:
Vom folosi acum comanda INSERT INTO pt.a insera inregistrari in tabela Pers:
Metoda 1:
Metoda 2:
Efectul va fi acelasi:
Ca sa stergem toate inregistrarile dintr-o tabela fara a afecta tabela in sine:
TRUNCATE TABLE Pers va sterge automat toate inregistrarile fara a sterge insa tabela
creata PERS
Daca in campul P_Id aveam valori cu zecimale 12.02 pt a rotunji la 0 zecimale toate
inregistrarile din campul P_Id folosim functia ROUND din SQL SERVER (MSSQL):
3) Functiile GETDATE(),GETUTCDATE,CURRENT_TIMESTAMP
Alternativa la functiile getdate,getutcdate,si current_timestamp:
a) Functia DATENAME
Exemplul2:
b) Functia DATEPART
Exemplul1:
Exemplul2:
http://msdn.microsoft.com/en-us/library/ms189794.aspx
Exemplul1:
Exemplul2:
Exemplul3: cu variabile
http://msdn.microsoft.com/en-us/library/ms186819.aspx
Exemplul1:
sp_helplanguage French
Detalii aici:
http://msdn.microsoft.com/en-us/library/ms187357.aspx
@@DATEFIRST:
http://msdn.microsoft.com/en-us/library/ms187766.aspx
SET DATEFIRST:
http://msdn.microsoft.com/en-us/library/ms181598.aspx
SET DATEFORMAT:
http://msdn.microsoft.com/en-us/library/ms189491.aspx
SET LANGUAGE:
http://msdn.microsoft.com/en-us/library/ms174398.aspx
Exemple:
Camp IDENTITY al unei tabele
November 5, 2009
Campul identity este un camp cheie primara, unic (UNIQUE) si care poate fi numerotat automat
incepand de la o valoare cu un anumit pas.
IDENTITY(valoare_start,pas).
Exemplu concret de folosire a cheii IDENTITY pt.campul IdType care este camp IDENTITY
din tabela Types:
Efect:
Dupa cum se poate observa prima coloana IdType nu are valoare introdusa cu INSERT INTO
(deoarece nu se poate insera valoare explicita cu clauza INSERT). Avem 3 inregistrari deci va
numerota campul IdType de tip IDENTITY automat de la 1 cu pasul 1. Avand 3 inregistrari
prima inregistrare va fi numerotata cu 1, a doua inregistrare numerotata cu 2 , iar ultima cu 3
intrucat avem pasul 1.
Deasemenea campul IdVoiture este UNIQUE adica nu permite existenta inregistrarilor duplicat
in aceasta coloana. (campul IdVoiture a fost creat cu aceasta constrangere UNIQUE la crearea
tabelei cu numele Types cand am folosit clauza CREATE TABLE).
Pentru stergerea unei proceduri stocate se foloseste DROP PROC nume_procedura stocata in
cazul de fata:
Iata un exemplu complet care creeaza o procedura stocata cu numele testare avand 3 parametri.
Apelul si executia procedurii stocate se face prin cuvantul rezervat EXEC
nume_procedura_stocata valori_parametri (unde valorile parametrilor sunt separate prin , ).
Se selecteaza EXEC nume_procedura si lista_valori si se apasa butonul execute sau F5. Sau se
poate copia ultima linie ce contine EXEC intr-un New Query.
Se poate folosi si
USE nume_bd
GO
WITH nume_tabela AS
(query de executat
)
pt.procedura stocata.
Sa spunem ca vrem sa stergem inregistrarea care are id-ul = 3 din campul IdPartener din tabela
cu numele Parteneri.
Pentru aceasta:
Efect:
Acum vom redenumi numele tabelei din Categories in Categorie folosind procedura stocata
sp_rename:
Observam ca trebuie sa facem select pt.tabela Categorie acum deoarece tabela Categories nu mai
exista.
Efect:
Exemplu de inserare a rezultatului unei cereri pt.o tabela numita Tabela1 intr-o tabela copie a
acesteia numita Tabela1Copie:
Copierea unei coloane dintr-un query intr-o coloana dintr-
o tabela
November 9, 2009
Functia COALESCE
November 9, 2009
Inlocuieste valorile coloanei CombustibilConsumat care sunt NULL (deci fara valoare practic)
cu valoarea 0.
Efect:
FROM Table1
INNER JOIN Table2 ON (Table1.Id = Table2.Id)
Agregari(MIN,MAX,AVG,COUNT)
November 10, 2009
Exemplu functia agregat MIN, MAX si AVG
id Pret
00394 45,69
00394 35
00394 35
00394 44,3
00395 46,63
00395 41
00395 41
00395 45,45
Pentru functiile maxim si medie aritmetica vom folosi functiile agregat MAX respectiv AVG
astfel:
Metoda1: cu INNERJOIN
Metoda2: folosind functia agregata COUNT, GROUP BY si clauza HAVING
In continuare vom descrie pe scurt tipurile de BD sistem aflate in Object Explorer ->Databases-
>System Databases ca in printscreen-ul de mai jos:
model furnizeaza un template sau prototip pt.noile baze de date create de utilizatori (practic
aceasta bd este folosita atunci cand un nou user creeaza o noua bd cu CREATE DATABASE)
int
bigint
float
binary
char(10)
datetime
timestamp
image
money
nchar(10)
ntext
numeric(18,0)
nvarchar(50)
nvarchar(MAX)
real
smalldatetime
real
smallint
sql_variant
text
tinyint
uniqueidentifier
varbinary(50)
varbinary(MAX)
varchar(50)
varchar(MAX)
xml
Dezavantaje indecsi:
Mentinerea indecsilor necesita timp si resurse. Nu create un index dk nu-l veti folosi frecvent nu-
si are rostul!!!!
Un index este creat intr-o tabela pt.a gasi datele mult mai rapid si eficient.
Obs. UPDATE la o tabela care contine indecsi dureaza mai mult decat o tabela ce nu contine
indecsi , deoarece indecsii necesita un updata.
Deci va trebui sa cream indecsi doar pe coloanele (si tabelele) care vor fi folosite frecvent la
cautari.
DROP INDEX Produse.Index1 stergem index-ul cu numele Index1 din tabela Produse
Obs. DROP INDEX nu se poate folosi pt.campurile cu constrangerile de primary key sau
UNIQUE.
Iata cum se poate crea un index (CREATE INDEX) si sterge un index (DROP INDEX) . Dupa
cum se observa index-ul este creat pt.o anumita coloana dintr-o anumita tabela. Motivul :
imbunatatirea cautarilor (cautarile frecvente pt.o coloana -acea coloana trebuie indexata) si
rapiditatea si eficienta query-urilor.
Pentru schimbarea numelui unui index se foloseste procedura stocata sp_rename. (sau din se
acceseaza object explorer, se selecteaza index-ul, F7 si apoi F2 pt.modificarea numelui).
Exista 2 tipuri de indecsi clustered si nonclustered (cei non-clustered asigura sortarea, cei
clustered sunt sortati automat, au avantajul ca cererile sunt executate mult mai rapid, consuma
mai putina memorie indecsi clustered si trebuie sa avem un singur index clustered daca este
definit deja unul trebuie sters acel index al tabelei pt.ca putem avea doar un singur index
clustered per tabela. Se va folosi optiunea DROP_EXISTING pt.stergerea index-ului clustered.)
Se pot afla intr-o tabela pana la 247 indecsi non-clustered. (dupa altii putem avea 249
nonclustered index per tabel.)
cheile primare
-cheile externe
Indecsii CLUSTERED
Reprezinta un index in care inregistrarile din campul respective sunt ordonate crescator!
se poate realize un singur index cluster (deci o singura coloana va fi index clustered cu conditia
ca ea sa aiba coloanele ordonate crescator) O SINGURA TABELA POATE AVEA UN
SINGUR INDEX CLUSTER(pe o pagina ce contine date, datele vor fi stocate in ordinea
ascendenta)
Indecsi NONCLUSTERED
Este construit deasupra heap-ului ( ce contine o colectie de pagini) -> se vor folosi
identificatori pt.randuri in paginile indexate care vor conduce catre inregistrarile din paginile
respective
Cand este construit deasupra unei tabele cu un index cluster, SQL Server foloseste o
cheie CLUSTER in paginile de indexare care vor ghida catre index-ul cluster
Procedura stocata sp_helpindex (din SQL Server Enterprise Manager) obtine informatia index-
ului: nume index,tip index, optiuni pt.o tabela specifica
Use NorthWind
USE NorthWind
EXEC sp_help Customers
OPTIUNEA FILLFACTOR
OPTIUNEA PAD_INDEX
EXEMPLU FILLFACTOR
USE NorthWind
ON Orders(OrderID)
Exemplul de mai jos creeaza OrderID_ind index la campul OrderID in tabela Orders.
USE NorthWind
ON Orders(OrderID)
Pentru a afla informatii despre indecsi se folosesc urmatoarele proceduri stocate sistem din
mssql:
In SQL, un view este o tabela virtuala bazata pe un set de rezultate al unei query SQL.
Sintaxa generala:
Exemplu:
Concluzii:
Un view reprezinta o tabela virtuala care afiseaza anumite parti dintr-o tabela compusa din mai
multe coloane (putem afisa doar anumite coloane care ne intereseaza intr-o tabela virtuala
temporara numita view).
Restrictii
Optiunile CASCADE si RESTRICT pt.clauza DROP VIEW (in cazul mai multor view-uri :
view partinte->view copil):
Diferenta intre join-uri privind cele 2 cercuri ca cele 2 multimi. Ceea ce este cu rosu va fi
rezultatul intors de cerere (query):
Intre FROM si join se pune clauza WHERE doar daca nu avem functie agregat.
In cazul de fata o conditie cand avem functie agregat in SELECT se pune acea conditie folosind
doar clauza HAVING (creata special pt.a pune conditii atunci cand in select avem functii
agregat).
CROSS JOIN pt.2 tabele in mssql: (produsul cartezian a 2 tabele similar produsului cartezian a
2 multimi, practic o tabela e o multime de date):
Dupa clauza FROM urmeaza clauza WHERE pt.conditie (dar doar atunci cand nu avem functie
agregata in select adica nu avem max,min,avg,sum,count). Sau avem where dupa inner join dk
avem si join in cererea respectiva. (dk avem si join-uri in cererea respectiva where-ul vine dupa
join apoi urmand group by si dk este cazul order by).
In cazul in care avem functie agregata structura unui select este cea prezentata mai sus.
Exemplu:
Exemplul1:
Exemplul 2:
Exemplul3:
Procedura stocata de stergere exemple
December 2, 2009
Exemplul1:
Dupa ce s-a creat baza de date cu numele specificat (CREATE DATABASE) fisierul .mdf poate
fi gasit in aceasta cale (functie si de versiunea sql server care o aveti):
Putem restaura un backup sau crea o noua baza de date in acelasi timp din cod sql:
Sa presupunem ca in acea cale avem baza de date cu numele test si vrem sa face o copie cu
numele test_copie.mdf
Backup: C:\temp\test.bak
Sa presupunem ca dorim sa stergem baza de date Northwind automat din sql server.
Pasul3: Se observa ca urmeaza sa fie stearsa din sql server baza de date cu numele
Northwind se alege ok si baza de date cu numele Northwind va fi stearsa din Object
Explorer:
Importuri de date:
Pt.aceasta este necesar sa avem fisierul .mdf respectiv cu extensia .ldf asociat bazei de date mai
precis:
nume_bd.mdf
nume_bd.ldf
http://www.mediafire.com/?zy3nkghmitm
Procesarea procedurilor stocate sunt realizate de execution plan din SQL Server.
EXEC nume_procedura_stocata
Procedurile stocate pot referi tabele, view-uri, functii definite de utilizator (user defined
functions) sau alte proceduri, precum si tabele temporare.
Pt. a executa o procedura stocata trebuie sa fii membru logat al sysadmin, database
owner(db_owner) sau DataDefinition Language administrator (db_ddladmin) role, sau sa ai
permisiunea de a scrie clauza CREATE PROCEDURE pt.crearea procedurii stocate.
sp_help,sp_helptext,sp_depends,sp_stored_procedures,sysobjects,syscomments,sysdepends.
Procedura stocata sp_help obtine help si informatii suplimentare despre procedura stocata la fel
ca si sp_help text.
Procedura stocata sp_depends se executa atunci cand vrem sa determinam ce obiecte depind de
procedura stocata creata cu CREATE PROCEDURE.
Putem adauga un parametru intr-o procedura stocata care cauta in tabela Employee o data de
angajare specificata. Apoi procedura stocata poate fi executata de fiecare data ,daca schimbam
doar conditia procedura stocata se va executa cu o data diferita.
Exemplul urmator creeaza procedura stocata AddCustomer care adauga un nou customer(client)
in baza de date NorthWind. Se observa ca toate variabilele cu exceptia CustomerID si
CompanyName au specificat sa primeasca valoare NULL.
Se recompileaza folosind:
Sp_recompile
Valorile parametrilor sunt trecute la o procedura stocata care intorc widely result sets.
Exemplul1: Se creeaza o procedura stocata numita OrderCount care este recompilata de fiecare
data cand este executata.
USE NorthWind
GO
@CustomerID nchar(10)
WITH RECOMPILE
AS
SELECT count(*) FROM [Orders Qry]
GO
Sp_recompile este o procedura stocata in sistem care recompileaza procedura stocata specificata
sau arata viitoarea data cand aceasta va fi executata.
Exxemplul 3: Acest exemplu recompileaza toate procedurile stocate dintr-o tabela (din tabela
Customers din BD NorthWind ) folosind procedura stocata sistem sp_recompile:
DBCC FREEPROCCACHE
Exemplul de mai jos creaza o procedura stocata GetOrders care regaseste informatiile din
tabelele Orders si Customers interogand view-ul cu numele Orders Qry.
SQL Server trateaza atat sistemul cat si custom errormessages in acelasi mod.
http://msdn.microsoft.com/en-us/library/ms187316.aspx
http://technet.microsoft.com/en-us/library/ms190699.aspx
MEMORY POOL: The memory pool is the main unit of memory for an instance of SQL
Server.
http://msdn.microsoft.com/en-us/library/aa224760(SQL.80).aspx
In constructie!
Functia GETDATE()
Varianta 2 pt. b) conversie dintr-un tip de variabila in alt tip de variabila se poate realiza si
cu CAST
c) Variabila de tip data (datetime)
Functia RTRIM sterge spatiile din dreapta unui sir de caractere definit ca variabila
Exemplu LTRIM:
Exemplu RTRIM:
Operatori relationali:
Operatori de grouping : ()
If in mssql
February 27, 2010
Case in mssql
February 27, 2010
Exemplul1:
Exemplul2:
Exemplul3:
Exemplul4:
Exemplul5:
Exemplul6:
Exemplul7:
Exemplul8:
Exemplul9:
Exemplul 10:
Exemplul 11:
Exemple:
CREATE DATABASE
CREATE TABLE
GO
CREATE VIEW1
GO
CREATE VIEW2
GRESIT:
CREATE DATABASE
CREATE DATABASE
GO
c) Folosind Scripts
Pot fi scrise intr-un editor de text (sau query editor din SQL Server si sunt salvate cu extensia
.sql)
d) Folosind Tranzactii
Exemplu de tranzactie:
100$ sunt debitati din contul savings al clientului cu id-ul 78910 si 100$ sunt creditati contului
checking. Cumparatorul transfera 100$ din savings in checking.
BEGIN TRANSACTION
UPDATE savings
BEGIN
ROLLBACK TRANSACTION
END
UPDATE checking
IF @@ERROR <> 0
BEGIN
ROLLBACK TRANSACTION
END
COMMIT TRANSACTION
Exemple:
OBS!!! Nu se pun chei primare campuri de tip REAL sau FLOAT!!!!!!!!!! Pt.ca aceste valori nu
sunt precise.
Pt.a accesa index click pe tabela ->view design si al patrulea buton manage index and tables.
Exemplu:
Name varchar(16)
/*Am creat tabela Customer cu identificator unic pt.campul CustId cu o valoare default generate
de functia newid. O noua valoare va fi generate automat pt.fiecare noua inregistrare a tabelei
adaugata in tabela Clienti.
Se pot referi la una sau mai multe coloane sau la tipuri de date definite de utilizator
Default-urile si regulile sunt obiecte care se pot referi la una sau mai multe coloane sau la tipuri
de date definite de utilizator, facand posibil ca ele se fie definite o singura data si sa fie folosite
in mod repetat.
Daca o valoare nu este specificata atunci cand inseram date, o valoare default specifica o
valoare default(Implicita!) catre o coloana
De retinut ar fi ca:
Orice regula care nu este inclusa intr-o coloana si tipurile de date valideaza valoarea unui
default
Orice constrangere de tip check a coloanei trebuie sa valideze valoarea unui default
Nu putem crea o constrangere default la o coloana care este definita de un tip de date
definit de utilizator daca o valoare default se refera la un tip de data asociat unei coloane din
tabela
AS constant_expression
BINDING A DEFAULT
Dupa ce ati creat un default trebuie sa-l includeti (bind- impachetati) intr-o coloane sau un tip de
data definit de utilizator prin folosirea procedurii stocate de sistem sp_bindefault. Pt. a detasa
(sterge)un default se foloseste procedura stocata de sistem sp_unbindefault.
Regulile specifica doar valorile acceptate ce trebuiesc introduse intr-o coloana. Asigura ca datele
se afla intr-un anumit domeniu de valori, se potrivesc cu un anumit enunt sau potriveste intrarile
intr-o lista specificata.
Definitia unei reguli poate contine orice expresie ce este valida intr-o clauza WHERE
O coloana sau un tip de data definit de utilizator poate avea o singura regula care este
impachetata in ele
AS condition_expression
Dupa ce ati creat o regula trebuie s-o includeti(impachetati/bind) intr-o coloana sau un tip de data
definit de utilizator. Pentru aceasta veti folosi procedura stocata sistem sp_bindrule . Pentru a
detasa (sterge) o regula veti folosi procedura stocata sistem sp_unbindrule.
Exemplul2:
Rezultatul inserarii:
Exemplul3: Exemplu de tabela cu valoare de functie multi- instructiune Putem crea functii
folosind mai multe instructiuni care realizeaza operatii diferite. Acest exemplu creaza o
tabela multi-instructiune cu valoare de functie ce intoarce lastname sau atat firstname cat
si lastname al unui angajat (employee) depinzand de parametrul furnizat.
Exemplu ce creeaza un in-line table valued function that takes a region value as a
parameter.
USE NorthWind
GO
(@RegionParameter nvarchar(30))
RETURNS TABLE
AS
RETURN
FROM Northwind.dbo.Customers
Apelul functiei:
In-line functions can greatly increase performance when used with indexed views.
SQL SERVER performs complex aggregation and join operations when the index is
created.
SELECT STATEMENT:
SELECT
ProductName,UnitPrice,CategoryID,ClassNorthwind.dbo.fn_TaxRate(ProductID) As
TaxRate, UnitPrice* ClassNorthwind.dbo.fn_TaxRate(ProductID) AS PriceWithTax
FROM Products
The TaxRate column should contain values of 1.00 1.05 sau 1.10 pt.fiecare produs.
Interogarea de mai jos va crea un tabel in line value user defined function numit
fn_LargeFreight care accepta ca paramatru @FreightAmt a tipului de data money si
intoarce output-ul pt.urmatorul SELECT:
SELECT S.ShipperID,S.CompanyName,O.OrderID,O.ShipperDate,O.Freight
ON S.ShipperID = O.ShipVia
Urmatorul select selecteaza randurile din functia LargeFreight care au vanzarile in dolari
mai mari de 600$:
USE Northwind
GO
AS
BEGIN TRANSACTION
INSERT
Suppliers(CompanyName,ContactName,Address,City,Region,PostalCode,Country,Phone)
VALUES(@CompanyName,@ContactName,@Address,@City,@Region,@PostalCode,@C
ountry,@Phone)
IF @@error <>0
BEGIN
ROLLBACK TRAN
RETURN
END
SELECT @InsertSupplierID=@@identity
INSERT Products(ProductName,SupplierId,CategoryID,QuantityPerUnit,Discontinued)
VALUES
(@ProductName
@InsertSupplierID
@CategoryID,
@QuantityPerUnit
@Discontinued
IF @@error <>0
BEGIN
ROLLBACK TRAN
RETURN
END
PRINT pur si simplu afiseaza un mesaj (fara a afisa eroarea cum face @@error)
USE Northwind
GO
AS
IF @CustomerID IS NULL
BEGIN
RETURN
END
/*Ensure a valid CustomerID is supplied*/
IF NOT EXISTS
BEGIN
RETURN
END
BEGIN TRANSACTION
UPDATE Customers
SET Phone=@Phone
/*Display message that the phone number for CompanyName has been updated
*/
GO
Operatorul IN rol
March 1, 2010
Verifica daca un literal este intr-o lista de valori (daca o coloana apartine unei anumite liste de
valori , inregistrari):
Exemplu:
Tutoriale variabile , cast si convert mssql
March 2, 2010
a) Functia SUBSTRING
Rol: Extrage un subsir dintr-un sir de caractere incepand cu un anumit index si extrage un
anumit numar de caractere specificate
Sintaxa generala:
SUBSTRING(index_de_pe_care_incepe_extragere,nr_caractere_extrase)
Exemplul2 :
b) Functia ASCII
Rol: practic ia toate codurile ascii pt.fiecare caracter din sirul @string
c) Functia CHAR
d) Functia DATALENGTH
Rol:
intoarce nr. de bytes al unei coloane sau variabile definite
intoarce lungimea unui sir de caractere (cand variabila este sir de caractere tipul varchar in
mssql)
Rol: Extrage din stanga sau dreapta sirului de caractere un numar de caractere specificat.
Sintaxa generala:
LEFT( sir_caractere,nr_de_caractere_de_extras_din_stanga)
RIGHT( sir_caractere,nr_de_caractere_de_extras_din_dreapta)
g) Functia LEN
j) Functia NCHAR
Exemplul1:
l) Functia REPLACE
m) Functiile REPLICATE si REVERSE
Efectul executiei:
n) Functia SPACE
o) Functia STR
p) Functia CONVERT
q) Functia STUFF
1) Functia ABS
2) Functii trigonometrice
c) ATN2
d) COS si COT
e) TAN
PI -intoarce nr.pi
SELECT PI()
SET @nr1 = 2;
SET @nr2 = 3;
GO
1) Functia PATINDEX
Va fi intors rezultatul 64 .
Exemplul2:
http://msdn.microsoft.com/en-us/library/ms187489.aspx
Search conditions:
http://msdn.microsoft.com/en-us/library/ms173545.aspx
Predicate: (sunt folositi pt.a evalua o expresie la true sau false, in clauze where si having cautari
cu anumite conditii deci)
http://msdn.microsoft.com/en-us/library/ms189523.aspx
http://msdn.microsoft.com/en-us/library/ms176078.aspx
Predicatul CONTAINS:
http://msdn.microsoft.com/en-us/library/ms187787.aspx
Tutorial EXISTS:
http://msdn.microsoft.com/en-us/library/ms188336.aspx
[] characters to match
http://msdn.microsoft.com/en-us/library/ms179884.aspx
http://msdn.microsoft.com/en-us/library/ms188342.aspx
http://msdn.microsoft.com/en-us/library/ms174424.aspx
% in clauza LIKE care incep sau se termina cu un sir sau care contin un sir (% se pune intre )
http://msdn.microsoft.com/en-us/library/ms174986.aspx
Totul despre expresii mssql:
http://msdn.microsoft.com/en-us/library/ms190286.aspx
Practic in ex2 (m-am conectat vineri 1 singura data -coloana today din acest motiv are valoarea
1; coloana1 =5 pt.ca este ziua de vineri).
Exemplul2: (@@NESTLEVEL)
Detalii despre folosirea prefixului N aici: (pt.string-uri unicode):
http://databases.aspfaq.com/general/why-do-some-sql-strings-have-an-n-prefix.html
@@CURSOR_ROWS (T-SQL)
Returns the number of qualifying rows that are currently in the last cursor opened on the
connection. To improve performance, Microsoft SQL Server can populate large keyset and
static cursors asynchronously. @@CURSOR_ROWS can be called to determine the number of
the rows that qualify for a cursor have been retrieved at the time @@CURSOR_ROWS is called.
http://doc.ddart.net/mssql/sql70/globals_2.htm
CURSOR_STATUS (T-SQL)
A scalar function that allows the caller of a stored procedure to determine whether or not the
procedure has returned a cursor and result set for a given parameter.
http://doc.ddart.net/mssql/sql70/cr-cz_3.htm
@@FETCH_STATUS (T-SQL)
Returns the status of the last cursor FETCH statement issued against any cursor currently
opened by the connection.
http://doc.ddart.net/mssql/sql70/globals_6.htm
Functii metadata
March 5, 2010
9)FILEGROUP_ID (T-SQL)
10) Functia FILEGROUP_NAME (T-SQL)
Tutorial:
http://msdn.microsoft.com/en-us/library/ms190370.aspx
Vezi si:
http://msdn.microsoft.com/en-us/library/ms187317.aspx
http://msdn.microsoft.com/en-us/library/ms188359.aspx
http://msdn.microsoft.com/en-us/library/ms189520.aspx
http://msdn.microsoft.com/en-us/library/ms189520.aspx
Tutorial:
http://msdn.microsoft.com/en-us/library/ms188418.aspx
http://msdn.microsoft.com/en-us/library/ms176105.aspx
http://msdn.microsoft.com/en-us/library/ms189837.aspx
1) IS_MEMBER (T-SQL)
2) IS_SRVROLEMEMBER (T-SQL)
3) SUSER_SID (T-SQL)
4) SUSER_ID,SUSER_NAME (T-SQL),SUSER_SNAME (T-SQL)
5) Functiile USER_ID (T-SQL)
Exemplul1:
Exemplul2:
Exemplul5:
Exemplul6:
Exemplul2:
18) Functia PARSENAME (T-SQL)
http://msdn.microsoft.com/en-us/library/ms188006.aspx
Exemplul3:
20) Functia sistem @@ROWCOUNT (T-SQL)
Exemplul2:
Exemplul3:
22) Functia STATS_DATE (T-SQL)
Exemplul2:
Exemplul3:
In continuare vom prezenta toate functiile statistice sistem din sql server.
Acestea nu se refera la statistica matematica , ci intorc informatii statistice despre sistem
http://msdn.microsoft.com/en-us/library/ms187961.aspx
Pasul4: Se alege optiunea sql server authentification (pt.a ne autentifica in sql server doar
cu user si parola), windows authentification permite intrarea directa in sql server: (se
completeaza doar login name, password si confirm password)
Din cod (clauza CREATE LOGIN):
Exemplul1:
Exemplul2:
Exemplul3:
Exemplul4:
Crearea unui user (clauza CREATE USER):
Exemplul1:
Exemplul2:
DROP LOGIN:
http://msdn.microsoft.com/en-us/library/ms189522.aspx
Exemplul1:
http://msdn.microsoft.com/en-us/library/ms189479.aspx
http://msdn.microsoft.com/en-us/library/ms186278.aspx
http://msdn.microsoft.com/en-us/library/ms188798.aspx
http://msdn.microsoft.com/en-us/library/ms187811.aspx
http://msdn.microsoft.com/en-us/library/ms190502.aspx
http://msdn.microsoft.com/en-us/library/ms188371.aspx
http://msdn.microsoft.com/en-us/library/ms178640.aspx
http://msdn.microsoft.com/en-us/library/ms187940.aspx
12) GRANT Server Permissions (Transact-SQL)
http://msdn.microsoft.com/en-us/library/ms187940.aspx
http://msdn.microsoft.com/en-us/library/ms179887.aspx
http://msdn.microsoft.com/en-us/library/ms187797.aspx
http://msdn.microsoft.com/en-us/library/ms174346.aspx
http://msdn.microsoft.com/en-us/library/ms179867.aspx
Clauza DENY
http://msdn.microsoft.com/en-us/library/ms188402.aspx
http://msdn.microsoft.com/en-us/library/ms189473.aspx
4) DENY Certificate Permissions (Transact-SQL)
http://msdn.microsoft.com/en-us/library/ms179876.aspx
http://msdn.microsoft.com/en-us/library/ms186291.aspx
http://msdn.microsoft.com/en-us/library/ms177518.aspx
http://msdn.microsoft.com/en-us/library/ms177524.aspx
http://msdn.microsoft.com/en-us/library/ms189502.aspx
http://msdn.microsoft.com/en-us/library/ms173724.aspx
http://msdn.microsoft.com/en-us/library/ms186710.aspx
http://msdn.microsoft.com/en-us/library/ms176128.aspx
http://msdn.microsoft.com/en-us/library/ms182763.aspx
http://msdn.microsoft.com/en-us/library/ms178591.aspx
http://msdn.microsoft.com/en-us/library/ms178634.aspx
http://msdn.microsoft.com/en-us/library/ms174419.aspx
http://msdn.microsoft.com/en-us/library/ms187728.aspx
Clauza FETCH:
http://msdn.microsoft.com/en-us/library/ms180152.aspx
@@FETCH_STATUS (Transact-SQL)
Returns the status of the last cursor FETCH statement issued against any cursor currently opened
by the connection.
http://msdn.microsoft.com/en-us/library/ms187308.aspx
CREATE CREDENTIAL :
http://msdn.microsoft.com/en-us/library/ms189522.aspx
In constructie!
http://msdn.microsoft.com/en-us/library/ms190356.aspx
http://msdn.microsoft.com/en-us/library/ms182741.aspx
http://msdn.microsoft.com/en-us/library/ms189524.aspx
http://msdn.microsoft.com/en-us/library/ms174430.aspx
http://msdn.microsoft.com/en-us/library/ms188357.aspx
http://msdn.microsoft.com/en-us/library/bb934170.aspx
http://msdn.microsoft.com/en-us/library/ms187798.aspx
http://msdn.microsoft.com/en-us/library/ms178528.aspx
http://msdn.microsoft.com/en-us/library/ms189522.aspx
http://msdn.microsoft.com/en-us/library/bb677184.aspx
http://msdn.microsoft.com/en-us/library/ms176061.aspx
http://msdn.microsoft.com/en-us/library/cc280404.aspx
13) CREATE DATABASE ENCRYPTION KEY (Transact-SQL)
http://msdn.microsoft.com/en-us/library/bb677241.aspx
http://msdn.microsoft.com/en-us/library/ms173565.aspx
http://msdn.microsoft.com/en-us/library/ms181591.aspx
http://msdn.microsoft.com/en-us/library/ms189453.aspx
http://msdn.microsoft.com/en-us/library/bb677289.aspx
http://msdn.microsoft.com/en-us/library/ms189520.aspx
http://msdn.microsoft.com/en-us/library/ms187317.aspx
http://msdn.microsoft.com/en-us/library/cc280405.aspx
http://msdn.microsoft.com/en-us/library/ms186755.aspx
http://msdn.microsoft.com/en-us/library/ms174382.aspx
http://msdn.microsoft.com/en-us/library/ms187744.aspx
http://msdn.microsoft.com/en-us/library/ms179854.aspx
http://msdn.microsoft.com/en-us/library/ms190495.aspx
http://msdn.microsoft.com/en-us/library/ms178024.aspx
http://msdn.microsoft.com/en-us/library/bb895329.aspx
http://msdn.microsoft.com/en-us/library/ms187936.aspx
http://msdn.microsoft.com/en-us/library/ms186742.aspx
http://msdn.microsoft.com/en-us/library/ms177544.aspx
http://msdn.microsoft.com/en-us/library/ms189799.aspx
A trigger is a special kind of stored procedure that automatically executes when an event
occurs in the database server. DML triggers execute when a user tries to modify data
through a data manipulation language (DML) event. DML events are INSERT, UPDATE,
or DELETE statements on a table or view.Note:
These triggers fire when any valid event is fired, regardless of whether or not any table
rows are affected.DDL triggers execute in response to a variety of data definition language
(DDL) events. These events primarily correspond to Transact-SQL CREATE, ALTER,
and DROP statements, and certain system stored procedures that perform DDL-like
operations. Logon triggers fire in response to the LOGON event that is raised when a user
sessions is being established. Triggers can be created directly from Transact-SQL
statements or from methods of assemblies that are created in the Microsoft .NET
Framework common language runtime (CLR) and uploaded to an instance of SQL Server.
SQL Server allows for creating multiple triggers for any specific statement.
Exemplul1:
Exemplul2:
Cap1. Baza sql, creare fisiere bd
March 15, 2010
Fisierele flat sunt fisierele ce contin inregistrarile propriu-zise (mssql foloseste aceste fisiere
flat pt. stocare unui nr.mare de inregistrari la crearea unei tabele asociata unei baze de date).
a)
b)
c)
Ex3:
Interogarile aferente:
Ex3: VIEW-uri tabele virtuale (contin aceleasi inregistrari din tabele multiple, clauza
CREATE VIEW):
Tabelele:
Ce campuri coincid:
Crearea view-ului efectiv cu clauza CREATE VIEW:
Schema reprezinta o colectie de tabele strans legate intre ele. O schema este pt.tabele ceea ce
datele sunt pt.tabele. Sa presupunem ca lucrezi intr-o organizatie de vanzari cu 5 departamente ca
in figura de mai jos: (totalitatea acestor tabele strans legate intre ele reprezinta schema in mssql).
Tabelele sistem
The system catalog is a collection of tables that the DBMS itself owns, creates, and maintains in
order to manage the user-defined objects (tables, domains, constraints, schemas, other catalogs,
security, and so on) in the database. As a collection, the tables in the system catalog are often
referred to as the system tables because they contain data that describes the structure of the
database and all of its objects and are used by the database management system in some way
during the execution of every SQL statement. (se gasesc in master ->tables->system tables).
Data definition language (DDL), pt. crearea si stergerea (clauzele create,alter,drop) obiectelor
bazei de date cum ar fi : tabele, constrangeri, domenii si chei (primare,straine,externe)
Data manipulation language (DML), pt. schimbarea valorilor stocate in coloane , inserare de noi
linii, stergerea linii pe care nu le mai dorim (clauzele insert, delete,truncate,update si select)
Data control language (DCL), pt protejarea inegritatii bazei de date definind o secventa de una
sau mai multe instructiuni SQL ca o tranzactie in care sgbd-ul (sistemul de gestiune a bazei de
date adica soft-ul in cazul concret mssql) trebuie sa completeze toate instructiunile cu succes !
(clauzele COMMIT, ROLLBACK , GRANT si REVOKE) ; COMMIT (marcheaza sfarsitul unei
tranzactii) si ROLLBACK (se intoarce la inceputul tranzactiei sau la punctul de salvare =savepoint
al tranzactiei) sunt folosite pt.tranzactii
Limbaj de interogare (query language), pt.regasirea datelor.
DDL:
Ex6: Proprietatea IDENTITY a unei coloane a tabelei
Ex7: Creare asertiuni
Asertiunile sunt similare constrangerilor (asertiunile folosesc clauza CHECK): (singura diferenta
e ca asertiunea reprezinta o constrangere de tip check multi-tabele nu single -tabela ca in cazul
constrangerilor obisnuite)
Tipul de data BLOB si tipul BIT in mssql
March 15, 2010
Pt.a stoca date binare de orice tip ca fisier ASCII text, fisiere executabile (.exe) sau stream de biti
cu o lungime nedeterminata se foloseste tipul de data BLOB (BLOB acronim de la Binary
Large Object).
0h202020
0h6ABCDEF
http://msdn.microsoft.com/en-us/library/0t1k839z(VS.80).aspx
Tipul BIT este similar tipului de data boolean din limbajul PASCAL.
http://msdn.microsoft.com/en-us/library/ms177603.aspx
http://msdn.microsoft.com/en-us/library/ms177603.aspx
FLOAT, REAL
Tipurile variabile pt.siruri de caractere:
Exista 5 tipuri:
DATE. foloseste 10 caractere pt.a stoca anul in 4 cifre, luna in 2 cifre si ziua in 2 cire .
Formatul va fi Y-M-D (year-month day):
Ex: 2000-04-25
TIME. foloseste 8 caractere incluzand : (2 cifre pt.ore, 2 cifre pt.minute , 2 cifre pt.secunde) in
formatul: 19:22:34
TIMESTAMP include atat data cat si timp folosind 26 caractere (10 ca sa retina data, urmat
de un spatiu si 15 caractere reprezentand timpul incluzand fractiuni de secunde pana la 6
zecimale
DATETIME:
Tipul BIT : se pot stoca yes/no true sau false ca inregistrari
Exemplu:
CONSTANTE:
d) constante simbolice:
SQL-89:
MSSQL:
Valoare NULL inseamna ca valoare nu este cunoscuta, nu este specificata (adica este o
inregistrare goala intr-o anumita coloana)
Functia ISNULL:
Fie tabela:
Exemplul de mai jos inlocuieste valoarea NULL (adica fara valoare) din coloana quota cu In
Training:
Efect:
a) Setarea unei coloane sa aiba valori default (sa inlocuiasca valorile de NULL cu ceva
default)
b) Procedura stocata sp_bindefault (trebuie sa o folosim pt.ca sgbd-ul sa stie caror coloane
din tabela le asociaza valorile default create cu ajutorul clauzei CREATE DEFAULT)
c) Folosirea clauzei default intr-o clauza create table
pt.setarea valorilor default intr-o tabela
http://msdn.microsoft.com/en-us/library/ms188913.aspx
Exemplu creare foreign key(asignare fk) (practic valorile dintr-o coloana din tabela
parinte identice cu valorile din tabela copil ca sa fie foreign key):
3) Clauza DELETE
4) Clauza TRUNCATE
Sterge toate inregistrarile dintr-o tabela pastrand structura campurilor din tabela!!!
1) Clauza SELECT
CROSS JOIN pt.2 tabele in mssql:
Ex2: Clauza SELECT
predicate si operatori:
WHERE:
Ex8: Clauza ORDER BY in clauza SELECT:
relationali:
Ex10: Subcereri: (sintaxa generala):
Exemplul1:
Exemplul2:
Exemplul3:
Ex1: Expresii:
Clauza DECLARE definire variabila locala si ultimul exemplu cautare cu like functie de
variabila definita local:
Efect:
Ex14: Operatorii AND,OR si NOT exemple: (pt.conditii multiple ale inregistrarilor dintr-o
tabela)
Ex15: GROUP BY cu clauze ROLLUP si CUBE (pt.subtotals si grand totals):
Ex16: Functia agregata COUNT:
Ex17: Functiile agregate MAX si MIN:
Ex18: Functia agregata SUM:
O tranzactie: este o secventa de instructiuni sql pe care sgbd-ul le vede ca o singura unitate de
lucru.
Modelul tranzctiei ANSI/ISO defineste rolurile pt.COMMIT (ce marcheaza sfarsitul unei
tranzactii) si ROLLBACK ( ce se intoarce laprima instructiune sql executata)
Practic un utilizator logat la serverul bd urmareste acest model ANSI/ISO al unei tranzactii
atunci cand opereaza cu o tranzactie.
si continua cu alte instructiuni si se poate termina in una dintre situatiile aratate mai jos:
Logul tranzactiilor (.ldf) este creat automat atunci cand creati o baza de date si faze posibil pt.
sgbd sa restaureze (undo work) munca prin instructiunile unei tranzactii si restaureze bd intr-o
stare consistenta dupa recuperarea unei defectiuni hardware sau software.
Practic restaurand datele din bd mentinem copii ale datelor inainte si dupa schimbarile din logul
tranzactiilor (practic tine evidenta fisierul log al tranzactiilor de succesiunea tuturor
interogarilor/instructiunilor sql efectuate pana atunci).
Teorie:
Exemple:
a)
Schema generala de utilizare a unui savepoint (punct de salvare dintr-o tranzactie care
salveaza succesiune de instr.sql din tranzactia respectiva cu ajutorul cuv.rezervat save
transaction):
b)
c) Folosire tranzactii cu nume si tranzactii nested:
Cap6. DCL pt. securitatea BD
March 18, 2010
Windows Server Authentification, Sql Server authentification (folosire mssql enterprise manager
pt.setare permisiuni useri etc.; create roles, database roles privileges on mssql enterprise
manager)
CLAUZA GRANT:
GRANT CU SELECT:
GRANT CU INSERT:
GRANT UPDATE:
GRANT DELETE:
GRANT REFERENCES:
GRANT ALL:
CLAUZA REVOKE:
Exemplul1:
Exemplul2:
4) Chei straine
Exemplu concret cu 3 tabele (o coloana identica in 2 tabele dar care are valori diferite):
Cod sql:
Constrangerea REFERENTIAL:
Ex1:
Ex2:
Ex3:
Ex4: Legatura dintre cele 2 tabele e data de cheile primare din cele 2 tabele (se poate lega
cu left join practic pe cheile primare ale celor 2 tabele nu trebuie neaparat sa aiba acelasi
nume de chei primare!!! )
Ex5: Clauza match full (impiedica existenta unei valori NULL in coloana cheie straina!!!)
Tipuri de MATCH pt. cheia straina (externa) tabelei parinte (cheia externa /straina nu e
cheie primara in tabela copil!):
MATCH FULL. Tells the DBMS to require that all columns in a FOREIGN KEY be either
NULL or not-NULL. For example, the definition of a two-column FOREIGN KEY constraint
that includes a MATCH FULL clause tells the DBMS that the key value (NULL, NULL) is
acceptable. However, key values such as (100, NULL) and (NULL, 100) always violate
referential integrity because part of the key is NULL and part is non-NULL.
MATCH PARTIAL. Tells the DBMS to allow partially NULL FOREIGN KEY values, so long
as the value in each of the non-NULL columns in the FOREIGN KEY matches the value in the
corresponding column of the PRIMARY KEY. Thus, the definition of a two-column FOREIGN
KEY constraint that includes a MATCH PARTIAL clause tells the DBMS that the key value
(NULL, NULL) is acceptable. However, key values such as (100, NULL) and (NULL, 100) pass
the referential integrity check only if the corresponding column of the PRIMARY KEY has a
value of 100 in one more of the rows in the table.
MATCH SIMPLE. Tells the DBMS to skip the relational integrity check on partially NULL
FOREIGN KEY values. Therefore, if the definition of a two-column FOREIGN KEY includes a
MATCH SIMPLE clause (or has no MATCH clause at all), the DBMS will accept a FOREIGN
KEY with the value (NULL, NULL), (NULL, 100), and (100, NULL)whether or not the
PRIMARY KEY has a value of 100 in the corresponding column of the rows in the table.
Ex6:
Ex1:
Ex2:
Ex3 : Folosirea unui view pt.a afisa rezultatele unei expresii : (in select se pot face si
calcule):
Ex7: Clauzele GROUP BY (pt.fiecare col.unica specificata in group by) si clauza ORDER
BY folosite intr-un view:
Ex8: Join la 2 sau mai multe tabele si afisare informatiilor intr-un view (ce cuprinde
informatii din mai multe tabele):
Ex9: Operatorul UNION si UNION ALL (reuniunea datelor din 2 sau mai multe tabele):
c) UNION CORESPONDING
d) UNION ce combina rezultatele a 2 cereri:
1) Variabile
5) Clauza DISTINCT:
6) LOWER:
7)
8)
9) Operatorii UNION, INTERSECT si EXCEPT:
10) Operatorul except exemple:
1) Clauza BETWEEN
2) Operatorii IN si NOT IN intr-o clauza where
3) Operatorul LIKE
4) Operatorul ALL, SOME si ANY exemple:
5) Predicatul UNIQUE:
6) Predicatul OVERLAPS:
7) Restrictii pt.grouped queries
15) Clauza HAVING cum trateaza un rezultat NULL (valorile NULL in clauza HAVING):
Cap.12 Join-uri in sql, interogari multi-tabela
March 20, 2010
1) Produs cartezian a 2 sau mai multe tabele (nu exista clauza where)
Exemplul1:
Exemplul2:
Exemplul3:
Exemplul4:
continuare ex.4:
5) Alias-uri:
6) Natural Join
A NATURAL JOIN is a special type of equi-join with an implied WHERE clause that
compares all columns in one table with corresponding columns that have the same name in
another table for equality
Ex2:
13) JOIN la mai multe tabele intr-un singur query:
21) Exists in loc de count(*) pt.a verifica daca o subcerere intoarce cel putin o
inregistrare
Cap.13 Subquery-uri
March 24, 2010
DBO in momentul crearii tabelelor, view-urilor, query-urilor respectivul user devine database
owner (dbo)
2) GRANT DELETE
4)
5)
An INSERT trigger is a stored procedure you want the DBMS to execute either AFTER or
INSTEAD OF executing an INSERT statement on a particular table or view .
3) Triggers de delete
A DELETE trigger is a stored procedure that the DBMS executes either after or instead of
executing a DELETE statement on a specific table or view.
4) Triggers de update
An UPDATE trigger is a stored procedure that the DBMS executes either after or instead
of executing an UPDATE statement on a specific table or view.
Because a trigger can execute INSERT, UPDATE, and DELETE statements, work performed by
one trigger can cause the DBMS to activate another trigger, which may execute a statement that
activates a third trigger, and so on. In short, a single triggering (INSERT, UPDATE, or
DELETE) statement can cause the DBMS to activate a cascade of triggers, each trigger
executing statements that activate other triggers.
1) Teorie:
3) INSERTEXT si UPDATEXT:
4) Functiile pt.blob READTEXT,TEXTVALID, PATINDEX
In a single-database architecture (such as that used by a DB2 or ORACLE SQL Server), the
DBMS supports (and manages) a single database. (The database may consist of multiple physical
files, but all database objects exist in a single logical database file.)
Multi-server:
A multi-database architecture, as shown in Figure 498.2, lets you group tables (by owner) within
multiple database files. Instead of keeping tables for multiple applications in the same database
file (as is the case in a single-database architecture), each database will normally support a single
(or set of related) applications. When you add a new, different application, you will typically
create a new database to hold that tables used to support it.
Raport vanzari mssql:
3) Schema COLUMN_PRIVILEGES
7) Schema DOMAIN_CONSTRAINTS
8) Schema DOMAIN
9) Schema KEY_COLUMN_USAGE
Ex1:
Ex2:
Ex3:
8) Stergerea unei proceduri stocate sau functii utilizator (functii scalare)
Excluderea mutuala in OS: un set de proceduri care permit interactiunea cu o resursa comuna.
Job in Sql Server este o colectie de pasi executata de motorul bazei de date/database engine
Sql Server Agent -> serviciu ce gestioneaza joburile in Sql Server-> este un serviciu Microsoft
care il gasiti in start->run->type services.msc ce executa task-uri administrative programate
care se numesc joburi.