Sunteți pe pagina 1din 331

Selectia unor campuri dintr-o tabela Clauza SELECT

October 15, 2009

Clauza SELECT extrage date dintr-o BD

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.

Inner-join se pune inaintea clauzei GROUP BY!

Intr-un select se pot face calcule!

Clauza SELECT INTO


October 15, 2009

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.

Sintaxa generala e prezentata in printscreen (schimbati numele campurilor si numele tabelei in


exact ceea ce aveti nevoie):
Clauza INSERT INTO
October 15, 2009

Permite inserarea de noi inregistrari (noi randuri) in tabela specificata.

In exemplul de mai jos inseram o inregistrare in tabela Patrimoniu_carti:(avem prezentate 2


posibile metoda de folosire a clauzei INSERT INTO):

Clauza UPDATE
October 15, 2009

Permite modificarea unei inregistrari dintr-un anumit camp.

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

Clauza DELETE sterge continutul inregistrarilor unei tabele.

Exemple:

Clauza DROP si TRUNCATE


October 15, 2009

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!!!:

Cand s-a facut un update (it was restored)

Cand un user este conectat la ea! (prin user si pass)

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

Query-ul este urmatorul (cu folosirea operatorilor AND si OR):

Operatori relationali si clauza between


October 15, 2009

Select IdClient,NumeClient

FROM Clienti
WHERE Data >1/1/2007 AND Data< 12/31/2007 and IdClient=8

sau se poate folosi clauza between

WHERE Data BETWEEN 1/1/2007 AND 12/31/2007 AND IdClient=8

Unde data este in format luna/zi/an in MSSQL.(SQL SERVER).

DML si DDL
October 31, 2009

DML acronim pt. Data Manipulation Language

Ce tine de DML:

Clauza SELECT extrage date dintr-o BD

Clauza UPDATE updateaza (modifica) inregistrari dintr-o BD


Clauza DELETE sterge date dintr-o bd

Clauza INSERT INTO insereaza inregistrari intr-o tabela

DDL acronim pt. Data Definition Language

Ce tine de DDL:

CREATE DATABASE creeaza BD

ALTER DATABASE modifica structura unei BD

CREATE TABLE creeaza o tabela

ALTER TABLE modifica structura unei tabele

DROP TABLE sterge o tabela cu numele specificat

DROP DATABASE sterge o BD cu numele specificat

Clauza WHERE
October 31, 2009

Clauza WHERE urmeaza clauzei FROM si permite filtrarea inregistrarilor dintr-o tabela urmand
o anumita conditie.

Sintaxa generala e prezentata in printscreen (schimbati numele campurilor si numele tabelei in


exact ceea ce aveti nevoie):

Lista operatori SQL


October 31, 2009

In continuare sunt prezentati operatorii disponibili in MSSQL:

Obs. Operatorii AND si OR se pot combina:

Ex:

SELECT * FROM nume_tabela

WHERE Nume = Popescu AND (Nume = Mihai OR Nume = Ionut)


Alege pe cei cu numele de Mihai Popescu sau Ionut Popescu.

Clauza ORDER BY
November 1, 2009

Sorteaza anumite inregistrari de pe o anumita coloana.

Daca specificam ORDER BY nume_coloana sorteaza implicit inregistrarile din coloana


respectiva crescator.

Pt. sortare descrescatoare se specifica DESC:

ORDER BY nume_coloana DESC

Sintaxa generala este prezentata in printscreen-ul de mai jos:


Exemple clauza ORDER BY:

Clauza TOP
November 1, 2009

Clauza TOP specifica nr. de inregistrari care trebuie intoarse.

Ex: TOP 2 vor fi intoarse primele 2 inregistrari cu o anumita conditie


Operatorul LIKE
November 1, 2009

Este folosit pt. a cauta un anumit continut dintr-o coloana.

Exemple:
SQL Wildcards
November 1, 2009

Sunt folositi cand cauta date in baza de date. Sunt folositi cu operatorul LIKE
Nume_wildcard Descriere

% inlocuitor pt. 0 sau mai multe caractere

_ inlocuitor pt.exact un caracter

[a-z] in domeniul a-z un fel de expresie regulata

[^a-d] care nu se afla in domeniul a-d un fel de expresie regulata

Exemple:

Operatorul IN
November 1, 2009

Ajuta sa specificam valori multiple in clauza WHERE

Clauza BETWEEN
November 2, 2009

Folosita intr-o clauza WHERE pt.a lua inregistrari dintr-un anumit interval.

Exemple:

SQL Alias si COUNT functie agregat


November 2, 2009

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.

CREATE TABLE,DATABASE, INSERT INTO


ex.complet,ALTER TABLE
November 2, 2009

Creeaza BD si tabele ( cu campuri specificate).


Pentru a insera inregistrari in tabela Persoane (in fiecare camp in parte ) vom folosi clauza
INSERT TO.

Comanda ALTER permite modificari in structura tabelelor

Exemple:
EXEMPLU CREATE DATABASE, CREATE TABLE, INSERT INTO:

Exemplu complet:

Vom crea baza de date cu numele Persoane, tabela cu numele Pers.

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:

INSERT INTO Pers (P_Id,Nume,Prenume,Adresa,Oras) VALUES (1, 'Pop', 'Virgil',


'Str.Florilor', 'Ploiesti');
INSERT INTO Pers (P_Id,Nume,Prenume,Adresa,Oras) VALUES (2, 'Pop', 'Mihai' ,
'Str.Iaz' , 'Campina' );
INSERT INTO Pers (P_Id,Nume,Prenume,Adresa,Oras) VALUES (3, 'Pop', 'Ion' ,
'Str.Lacului' , 'Oradea' );

Metoda 2:

INSERT INTO Pers (P_Id,Nume,Prenume,Adresa,Oras)


SELECT 1, 'Pop', 'Virgil', 'Str.Florilor', 'Ploiesti' union ALL
SELECT 2, 'Pop', 'Mihai' , 'Str.Iaz' , 'Campina' union ALL
SELECT 3, 'Pop', 'Ion' , 'Str.Lacului' , 'Oradea';

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

CLAUZA ALTER TABLE:

Constrangeri SQL (NOT NULL,UNIQUE, PRIMARY


KEY,FOREIGN KEY,CHECK,DEFAULT)
November 2, 2009

Exista 2 proceduri stocate sistem care fac referire la constrangeri pt.a vedea informatii detaliate
despre constrangeri:

sp_helpconstraint nume_tabela si sp_help_constraintname pt.a vedea informatii despre


constrangerile create

constrangerile sunt folosite in SQL pt. a limita tipul datelor care se vor afla in tabele

Exista 6 tipuri de constrangeri:

CONSTRANGEREA NOT NULL

CONSTRANGEREA UNIQUE:
ALTE EXEMPLE CONSTRANGERE UNIQUE:

CONSTRANGEREA CHEIE PRIMARA (PRIMARY KEY)


Constrangerea FOREIGN KEY
O cheie straina este o coloana cu aceleasi valori care se regaseste intr-o alta tabela. Cu alte
cuvinte e o coloana din tabela2 care are aceleasi valori ca o coloana din tabela1.

Fie 2 tabele cu numele T1 si T2 cu urmatoarele campuri:


T1(P_Id,Prenume,Nume,Adresa,Oras)

T2(O_Id,O_Nr,P_Id)

Obs. P_Id e cheie primara (PRIMARY KEY) pt. tabela T1

O_Id e cheie primara PK (PRIMARY KEY) pt. tabela T2

P_ID e cheie straina FK (FOREIGN KEY) pt. tabela T2

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).

In continuare sunt prezentate exemple folosind constrangerea FOREIGN KEY:


OBS. Pt. folosirea unei BD existente folosim cuv.cheie USE:

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

Functiile agregat au nevoie de clauza GROUP BY.

Sintaxa generala GROUP BY:

Fie tabela Comenzi :


FUNCTIA AGREGAT SUM si CLAUZA GROUP BY EXEMPLU:

Dorim sa calculam suma totala (totalul comenzilor din coloana Pret_comanda) pentru fiecare
cumparator unic.

Vom folosi GROUP BY si functia agregat SUM:

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)

Clauza HAVING (pt.functii agregat MIN,MAX,AVG,SUM)


November 3, 2009

Este folosita in cazul in care intr-un SELECT avem functii 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.

Sintaxa generala a clauzei HAVING:

Exemplu:

Fie tabela Comenzi cu urmatoarele inregistrari:


Dorim sa aflam toti cumparatorii care au comenzile mai mici decat 2000. Vom folosi clauza
HAVING deoarece avem functie agregat.

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).

Alt exemplu HAVING:


Rezultat:

Functii scalare, data calendaristica


November 3, 2009

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:

Functia UPPER se foloseste si pt.campuri multiple:

Efect:
SELECT UCASE(nume_banca) as nume_banca,nume_beneficiar
FROM BANCA

Msg 195, Level 15, State 10, Line 1


UCASE is not a recognized built-in function name.
Asta inseamna ca functia UCASE nu exista in SQL SERVER!

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:

Avem 2 metode de inserare a inregistrarilor intr-o tabela:

Metoda 1:

INSERT INTO Pers (P_Id,Nume,Prenume,Adresa,Oras) VALUES (1, Pop, Virgil,


Str.Florilor, Ploiesti);
INSERT INTO Pers (P_Id,Nume,Prenume,Adresa,Oras) VALUES (2, Pop, Mihai ,
Str.Iaz , Campina );
INSERT INTO Pers (P_Id,Nume,Prenume,Adresa,Oras) VALUES (3, Pop, Ion ,
Str.Lacului , Oradea );

Metoda 2:

INSERT INTO Pers (P_Id,Nume,Prenume,Adresa,Oras)


SELECT 1, 'Pop', 'Virgil', 'Str.Florilor', 'Ploiesti' union ALL
SELECT 2, 'Pop', 'Mihai' , 'Str.Iaz' , 'Campina' union ALL
SELECT 3, 'Pop', 'Ion' , 'Str.Lacului' , 'Oradea';

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):

FUNCTIA GETDATE() intoarce data si ora curenta a sistemului:

3) Functiile GETDATE(),GETUTCDATE,CURRENT_TIMESTAMP
Alternativa la functiile getdate,getutcdate,si current_timestamp:

4) Functii care preiau date si timp

a) Functia DATENAME

Exemplul2:
b) Functia DATEPART

Exemplul1:

Exemplul2:

c) Functiile DAY, MONTH si YEAR

d) Functiile DATEDIFF si DATEADD

Exemplul1: cu tabela creata


Exemplul2: cu variabile declarate

Pentru mai multe detalii despre datediff:

http://msdn.microsoft.com/en-us/library/ms189794.aspx

Exemple functia DATEADD:

Exemplul1:

Exemplul2:
Exemplul3: cu variabile

Pentru mai multe detalii despre functia dateadd:

http://msdn.microsoft.com/en-us/library/ms186819.aspx

Mai am si ex cu variabile de la dateadd de lamurit!

e) Functia ISDATE de verificare daca este data

Exemplul1:

Exemplul2: (cele 2 printscreen-uri)


Utilizare procedura sp_helplanguage afiseaza informatii despre help-ul oferit de mssql:

sp_helplanguage French

Detalii aici:

http://msdn.microsoft.com/en-us/library/ms187357.aspx

@@@@LANGUAGE functie sistem ce intoarce limba folosita curent de mssql

Alte functii interesante:

@@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

SELECT @@LANGUAGE AS Language Name;

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: IDENTITY(1,1) se va numerota prima coloana a unei tabele presupunand ca prima


coloana este camp identity incepand de la 1 si cu pasul 1. Daca avem deci 10 inregistrari in
prima coloana (prima inreg va avea 1ultima 10 pt.ca pasul este 1).

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).

Exemplu procedura stocata cu parametri


November 5, 2009

Exemplu creare procedura stocata cu numele testare.

Procedura stocata se creeaza cu ajutorul cuvantul rezervat CREATE PROC


nume_procedura_stocata.
Pt.modificari asupra procedurii stocate se inlocuieste CREATE cu ALTER.

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.

Stergerea unei singure inregistrari dintr-un singur camp


November 8, 2009

Sa spunem ca vrem sa stergem inregistrarea care are id-ul = 3 din campul IdPartener din tabela
cu numele Parteneri.

Pentru aceasta:

Cum redenumim o bd si un camp deja creat


November 8, 2009

a) Cum redenumim o BD (schimbarea numelui initial al unei baze de date create cu


CREATE DATABASE nume_BD)

Sa presupunem ca avem baza de date Categories din care selectam 2 campuri.

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.

Vom obtine acelasi output in cele 2 campuri CategoryID si CategoryName.

b) Cum redenumim campul unei tabele (procedura stocata sistem sp_rename)

Efect:

Inserarea unui query intr-o tabela copie


November 9, 2009

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

Realizam o cerere care calculeaza produsul a 2 coloane

Coloana Calcul =NormaL100KM*KM

Practic efectul este urmatorul:


Dorim sa copiem continutul coloanei Calcul intr-o tabela numita FoaieParcursMasina mai precis
in coloana CombustibilConsumat a acestei tabele. (care are valori NULL nu s-a facut insert into
in aceasta coloana).

Pentru aceasta vom realiza cererea (query-ul) :

fpm este un alias (identificator ) pt. tabela FoaieParcursMasina

ta este un alias (identificator) pt.tabela TipuriAutomobile

Functia COALESCE
November 9, 2009

Inlocuieste valorile coloanei CombustibilConsumat care sunt NULL (deci fara valoare practic)
cu valoarea 0.

Stergerea a 2 inregistrari specificate din totalul de 4


CLAUZA DELETE
November 10, 2009

Fie tabela Tipuri Automobile care contine 4 inregistrari:

Dorim sa stergem automat inregistrarile 2 si 3 a. i sa ramana in tabela doar 2 inregistrari prima si


ultima. Pt.aceasta folosim clauza DELETE astfel:

O alta varianta ar fi sa folosim si interogarea:

Efect:

2 tabele Cum adaugam o coloana intre 2 coloane


November 10, 2009

Sa presupunem ca avem 2 tabele numite Table1 si Table2 cu urmatoarea structura:


Continut tabela1 numita Table1:

Continut tabela2 numita Table2:

Dorim sa obtinem urmatorul output:

Pentru aceasta vom realiza interogarea:

SELECT Table1.Id, Table1.Name, Table2.Age, Table2.Sex

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

Fie tabela cu urmatoarele 2 campuri

id Pret
00394 45,69
00394 35
00394 35

00394 44,3

00395 46,63

00395 41
00395 41
00395 45,45

Recuperarea pretului minim per id (unde id e unic):

Pentru functiile maxim si medie aritmetica vom folosi functiile agregat MAX respectiv AVG
astfel:

Exemplu functia agregat COUNT pt.numararea inregistrarilor dintr-o coloana:


Innerjoin exemple (join-uri mssql)
November 10, 2009

In exemplul1 am realizat ultimul curs din ultima data.

Exemplul2: Listati utilizatorii ce au mai mult de 2 adrese:

Metoda1: cu INNERJOIN
Metoda2: folosind functia agregata COUNT, GROUP BY si clauza HAVING

Tipuri de date MsSql si tipuri bd mssql


November 10, 2009

In continuare vom descrie pe scurt tipurile de BD sistem aflate in Object Explorer ->Databases-
>System Databases ca in printscreen-ul de mai jos:

master BD ce controleaza BD ale fiecarui user in parte (conectat pe un anumit server),


configureaza variabilele mediului de lucru, erorile si mesajele de eroare sistem
Exista 2 tipuri de BD: a) System Databases cum sunt acestea

b) User Databases create de user (comanda CREATE DATABASE)

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)

tempdb temporary tables and other temporary storage needs

msdb- storage area for scheduling information and job history

Tipurile de date disponibile in MSSQL:

int

bigint

float

binary

bit -valoare booleana 0 sau 1

char(10)

datetime

timestamp

decimal(3,2) 3 zecimale ; 2 zecimale dupa virgula

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

Totul despre indecsi


November 10, 2009

Rolul indecsilor: (accelereaza regasirea datelor)

Accelereaza accesul la date

Obliga unicitatea inregistrarilor (doar la coloane UNIQUE este indicat sa cream


indecsi , in special la coloanele folosite in mod frecvent;) )

Dezavantaje indecsi:

Consuma spatiul discului .

Cand updatam o coloana/camp indexat , SQL Server updateaza indecsii asociati

Mentinerea indecsilor necesita timp si resurse. Nu create un index dk nu-l veti folosi frecvent nu-
si are rostul!!!!

Indecsii pe coloane ce nu-s UNIQUE (deci contin duplicate) nu-si au rostul!!!!!


Sp_helpindex procedura stocata sistem care este executata asupra unei tabele.

Indecsi doar la date de tipul UNIQUE.

Un index este creat intr-o tabela pt.a gasi datele mult mai rapid si eficient.

Utilizatorul nu poate vedea indecsii , ei sunt folositi pt. a accelera cautarile/query-urile.

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.

Deasemenea indecsi non-clustered au nevoie de clauza ORDER BY (pt.sortare) pe cand indecsii


clustered sunt implicit sortati (deci nu au nevoie de clauza ORDER BY).

CREATE INDEX creeaza un index creat pt.campuri PRIMARY KEY si UNIQUE


(constrangeri), dar se pot crea si pt.chei externe,chei foreign (o coloana contine niste valori intr-o
tabela care se regasesc intr-o alta tabela2 cu acelasi nume de coloana si aceleasi valori).

Pentru stergerea unui index exemplu complet:


Sau se poate folosi :

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.

DROP INDEX nu poate fi folosit asupra tabelelor sistem.

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.

Obtinerea informatiilor despre un index

Se va folosi procedura stocata sistem sp_helpindex.

Deci scopul folosirii indecsilor pt o anumita coloana.


Daca avem milioane de inregistrari si vrem sa cautam intr-o coloana care are milioane de valori
vom face coloana respectiva un index si apoi facem cautare folosind clauza WHERE iar timpul
necesar query-ului va fi redus deoarece coloana respectiva a fost facuta index.

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.)

Ce campuri se indexeaza F.F.IMP:

cheile primare

cheile straine (FOREIGN KEYS dintr-o tabela)

-cheile externe

coloane accesate intr-o ordine de sortare

coloane grupate impreuna in timpul agregarilor

Cand nu trebuie sa cream indecsi:

Referinta dintr-un query

Contine cateva valori UNIQUE. De exemplu un index al unei coloane cu 2 valori


(male si female), intoarce un procent mare de randuri.

Campurile de tip text,ntext sau image nu pot fi indexate NEVER INDEX!!!

Exista 2 tipuri de indecsi CLUSTERED SI NONCLUSTERED

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)

Verificati ca aveti spatiu de memorie necesar in BD cand create indecsi cluster

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

Exemplu de creare indecsi nonclustered:

OBTINEREA INFORMATIILOR despre INDEX

Procedura stocata sp_helpindex (din SQL Server Enterprise Manager) obtine informatia index-
ului: nume index,tip index, optiuni pt.o tabela specifica

Use NorthWind

EXEC sp_helpindex Customers

Obtinerea informatiilor despre o tabela sp_help tablename

USE NorthWind
EXEC sp_help Customers

OPTIUNEA FILLFACTOR

-este aplicata doar cand este creat un index sau reconstruit

OPTIUNEA PAD_INDEX

Specifica procentul de completare al paginilor index non-leaf-level.

EXEMPLU FILLFACTOR

USE NorthWind

CREATE INDEX OrderID_ind

ON Orders(OrderID)

WITH PAD_INDEX, FILLFACTOR = 70

Exemplul de mai jos creeaza OrderID_ind index la campul OrderID in tabela Orders.

USE NorthWind

CREATE INDEX OrderID_ind

ON Orders(OrderID)

WITH PAD_INDEX, FILLFACTOR = 70

Trebuie sa mentinem indecsii pt. a asigura performanta optimal.

OBTINEREA INFORMATIILOR DESPRE INDECSI

Pentru a afla informatii despre indecsi se folosesc urmatoarele proceduri stocate sistem din
mssql:

Totul despre VIEWS tabele virtuale


November 10, 2009

In SQL, un view este o tabela virtuala bazata pe un set de rezultate al unei query SQL.

View-urile sunt folosite pt. partitionarea datelor.

View-urile indexate sunt folosite pt. cresterea performantei interogarilor (query-urilor).

Pentru crearea unui view se va folosi comanda CREATE VIEW:

Sintaxa generala a unui view:

Exemplu creare a unui view pornind de la o tabela:

Pentru update-ul unui view se foloseste REPLACE VIEW:

Sintaxa generala:
Exemplu:

Stergerea unui view se face prin comanda DROP VIEW:

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

1) Nu poate contine clauza ORDER BY (decat daca includem cuv.rezervat TOP)

2) Nu contine cuv.rezervat INTO


3) Pt.a crea sau executa un query aferent unui view trebuie sa fim system admin, db_owner sau
db_ddladmin

4) CREATE VIEW nu poate include clauzele COMPUTE si COMPUTE BY

5) View-ul nu poate face referiri la tabele temporare

6) View-ul nu poate contine mai mult de 1024 coloane

ALTER A VIEW ( se adauga si coloana Extension la coloanele existente Firstname si


LastName):

Optiunile CASCADE si RESTRICT pt.clauza DROP VIEW (in cazul mai multor view-uri :
view partinte->view copil):

Clauza ALTER VIEW:


Operatorul de concatenare + in SQL Server, functia Convert
November 11, 2009

Fie tabela numita T_Stock cu urmatoarea structura:

Dorim sa concatenam inregistrarile primelor 3 coloane (CD_number, CD_name si Band_name).

Pt.aceasta executam query-ul:

Totul despre join-uri (join, left join, right join,inner


join,cross join)
November 12, 2009
Join simplu cand vrem o reuniune simpla a anumitor coloane din anumite tabele. (listarea
informatiilor din anumite tabele contine si functia agregat AVG pt.media aritmetica a valorilor
continute in coloana CombustibilConsumat):

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):

Structura generala a unui select Transact-SQL


November 12, 2009

Dupa having sum(coloana_agregata) urmeaza o conditie >10 , =0 etc.

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.

Procedura stocata cu afisare informatii


November 12, 2009

Afisare informatii query:

Pornind de la acest query avem procedura stocata:

Procedura stocata cu functia agregata AVG


November 12, 2009

Procedura stocata folosind agregare:

Clauza DROP COLUMN- stergerea unei coloane dintr-


o tabela
November 27, 2009

Exemplu:

Procedura stocata de inserare exemple


December 2, 2009

Exemplul1:

Exemplul 2:

Exemplul3:
Procedura stocata de stergere exemple
December 2, 2009

Exemplul1:

Unde se salveaza fisierul .mdf; cum cream fisierele .mdf


si .ldf
February 22, 2010

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

Restauram baza de date cu numele test_copie.mdf.

Exemplu de creare a unei bd (ce contine fisierele .mdf si .ldf):

Cum se sterge o baza de date


February 22, 2010

Sa presupunem ca dorim sa stergem baza de date Northwind automat din sql server.

Pentru aceasta urmam pasii:

Pasul1: Click dreapta pe Northwind


Pasul2: Se alege tasks si optiunea Detach

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:

Cum se importa o baza de date in sql server


February 22, 2010

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

Se urmeaza pasii din fisierul .doc ce are printscreen-urile atasate:


Analog se procedeaza si pt. importuri de date catre client!

http://www.mediafire.com/?zy3nkghmitm

Proceduri stocate notiuni generale


February 25, 2010

SQL Profiler -> Trace Stored Procedures

Procesarea procedurilor stocate sunt realizate de execution plan din SQL Server.

Procedurile stocate cresc rapiditatea interogarilor SQL

Sintaxa generala: CREATE PROC nume_proc_stocata

EXEC nume_procedura_stocata

In tempdb din System Databases sunt create procedurile stocate temporare.

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.

CREATE PROCEDURE nu poate include urmatoarele tranzactii SQL:

CREATE DEFAULT, CREATE PROCEDURE,CREATE RULE,CREATE TRIGGER,


CREATE VIEW!!!!!!

Dimensiunea maxima a unei procedure stocate este de maxim 128MB.

Pentru detalii despre procedurile stocate: (consultati procedurile stocate sistem):

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.

Sp_executesql alternativa la EXECUTE statement pt.a executa dynamic un string dintr-o


procedura stocata.

Executia unei proceduri stocate: (se foloseste EXEC)

EXEC nume_procedura stocata lista_de_valori_pt_parametri

Stergerea unei proceduri stocate (DROP PROCEDURE sau DROP PROC):

FOLOSIREA PARAMETRILOR IN PROCEDURI STOCATE:

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.

SQL Server suporta 2 tipuri de parametri : parametri de intrare si parametri de iesire.

Executia procedurilor stocate


1) Folosind parametri de intrare

a) Trecerea valorilor prin numele parametrilor

b) Trecerea valorilor prin pozitie

EXEC AddCustomer ALFKI,Alfreds,MariaAnders, Sales Representative, Obere Str.57,


Berlin,NULL,12209,Germany,030-0074321

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.

2) Folosind parametri de iesire


4) Recompilarea explicita a procedurilor stocate (RECOMPILE)

Se recompileaza atunci cand:

Procedura stocata intoarce seturi de rezultate variabile

Un nou index este adaugat unei tabele

O valoare a unui parametru este atipica

Se recompileaza folosind:

CREATE PROCEDURE [WITH RECOMPILE]

EXECUTE [WITH RECOMPILE]

Sp_recompile

Valorile parametrilor sunt trecute la o procedura stocata care intorc widely result sets.

SQL Server furnizeaza 3 metode de recompilare a unei procedure de stocare explicit:

Exemplul1: Se creeaza o procedura stocata numita OrderCount care este recompilata de fiecare
data cand este executata.

USE NorthWind

GO

CREATE PROC dbo.OrderCount

@CustomerID nchar(10)

WITH RECOMPILE

AS
SELECT count(*) FROM [Orders Qry]

WHERE CustomerID = @CustomerID

GO

Exemplul 2: Acest exemplu compileaza CustomerInfo stored procedure(procedura stocata) in


timpul in care ea este executata:

EXEC CustomerInfo WITH RECOMPILE

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:

EXEC sp_recompile Customers

UN INDEX e creat in memoria RAM!!!

O procedura stocata e creata in memoria CACHE!

Pentru a sterge toate procedurile stocate in memoria cache vom folosi:

DBCC FREEPROCCACHE

CUM SE GENEREAZA O PROCEDURA STOCATA (GENERATE SCRIPT) PT.O


TABELA dam click dreapta si alegem all task generate sql script(sau pe tabul stored
procedure). Sau Click pe STK click pe tabul Programmability si dam click pe tabul Stored
Procedures.
Ultimul printscreen arata cum se genereaza un script pt. o tabela.

Procedura stocata cu functia sistem @@ROWCOUNT:

Exemplul de mai jos creaza o procedura stocata GetOrders care regaseste informatiile din
tabelele Orders si Customers interogand view-ul cu numele Orders Qry.

Statement-ul RETURN in procedura stocata GetOrders intoarce nr.total de randuri din


clauza SELECT catre o alta procedura stocata. Deasemenea putem avea nested stored
procedures la procedura stocata GetOrders(cu o alta procedura stocata).
Sp_addmessage :

Procedura stocata ce permite dezvoltatorilor sunt create mesaje custom de eroare.

SQL Server trateaza atat sistemul cat si custom errormessages in acelasi mod.

Despre functia sistem @@ROWCOUNT

http://msdn.microsoft.com/en-us/library/ms187316.aspx

Despre instante Sql Server si Memory Pool


February 25, 2010

Instance SQL Server:

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 Convert si functii data calendaristica si timp


February 26, 2010
Functia DATEFORMAT

(formateaza datele pt.durata unei conexiuni):

Functia GETDATE()

(afiseaza data si ora curenta):


Declararea si definirea variabilelor clauza DECLARE,
clauza CAST conversie variabile
February 26, 2010

Exemplul1: Declararea si definirea variabilelor in mssql:

a) Variabila sir de caractere

b) Variabila intreaga (int)

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)

Exemplul2: Declarare si definire variabile exemplu while in mssql:

Exemplul3: Declararea si definirea variabilelor in mssql:

Se va afisa : Mihai Sprinceana

Functiile LTRIM si RTRIM


February 26, 2010
Functia LTRIM sterge spatiile din stanga unui sir de caractere definit ca variabila

Functia RTRIM sterge spatiile din dreapta unui sir de caractere definit ca variabila

Exemplu LTRIM:

Exemplu RTRIM:

Lista operatorilor din mssql, operatorul IN


February 26, 2010

Operatori relationali:

= , > , < , >= , <=, <> (diferit)

Operatorii logici AND,OR si NOT conecteaza conditiile de cautare in clauzele WHERE.

Operatori de grouping : ()

Operatori aritmetici: *, %,/,-,+

Operator de concetanare string-uri: +

Operatorul IN (tutorial complet):


http://msdn.microsoft.com/en-us/library/ms177682.aspx

Crearea unei histograme CREATE STATISTICS


February 26, 2010

Pentru vizualizare histograma si stergere histograma:

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:

Modalitati de executie a statement-urilor SQL


February 27, 2010

a) Constructie dinamica a instructiunilor (statement-urilor) SQL


b)

a) Folosing BATCHES (CREATE PROCEDURE creaza o procedura stocata, CREATE


VIEW creeaza o tabela virtuala, CREATE TRIGGER, CREATE RULE, CREATE
DEFAULT)

Se foloseste cuvantul rezervat GO la sfarsit pt.a semnala sfarsitul unui BATCH

Intr-un batch pot aparea mai multe instructiuni (statement-uri).

Exemple:

CREATE DATABASE

CREATE TABLE

GO

CREATE VIEW1

GO

CREATE VIEW2

Ambele sunt corecte!

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)

Pot fi executate in SQL Query Analyzer sau Utilitarul osql.

d) Folosind Tranzactii

Tranzactiile ca si batch-urile sunt grupe de statement-uri care sunt submitted as a set.


Prefatam o tranzatie cu BEGIN TRANSACTION si o terminam cu COMMIT TRANSACTION
sau ROLLBACK TRANSACTION.

La COMMIT TRANSACTION, SQL SERVER face schimbarile pt.tranzactia respective


permanente.

La ROLLBACK TRANSACTION , SQL SERVER intoarce orice rand afectat de tranzactie la


stari de pretranzactie.

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

SET balance = (amount-100)

WHERE custid = 78910

BEGIN

RAISERROR(Transaction not completed due to savings account problem.,16,-1)

ROLLBACK TRANSACTION

END

UPDATE checking

SET balance = (amount+100)

WHERE custid = 78910

IF @@ERROR <> 0

BEGIN

RAISERROR(Transaction not completed due to checking amount problem.,16,-1)

ROLLBACK TRANSACTION

END
COMMIT TRANSACTION

Despre tipurile de date mssql sp_addtype si sp_droptype


February 27, 2010

CREAREA SI STERGEREA UNUI TIP DE DATA (EXEC sp_addtype, EXEC


sp_droptype)

Exemple:

EXEC sp_addtype city, nvarchar(15),NULL

EXEC sp_addtype region, nvarchar(15),NULL

EXEC sp_addtype country, nvarchar(15),NULL

EXEC sp_droptype city

Char e un camp de lungime fixa, varchar(30) e un camp de lungime specificata

Pentru precizie se foloseste tipul de date decimal (Numere cu virgule).

Pt.spatiu >8000 bytes folositi text sau image

Money data type used for currency

OBS!!! Nu se pun chei primare campuri de tip REAL sau FLOAT!!!!!!!!!! Pt.ca aceste valori nu
sunt precise.

Text tip de variabila ce poate contine 2.147.483..647 caractere.

Ntext contine 2 30 -1 caractere.

Image contine de la 0 la 2.147.483.647 bytes of binary data.

ALTER TABLE Tabela

DROP COLUMN idClient

Proprietatea Identity!!! se foloseste la tipuri de date integer,numeric,decimal

IdClient sa presupunem ca vrem sa o numeroteze automat din 1 in 1.

Setam Proprietatea Identity a unei coloane la 1 pt.campul IdClient.


Va numerota IdClient incepand cu 1.

Pt.a accesa index click pe tabela ->view design si al patrulea buton manage index and tables.

Exemplu:

CREATE TABLE Class

(StudentId int IDENTITY(100,5) (seed,increment porneste de la 100 si creste din 5 in 5) NOT


NULL

Name varchar(16)

uniqueidentifier (stocheaza un nr.unic de identificare pt.o coloana) si definimim un tabel cu


constrangerea DEFAULT +specificare newid function (). Si la INSERT statement poate fi
folosita.

/*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.

sp_addtype si sp_droptype sunt proceduri stocate sistem din mssql.

CREATE RULE SI CREATE DEFAULT mssql


February 28, 2010

FOLOSIRE REGULI (RULES ) SI DEFAULTS:

Sunt definite o singura data

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.

Dezavantaj: not ANSI compliant

CREAREA UNUI DEFAULT

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

Sintaxa generala: CREATE DEFAULT default

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.

CREAREA UNEI REGULI (Rule)

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.

De retinut aceste aspecte despre reguli:

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

Sintaxa generala: CREATE RULE rule

AS condition_expression

BINDING A RULE (impachetarea unei reguli intr-o coloana)

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.

Obs. f.imp : CREATE RULE SI CREATE DEFAULT SE FOLOSESC INAINTE DE INSERT


INTO (inainte de a insera date intr-o tabela asociata unei baze de date!!!)
EXEMPLE FOLOSIRE CLAUZELE CREATE DEFAULT SI CREATE RULE

Exemplul1: (primele 3 printscreen-uri)

Exemplul2:
Rezultatul inserarii:

Pentru stergerea efectiva a tabelei se aplica comanda DROP TABLE:

Metoda 2 (pt.exemplul 2 metoda rapida):

Implementarea functiilor definite de utilizator


(CREATE FUNCTION)
March 1, 2010
User defined functions pot lua zero sau mai multi parametri si intorc fie o valoare scalara sau
o tabela . Parametri de intrare pot fi orice tip de data cu exceptia timestamp, cursor sau tabela.
Functiile definite de utilizator nu suporta parametri de iesire! Functii scalare: -opereaza pe
o singura valoare si intorc o singura valoare Un exemplu sugestiv poate fi gasit la aceasta
adresa: http://msdn.microsoft.com/en-us/library/ms186755.aspx Creating a User-Defined
Function (CREATE FUNCTION) se creeaza similar ca si VIEW sau o procedura stocata.
Sintaxa generala: CREATE FUNCTION nume_fctie (parametri) Exemplul1:

MODIFICARE FUNCTIE UTILIZATOR SI


STERGERE (ALTER FUNCTION SI DROP FUNCTION): ALTER FUNCTION
dbo.fn_NewRegion <New function content> DROP FUNCTION dbo.fn_NewRegion
Exemplul2: Functie scalara definita de utilizator

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

CREATE FUNCTION fn_CustomerNamesInRegion

(@RegionParameter nvarchar(30))

RETURNS TABLE

AS

RETURN

(SELECT CustomerID, CompanyName

FROM Northwind.dbo.Customers

WHERE Region = @RegionParameter

Apelul functiei:

SELECT * FROM fn_CustomerNamesInRegion(NWA)

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.

ThePriceWithTax column should contain the UnitPrice multiplied by the TaxRate.

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

FROM Shippers AS S JOIN Orders AS O

ON S.ShipperID = O.ShipVia

WHERE O.Freight > @FreightAmt

Urmatorul select selecteaza randurile din functia LargeFreight care au vanzarile in dolari
mai mari de 600$:

SELECT *FROM fn_LargeFreight(600)

Crearea unei tranzactii in mssql


March 1, 2010
EXEMPLU TRANZACTIE (CONTINE MAI MULTE STATEMENT-URI SQL):

USE Northwind

GO

CREATE PROCEDURE dbo.AddSupplierProduct

@CompanyName nvarchar(40) = NULL

@ContactName nvarchar(40) = NULL

@ContactTitle nvarchar(40) = NULL

@Address nvarchar(60) = NULL

@City nvarchar(15) = NULL

@Region nvarchar(40) = NULL

@PostalCode nvarchar(10) = NULL

@Country nvarchar(15) = NULL

@Phone nvarchar(24) = NULL

@Fax nvarchar(24) = NULL

@HomePage ntext = NULL

@ProductName nvarchar(40) = NULL

@CategoryID int = NULL

@QuantityPerUnit nvarchar(20) = NULL

@UnitPrice money = NULL

@UnitsInStock smallint = NULL

@UnitsOnOrder smallint = NULL

@ReorderLevel smallint = NULL

@Discontinued bit = NULL


n In values se introduce valorile variabilelor

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

DECLARE @InsertSupplierID int

SELECT @InsertSupplierID=@@identity

INSERT Products(ProductName,SupplierId,CategoryID,QuantityPerUnit,Discontinued)

VALUES

(@ProductName

@InsertSupplierID

@CategoryID,

@QuantityPerUnit

@Discontinued

IF @@error <>0

BEGIN

ROLLBACK TRAN
RETURN

END

COMMIT TRANSACTION marcheaza sfarsitul unei tranzactii

ROLLBACK TRANSACTION se foloseste in cazul in care apare o eroare in cadrul


tranzactiei

PRINT pur si simplu afiseaza un mesaj (fara a afisa eroarea cum face @@error)

Tabelele sistem se afla in master (sysmessages, sysindexes)

EXEMPLU RAISEERROR CU AFISARE MESAJ DE EROARE:

RAISEERROR(50010,16,1) WITH LOG

Exemplu complet handling errormessages:

EXEC sp_addmessage 50010,16,CustomerID not found.,@replace=replace

USE Northwind

GO

Updates a customer phone number,Error checking ensure that a valid customer


identification number is supplied

CREATE PROCEDURE UpdateCustomerPhone

@CustomerID nchar(5) = NULL

@Phone nvarchar(24) = NULL

AS

IF @CustomerID IS NULL

BEGIN

PRINT You must supply a valid CustomerID

RETURN

END
/*Ensure a valid CustomerID is supplied*/

IF NOT EXISTS

(SELECT * FROM Customers WHERE CustomerID= @CustomerID)

BEGIN

RAISERROR(50010,16,1) Customer not found

RETURN

END

BEGIN TRANSACTION

UPDATE Customers

SET Phone=@Phone

WHERE CustomerID = @CustomerID

/*Display message that the phone number for CompanyName has been updated

*/

SELECT The phone number for +@CustomerID+has been updated to+@Phone

COMMIT TRANSACTION marcheaza sfarsitul tranzactiei

GO

Operatorul IN rol
March 1, 2010

Rol: Inlocuieste o inregistrare din mai multe tabele.

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

Toate functiile pt.siruri de caractere


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

Rol: Converteste codul ASCII in caracterul corespondent

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)

e) Functiile DIFFERENCE SI SOUNDEX

f) Functiile LEFT si RIGHT

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

h) Functiile LOWERCASE si UPPERCASE

Rol: Transforma un sir de caractere in litere mici respectiv litere mari

i) Functiile RTRIM si LTRIM


Pentru eliminarea tuturor spatiilor (si de la stanga si de la dreapta unui sir de caractere )
se realizeaza o functie utilizator (CREATE FUNCTION):

j) Functia NCHAR

Exemplul2: (cele 3 printscreen-uri)


k) Functia PATINDEX gaseste pozitia in care incepe o anumita inregistrare dintr-o
anumita tabela

Exemplul1:

l) Functia REPLACE
m) Functiile REPLICATE si REVERSE

Efectul executiei:

n) Functia SPACE

o) Functia STR
p) Functia CONVERT

q) Functia STUFF

r) Functiile PRINT si UNICODE (printscreen-urile de mai jos)


Toate functiile matematice mssql
March 2, 2010

1) Functia ABS

calculeaza modulul unui numar

2) Functii trigonometrice

a) Functia ACOS: (exemple)


b) Functia ASIN si ATAN

c) ATN2

d) COS si COT
e) TAN

3) Functiile DEGREES si RADIANS


Alte exemple cu RADIANS (pt.conversie din grade in radiani):
4) Functiile RAND, ROUND si SIGN

RAND intoarce un numar aleator intre 0 si 1

ROUND rotunjeste un numar


AS este un cuvant rezervat din mssql si da numele unei coloane (se mai numeste si alias-ul
coloanei= numele coloanei)

SIGN intoarce -1 daca e nr.negativ, 0 daca =0 si 1 daca e nr.pozitiv (functia semn)

5) Functiile SQUARE, POWER si SQRT


6) Functiile LOG si EXP
7) Functiile FLOOR si CEILING

Functia Pi si produsul a 2numere in mssql


March 2, 2010

PI -intoarce nr.pi
SELECT PI()

DECLARE @nr1 int;


DECLARE @nr2 int;
DECLARE @nr3 int; result to be displayed

SET @nr1 = 2;
SET @nr2 = 3;

SET @nr3 = @nr1*@nr2; obs. se face set si la variabilele rezultat atentie!!!

SELECT Rezultat: +@nr1*@nr2


rezultatul este de tip varchar deci trebuie neaparat facut la variabila nr3 conversia din int in
varchar !!! (atentie conversie la afisare rezultate in mssql!!!)
PRINT Rezultatul este + CAST(@nr3 AS VARCHAR(10));

GO

Functii pt.text si imagini


March 5, 2010

1) Functia PATINDEX
Va fi intors rezultatul 64 .

Exemplul2:

Exemple pattern matching in search conditions:

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

Despre predicatul FREETEXT:

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

2) Functiile TEXTPTR si TEXTVALID


Tutoriale wildcards
March 5, 2010

[] characters to match

http://msdn.microsoft.com/en-us/library/ms179884.aspx

^ -characters not to match

http://msdn.microsoft.com/en-us/library/ms188342.aspx

_ match one character

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 )

Tutoriale totul despre operatori si expresii in mssql


March 5, 2010

Totul despre operatori mssql:

http://msdn.microsoft.com/en-us/library/ms174986.aspx
Totul despre expresii mssql:

http://msdn.microsoft.com/en-us/library/ms190286.aspx

Toate functiile de configurare (functii sistem de configurare)


March 5, 2010

1) Functia sistem @@CONNECTIONS

Raport detaliat cu conexiunile efectuate la server procedura stocata sistem sp_monitor:

2) Functia sistem @@DATEFIRST (T-SQL)

specifica prima zi a saptamanii functia DATEFIRST

numerotarea incepe cu 1 de la ziua de luni si se termina la ziua de duminica cu 7


Exemplul2:

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).

3) Functia sistem @@DBTS (T-SQL)

exec nume_procedura_stocata_sistem (exec nume_procedura_stocata)

EXEC sp_help intoarce toate tabelele, view-urile create etc.


4) Functia sistem @@LANGUAGE (T-SQL) si @@LANGID (T-SQL)

5) Functia sistem @@LOCK_TIMEOUT (T-SQL)

6) Functia sistem @@MAX_CONNECTIONS (T-SQL)

7) Functia sistem @@MAX_PRECISION (T-SQL)


8 ) Functia sistem @@OPTIONS (T-SQL)

9) Functia sistem @@NESTLEVEL (T-SQL)


Exemplul1:

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

10) Functia sistem @@REMSERVER (T-SQL)

11) Functia sistem @@SPID (T-SQL)

12) Functia sistem @@SERVERNAME (T-SQL)


13) Functia sistem @@SERVICENAME (T-SQL)

14) Functia sistem @@VERSION (T-SQL)

Totul despre cursori si toate functiile cursor


March 5, 2010

Tutorial 5: Cursor Functions link general: http://doc.ddart.net/mssql/sql70/fa-fz_18.htm

These scalar functions return information about cursors. @@ -functie scalara

@@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

Tutorial : Functii MetaData

1) Functia COL_LENGTH (T-SQL) -lungimea unei coloane

2) Functia COL_NAME (T-SQL) numele unei coloane

3) Functia COLUMNPROPERTY (T-SQL)


Tabelele cu lista proprietatilor si valorile posibile intoarse:

Exemplu ce foloseste functia COLUMNPROPERTY:


4) Functia DATABASEPROPERTY (T-SQL)

Tabelul cu numele proprietatilor:


Exemplu DATABASEPROPERTY:
5) Functia DB_ID (T-SQL)

6) Functia DB_NAME (T-SQL)


7) Functia FILE_ID (T-SQL)

8)Functia FILE_NAME (T-SQL)

9)FILEGROUP_ID (T-SQL)
10) Functia FILEGROUP_NAME (T-SQL)

11) Functia FILEGROUPPROPERTY (T-SQL)

Tabelul cu numele proprietatilor:

12) Functia FILEPROPERTY (T-SQL)


Tabelul cu numele proprietatilor:

13) Functia FULLTEXTCATALOGPROPERTY (T-SQL)


intoarce informatii despre proprietatiile fulltext din cataloage

Tutorial:

http://msdn.microsoft.com/en-us/library/ms190370.aspx

Vezi si:

CREATE FULLTEXT INDEX (Transact-SQL):

http://msdn.microsoft.com/en-us/library/ms187317.aspx

ALTER FULLTEXT INDEX (Transact-SQL):

http://msdn.microsoft.com/en-us/library/ms188359.aspx

CREATE FULLTEXT CATALOG (Transact-SQL) :

http://msdn.microsoft.com/en-us/library/ms189520.aspx

Totul despre fulltext si proceduri stocate fulltext aici:

http://msdn.microsoft.com/en-us/library/ms189520.aspx

14) Functia FULLTEXTSERVICEPROPERTY (T-SQL)


intoarce informatii despre proprietatiile fulltext service level pt cataloage service-level
properties.

Tutorial:

http://msdn.microsoft.com/en-us/library/ms188418.aspx

15) Functia INDEX_COL (T-SQL)

16) Functia INDEXPROPERTY (T-SQL)


17) Functia OBJECT_ID (T-SQL)
18) Functia OBJECT_NAME (T-SQL)

19) Functia OBJECTPROPERTY (T-SQL)


intoarce informatii despre obiectele curente din bd

Tabelul cu numele proprietatilor functiei OBJECTPROPERTY:

http://msdn.microsoft.com/en-us/library/ms176105.aspx

20) Functia sistem @@PROCID (T-SQL)


21) Functia TYPEPROPERTY (T-SQL)
Returns information about a data type.

Informatii SET NO COUNT ON/OFF

http://msdn.microsoft.com/en-us/library/ms189837.aspx

Functii de securitate si functii sistem (functii de


sistem @@nume_fctie)
March 5, 2010

Lista completa a functiilor de securitate mssql

A) Functiile de securitate mssql

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)

6) Functia USER (T-SQL)


7) Functia USER_NAME (T-SQL)
B) Functiile sistem mssql

1) Functia APP_NAME (T-SQL)

2) Functia CURRENT_USER (T-SQL)


3) Functia sistem @@ERROR (T-SQL)

Exemplul1:

Exemplul2:
Exemplul5:

Exemplul6:

6) Functia FORMATMESSAGE (T-SQL)


7) Functia GETANSINULL (T-SQL)

8 ) Functia HOST_ID (T-SQL)

9) Functia HOST_NAME (T-SQL)


10) Functia IDENT_INCR (T-SQL)

11) Functia IDENT_CURRENT (T-SQL)


12) Functia IDENT_SEED (T-SQL)
13) Functia sistem @@IDENTITY (T-SQL) si IDENTITY (Function) (T-SQL)
@@IDENTITY:

Obs. Proprietatea IDENTITY e folosita in clauzele CREATE TABLE si ALTER TABLE

14) Functia ISNULL (T-SQL)


15) Functia ISNUMERIC (T-SQL)

16) Functia NEWID (T-SQL)


Exemplul2:
17) NULLIF (T-SQL)

Exemplul2:
18) Functia PARSENAME (T-SQL)

Detalii functia PARSENAME aici:

http://msdn.microsoft.com/en-us/library/ms188006.aspx

19) Functia PERMISSIONS (T-SQL)


Exemplul2:

Exemplul3:
20) Functia sistem @@ROWCOUNT (T-SQL)

21) Functia SESSION_USER (T-SQL)

Exemplul2:

Exemplul3:
22) Functia STATS_DATE (T-SQL)

23) SYSTEM_USER (T-SQL)

Exemplul2:
Exemplul3:

24) Functia sistem @@TRANCOUNT (T-SQL)

Functii statistice (functii de sistem statistice ) in mssql


March 5, 2010

In continuare vom prezenta toate functiile statistice sistem din sql server.
Acestea nu se refera la statistica matematica , ci intorc informatii statistice despre sistem

1) Functia sistem @@CPU_BUSY (T-SQL)

2) Functia sistem @@IDLE (T-SQL)

3) Functia sistem @@IO_BUSY (T-SQL)

4) Functiile sistem @@PACK_RECEIVED si @@PACK_SENT


5) Functia sistem @@TIMETICKS (T-SQL)

6) Functiile sistem @@TOTAL_ERRORS (T-SQL), @@TOTAL_READ (T-SQL)


si @@TOTAL_WRITE (T-SQL)
Lista tutoror procedurilor stocate sistem mssql
March 5, 2010

Toate procedurile stocate:

http://msdn.microsoft.com/en-us/library/ms187961.aspx

1) Procedura stocata sistem sp_configure

2) Procedura stocata sistem sp_helplanguage


3) Procedura stocata sp_help (cu ce tabele, views s-au creat pana acum)

4) Procedura stocata sistem sp_who

5) Procedura stocata sistem sp_monitor

Rol: Pt.activitatea cpu-ului se executa procedura stocata sistem sp_monitor


6)Procedurile stocate sistem sp_addserver si sp_dropserver

7) Procedurile stocate sistem sp_ActiveDirectory_Obj si sp_ActiveDirectory_SCP

Crearea unui login in mssql (clauza CREATE LOGIN).


Clauza CREATE CREDENTIAL
March 8, 2010

Pasul1: Click pe tabul Security din Object Explorer


Pasul2: Click pe tabul Logins (se observa ca am creat deja un login mihaispr ,iar sa este
login-ul implicit pt.system administrator)

Pasul3: Click dreapta pe Logins si alegem New Login

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):

Se poate crea si din cod:

Exemplul1:

Exemplul2:

Exemplul3:

Exemplul4:
Crearea unui user (clauza CREATE USER):

Exemplul1:

Exemplul2:

ALTER USER SI DROP USER:


ALTER LOGIN

DROP LOGIN:

Clauza CREATE CREDENTIAL:

A credential is a record that contains the authentication information that is required to


connect to a resource outside SQL Server. Most credentials include a Windows user and
password.

http://msdn.microsoft.com/en-us/library/ms189522.aspx

Exemplu create credential (in security credentials):


Acordare permisiuni si retragere permisiuni alt user
(clauzele GRANT SI DENY)
March 9, 2010

1) GRANT Database Principal Permissions (Transact-SQL)

Exemplul1:

Exemplul2 (Clauza GRANT pe Views-uri):


http://msdn.microsoft.com/en-us/library/ms173848.aspx

2) GRANT Assembly Permissions (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms189479.aspx

3) GRANT Asymmetric Key Permissions (Transact-SQL)


http://msdn.microsoft.com/en-us/library/ms187991.aspx

4) GRANT Certificate Permissions (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms186278.aspx

5) GRANT Service Broker Permissions (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms188798.aspx

6) GRANT Database Permissions (Transact-SQL)

7) GRANT Endpoint Permissions (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms187811.aspx

8 ) GRANT Full-Text Permissions (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms190502.aspx

9) GRANT Object Permissions (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms188371.aspx

10) GRANT Server Principal Permissions (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms178640.aspx

11) GRANT Schema Permissions (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms187940.aspx
12) GRANT Server Permissions (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms187940.aspx

13) GRANT Symmetric Key Permissions (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms179887.aspx

14) GRANT System Object Permissions (Transact-SQL) (Granting SELECT permission


on a view)

http://msdn.microsoft.com/en-us/library/ms187797.aspx

15) GRANT Type Permissions (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms174346.aspx

16)GRANT XML Schema Collection Permissions (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms179867.aspx

Clauza DENY

1) DENY Database Principal Permissions (Transact-SQL)

2) DENY Assembly Permissions (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms188402.aspx

3) DENY Asymmetric Key Permissions (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms189473.aspx
4) DENY Certificate Permissions (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms179876.aspx

5) DENY Service Broker Permissions (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms186291.aspx

6) DENY Database Permissions (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms177518.aspx

7) DENY Endpoint Permissions (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms177524.aspx

8) DENY Full-Text Permissions (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms189502.aspx

9) DENY Object Permissions (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms173724.aspx

10) DENY Server Principal Permissions (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms186710.aspx

11) DENY Schema Permissions (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms176128.aspx

12) DENY Server Permissions (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms182763.aspx

13) DENY Symmetric Key Permissions (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms178591.aspx

14) DENY System Object Permissions (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms178634.aspx

15) DENY Type Permissions (Transact-SQL)


http://msdn.microsoft.com/en-us/library/ms180063.aspx

16) DENY XML Schema Collection Permissions (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms174419.aspx

Clauza REVOKE (Transact-SQL)Removes a previously granted or denied permission.

http://msdn.microsoft.com/en-us/library/ms187728.aspx

Clauza FETCH:

Retrieves a specific row from a Transact-SQL server cursor.

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

Totul despre clauza SET in mssql


March 9, 2010

In constructie!

http://msdn.microsoft.com/en-us/library/ms190356.aspx

Toate instr. create in t-sql tutoriale


March 12, 2010

1) CREATE AGGREGATE (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms182741.aspx

2) CREATE APPLICATION ROLE (Transact-SQL)


http://msdn.microsoft.com/en-us/library/ms181491.aspx

3) CREATE ASSEMBLY (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms189524.aspx

4) CREATE ASYMMETRIC KEY (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms174430.aspx

5) CREATE SYMMETRIC KEY (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms188357.aspx

6) CREATE BROKER PRIORITY (Transact-SQL)

http://msdn.microsoft.com/en-us/library/bb934170.aspx

7) CREATE CERTIFICATE (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms187798.aspx

8) CREATE CONTRACT (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms178528.aspx

9) CREATE CREDENTIAL (Transact-SQL)

A credential is a record that contains the authentication information that is required to


connect to a resource outside SQL Server. Most credentials include a Windows user and
password.

http://msdn.microsoft.com/en-us/library/ms189522.aspx

10) CREATE CRYPTOGRAPHIC PROVIDER (Transact-SQL)

http://msdn.microsoft.com/en-us/library/bb677184.aspx

11) CREATE DATABASE (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms176061.aspx

12) CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)

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

14) CREATE DEFAULT (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms173565.aspx

15) CREATE ENDPOINT (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms181591.aspx

16) CREATE EVENT NOTIFICATION (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms189453.aspx

17) CREATE EVENT SESSION (Transact-SQL)

http://msdn.microsoft.com/en-us/library/bb677289.aspx

18) CREATE FULLTEXT CATALOG (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms189520.aspx

19) CREATE FULLTEXT INDEX (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms187317.aspx

20) CREATE FULLTEXT STOPLIST (Transact-SQL)

http://msdn.microsoft.com/en-us/library/cc280405.aspx

21) CREATE FUNCTION (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms186755.aspx

22) CREATE MASTER KEY (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms174382.aspx

23) CREATE MESSAGE TYPE (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms187744.aspx

24) CREATE PARTITION FUNCTION (Transact-SQL)


http://msdn.microsoft.com/en-us/library/ms187802.aspx

25) CREATE PARTITION SCHEME (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms179854.aspx

26) CREATE QUEUE (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms190495.aspx

27) CREATE REMOTE SERVICE BINDING (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms178024.aspx

28) CREATE RESOURCE POOL (Transact-SQL)

http://msdn.microsoft.com/en-us/library/bb895329.aspx

29) CREATE ROLE (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms187936.aspx

30) CREATE ROUTE (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms186742.aspx

31) CREATE SYNONYM (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms177544.aspx

32) CREATE TRIGGER (Transact-SQL)

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.

Operatorii ANY si ALL, exemplu if in mssql si


exemplu subcerere
March 15, 2010

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).

Ex1: CREATE DATABASE si CREATE TABLE

a)

b)
c)

Ex2: CREATE DATABASE si CREATE TABLE cu interogari:

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:

View-ul va contine: (si va respecta conditia din clauza WHERE):

Ex4: Schemas in mssql


Dupa cum am vazut mai sus o tabela e constituita din linii si coloane de date destinate unui
anumit scop. Practic o baza de date cuprinde totalitatea datelor dintr-un anumit domeniu ce sunt
destinate unui anumit scop.

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).

Clauza CREATE SCHEMA: (exemplu)


Un exemplu de database schema tipic este NorthWind sau AdventureWorks (ce cuprinde mai
multe tabele). Sunt 2 baze template ale mssql asa cum este si pubs.

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).

Ex5: Domenii in mssql (clauza CREATE DOMAIN):

Pt.modificarea domeniului asociat unei coloane se foloseste clauza ALTER DOMAIN.

SQL Structure Query Language este un limbaj non-procedural.

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

Blob Data Type

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).

Este util si pt.stocarea imaginilor in mssql.


Putem asigna valori la un camp blob folosind constante binare.
Exemple:

0h202020

0h6ABCDEF

0h (empty binary literal)

Binary literals are limited to 255 encoded bytes.

Tutorial complet aici despre BLOB:

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

Tutorial tipuri de date mssql:

http://msdn.microsoft.com/en-us/library/ms177603.aspx

(data and field types)


=============================================
Domeniile de reprezentare pt.tipurile de date in mssql
March 15, 2010

NUMERIC (precision, scale)


DECIMAL (precision, scale) or DEC (precision, scale)
REAL
DOUBLE PRECISION
FLOAT (precision)

NUMERIC: domeniu: -9999.999 to 9999.9999

DECIMAL/DEC accepta valori >=9999.99

DOUBLE PRECISION: domeniu:1.7E-308 to 1.7E+308.

FLOAT, REAL
Tipurile variabile pt.siruri de caractere:

Tipul de date TEXT: (mssql sau long in oracle)

Tipul de date image:

Functii pt.data si timp:

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:

In mssql pot exista:

a) constante numerice: 58, -47, 327.29, +47.89, -785.256

b) constante string: test1,test2


c) constante data si timp: 27 Apr 2000, 4-27-2000, 4.27.2000, 2000 Apr 27,
2000.4.27, 5:15:00 pm, 17:23:45, 4-27-2000 5:15:23.

d) constante simbolice:

SQL-89:

USER, SESSION_USER, SYSTEM_USER, CURRENT_DATE, CURRENT_TIME,


CURRENT_TIMESTAMP

MSSQL:

USER, CURRENT_USER, SESSION_USER, SYSTEM_USER,


CURRENT_TIMESTAMP si APP_NAME

Valoare NULL inseamna ca valoare nu este cunoscuta, nu este specificata (adica este o
inregistrare goala intr-o anumita coloana)

Functia ISNULL:

Fie tabela:

Vedem toate inregistrarile tabelei de mai sus prin interogarea:


ISNULL(expression,value) inlocuire valori NULL cu o valoare specificata (in cazul de
fata un string)

Exemplul de mai jos inlocuieste valoarea NULL (adica fara valoare) din coloana quota cu In
Training:

Efect:

Un alt exemplu de interogare cu ISNULL:

Cap2. DDL , creare tabele si alte obiecte pt.bd


March 16, 2010

Sesiune fiecare logare a unui utilizator in serverul bd porneste o noua sesiune

Ex1: Creare tabele temporare (locale si globale)


Ex2: Constrangerea DEFAULT:

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

d) Crearea si stergerea unui DEFAULT, procedura stocata sistem sp_unbindefault

http://msdn.microsoft.com/en-us/library/ms188913.aspx

Ex3: ALTER TABLE si ALTER COLUMN


Adaugarea unei coloane automat la tabela existenta:

Stergerea automata a unor coloane specificate din tabela deja creata:

Schimbarea cheilor primare si cheilor straine:

Cheie straina (FOREIGN KEY):


Exemple creare primary key (asignare pk):

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):

Cap3.DML Manipularea datelor din tabelele asociate bd


March 16, 2010
1) Clauza INSERT

a) Inserarea de inregistrari intr-un view

b) Clauza INSERT INTO pt.inserarea unor inregistrari dintr-o tabela in alta


2) Clauza UPDATE

Schimbarea pretului de vanzare pt.un anumit produs:

Exemple simple update:

Schimbarea valorilor in mai multe randuri dintr-o data:


Schimbarea valorilor cu update bazate pe o valoare calculata:

Schimbarea valorilor dintr-o tabela bazata pe valorile din alta tabela:


Schimbarea valorilor dintr-un view:

3) Clauza DELETE
4) Clauza TRUNCATE

Sterge toate inregistrarile dintr-o tabela pastrand structura campurilor din tabela!!!

Cap4. Interogari, expresii si functii agregat


March 16, 2010

1) Clauza SELECT
CROSS JOIN pt.2 tabele in mssql:
Ex2: Clauza SELECT

Ex3: Afisare coloane si valori calculate (clauza select):


Ex4: Selectarea randurilor bazate pe valoarea coloanelor

Ex5: Clauza SELECT si WHERE pt.o valoare calculata

Ex6: Selectare coloane, sau coloana calculata folosind

predicate si operatori:

Ex7: Folosirea operatorilor OR,AND si NOT intr-o clauza

WHERE:
Ex8: Clauza ORDER BY in clauza SELECT:

Ex9: Operatori AND,OR, NOT (operatori logici) si operatori

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:

Ex11: Clauza DELETE cu op.logici si relationali:

Ex12: Functii agregat:


Ex13: Functiile COALESCE( e similara cu functia ISNULL), NULLIF

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:

Ex19: Functia agregata AVG:


Cap5. Modelul ANSI/ISO pt.tranzactii
March 18, 2010

O tranzactie: este o secventa de instructiuni sql pe care sgbd-ul le vede ca o singura unitate de
lucru.

Bd ramane neschimbata (ca si cum nici o tranzactie nu ar fi fost executata).

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.

O tranzactie ANSI/ISo incepe automat cu executia unei instructiuni sql

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).

Intelegerea folosirii modelului pt.tranzactii si clauzele COMMIT si ROLLBACK :

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):

(practic ideea ar fi ca dupa orice modificare in bd se salveza tranzactia si ea va afecta


comportamentul fisierului .ldf din baza de date).

Practic o tranzactie este o succesiune de operatii/ instructiuni sql. La fiecare moment al


efectuarii cerintei se salveaza tranzactia, aceasta poate fi modificata dupa save transaction
si re-salvata din nou cu 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)

Clauzele care folosesc DCL:

SELECT,INSERT,UPDATE,DELETE.,EXEC. (Execute.),DRI. (Declarative referential


integrity.) (lasa un utilizator sa adauge o constrangere FOREIGN KEY intr-o tabela.),CREATE
TABLE,ALTER TABLE,DROP TABLE,CREATE,ALTER,DROP,BACKUP
DATABASE.( Lets the user ID back up an entire database to a backup device.),BACKUP LOG.
(Lets the user ID back up a database transaction log to a backup device.),CREATE
DATABASE.,REFERENCES. (Lets a user ID refer to a column in a table or view in a foreign
key or check constraint (Tip 153 will show you how a user-ID can use a foreign key or check
constraint to determine the values in a column-even if the user-ID is denied SELECT privilege
on the column or the entire table.),USAGE. (Lets the user ID use domains (named sets of legal
column values), user-defined character sets, collating sequences, and translations. For example,
without USAGE privilege on a domain, a user ID cannot CREATE a table with a column that
uses the domain name as its data type.)

CLAUZELE GRANT SI REVOKE sunt folosite la DCL (pt.acordare respectiv retragere


permisiuni pt.useri)

CLAUZA GRANT:

GRANT CU SELECT:
GRANT CU INSERT:

GRANT UPDATE:

GRANT DELETE:
GRANT REFERENCES:

GRANT ALL:
CLAUZA REVOKE:

Clauza GRANT SI REVOKE pt.view-uri:

Exemplul1:
Exemplul2:

Cap.7 Crearea indecsilor pt.regasirea rapida a datelor


March 18, 2010

Clauza CREATE INDEX este folosita pt.crearea indecislor.


Cap8- Constrangeri, domenii, chei pt.mentinerea
integritatii bd
March 18, 2010

1) CREAREA UNUI RULE (CLAUZA CREATE RULE)

2) Crearea unui domeniu (CLAUZA CREATE DOMAIN)

Un domeniu reprezinta un set de valori legale pe care o coloana le poate contine


3) Cheie primara
Tabela cu 4 chei primare:

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:

5) Constrangerea NOT NULL in coloane


6) Constrangerile UNIQUE si CHECK in coloane
Constrangere UNIQUE multi-coloana:

7) Crearea unei reguli (clauza CREATE RULE)


8) Crearea unor constrangeri multi-tabela (clauza CREATE ASSERTION):

Tabele temporare in mssql


March 18, 2010

1) Tabela temporara locala


2) Tabela temporara globala

3) Crearea unei tabele temporare in mysql:


Cap9. Interogari tabele multiple si creare view-uri
March 18, 2010

Ex1:

Ex2:
Ex3 : Folosirea unui view pt.a afisa rezultatele unei expresii : (in select se pot face si
calcule):

Ex4: UPDATE la mai multe tabele intr-un view

Ex5: Clauza CHECK option la VIEW pt.aplicarea constrangerilor impuse pt.UPDATE si


INSERT:
Ex6: Afisarea intr-un view a anumitor linii si coloane dintr-o tabela:

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):

a) Exemple cu operatorul UNION (de reuniune):


b) Operatorul UNION ALL (reuneste toate inregistrarile din mai multe tabele chiar si pe
cele duplicat!!!):

c) UNION CORESPONDING
d) UNION ce combina rezultatele a 2 cereri:

e) UNION ce combina rez.din 3 tabele si clauza ORDER BY in UNION:

Cap.10 Lucrul cu functii, parametri si tipuri de


date (variabile)
March 19, 2010

1) Variabile

2) Parametri sunt pt.stocarea valorilor si folositi in procedurile stocate:

3) Referinte ale coloanelor:


4) SUBSTRING si UPPER:

5) Clauza DISTINCT:
6) LOWER:

7)

8)
9) Operatorii UNION, INTERSECT si EXCEPT:
10) Operatorul except exemple:

11) Functiile POSITION si CHARINDEX pt.siruri de caractere:


12) Functiile CHAR_LENGTH(LEN) si OCTET_LENGTH:

13) BIT_LENGTH si EXTRACT:

14) Functiile CURRENT_TIME si CURRENT_DATE:


15) Functia CURRENT_TIMESTAMP si fctii data si timp:

16) Functia CAST si CASE exemplu:


17) Clauza SELECT ex.complet:

18) Subquery si case


19) Functia NULLIF:

Cap.11 Lucru cu predicate de comparatie si query-


uri grupate
March 19, 2010

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

8) Clauza GROUP BY:


9) Clauzele ORDER BY si GROUP BY:

10 ) Clauza COMPUTE de calcul a rezultatelor in aceeasi tabela pe coloane separate


11) Clauzele COMPUTE si COMPUTE BY:

12) Clauza GROUP BY cum trateaza valorile NULL:


13) Clauza HAVING grouped queries:

14) Diferenta clauzele WHERE si HAVING:

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)

2) CROSS JOIN produs cartezian


3) Clauza where pt. join-ul a 2 tabele

Exemplul1:

Exemplul2:

Exemplul3:
Exemplul4:

continuare ex.4:

Exemplul5: Intersectie cu CORRESPONDING:


4) Join multiplu clauza where pt.a genera produsul cartezian

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

7) Join conditional (clauza where), cross join:

8) Inner join exemplu:


9) Cuv.rezervat USING la INNER JOIN:

10) OUTER JOIN exemplu:


11) LEFT OUTER JOIN:

12) RIGHT OUTER JOIN si FULL OUTER JOIN:

Ex2:
13) JOIN la mai multe tabele intr-un singur query:

14) Non-equality inner join si outer join:

15) UNION JOIN:


16) Rolul unei clauze FROM intr-un join:

17) Operatorul * la clauza select

18) Single table join


19) Alias-uri:
20) Exemplu select cu procent

21) Exists in loc de count(*) pt.a verifica daca o subcerere intoarce cel putin o
inregistrare

22) Exemple joins cu clauza where si tratare valori NULL


22) Nested queries (subqueries) lucreaza pe mai multe tabele dintr-o data

Cap.13 Subquery-uri
March 24, 2010

1) Exemplu grouped subqueries


2)

3) Predicatele EXISTS si NOT EXIST la subqueries:

4) Relatia intre joins si subqueries


5) Cuvinte rezervate IN si NOT IN la subcereri

6) ALL ,SOME si ANY subquery ce intoarce valori multiple:


7) Folosire functie agregat intr-un subquery pt.a intoarce o singura valoare:

8) Rolul subquery-urilor intr-o clauza where:

9) Subquery-uri pt. a intoarce valoare de true sau false


10) Nested queries pt.a intoarce valoare de true sau false:

11) Queries corelate


12) Subqueries in clauza HAVING

13) Query-uri corelate cu operatori de comparatie


14) Folosire query corelat ca un filtru (clauza HAVING ):

15) Query-uri corelate cu clauza update

Cap.14 Tranzactii nivele de izolare si procesare concurenta


March 24, 2010

1) INSERT INTO cu SELECT


DBA admin-ul bd (cand sunt putini useri)

DBO in momentul crearii tabelelor, view-urilor, query-urilor respectivul user devine database
owner (dbo)

2) GRANT DELETE

3) GRANT USAGE si create domain acces pt.useri la domenii create

4) REVOKE si GRANT optiunea cascade


5) Folosire GRANT si REVOKE simultan

6) Cele 4 niveluri ale tranzactiilor:


7) Deadlock situatii de inter-blocare, nivelul serializable
8) SET TRANSACTION: (setarea unui nivel de izolare al tranzactiei -unul din cele 4)

9) COMMIT pt.update permanent la bd:


10) Constrangeri multi-tabela:

Cap16.Cursori (regasirea si manipularea datelor)


March 24, 2010

1) Declarare si creare cursor

2) Declarare cursor si clauza ORDER BY:


3) Declarare cursor FOR UPDATE:

4)
5)

6) Cursor cu update si delete:


7) Index pt.schimbarea ordinii dintr-un cursor:

8) Inchidere cursor, drop cursor (deallocate) si cursor insensitive


9) Variabila sistem @@ROW_CURSOR:

10) Nested cursors


Cap17. Triggers
March 25, 2010

1) Timp si data setata la executie


2) Triggers de insert

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.

5) Trigger update pt.schimbare PK sau FK:


6) Cascade triggers

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.

7) Triggers referential integrity


8) Trigger pt. a trimite un mesaj e-mail

Cap18. DataBlobs and Text tipuri date, lucrul cu imagini


in mssql
March 25, 2010

1) Teorie:

2) INSERT si UPDATE la tip data BLOB:

3) INSERTEXT si UPDATEXT:
4) Functiile pt.blob READTEXT,TEXTVALID, PATINDEX

Cap19. Lucru cu information schema view


March 25, 2010

Totul despre tabele sistem:


Creare mdf si ldf fisiere:
Adaugare fisiere si grupuri fisiere la bd existente:

Arhitectura single respectiv multi pt.bd

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:

1) Schema check constraints view


2) Folosire COLUMN_DOMAIN

3) Schema COLUMN_PRIVILEGES

4) Schema column views


5) Schema CONSTRAINT_COLUMN_USAGE
6) Schema CONSTRAINT_TABLE_USAGE

7) Schema DOMAIN_CONSTRAINTS
8) Schema DOMAIN
9) Schema KEY_COLUMN_USAGE

10) Schema PARAMETERS


11) Schema REFERENTIAL_CONSTRAINTS
12) Schema ROUTINES
13) Schema SCHEMATA

14) Schema Table_Constraints


15) Schema Table_Privileges

16) Schema tables


17) Schema VIEW_COLUMN_USAGE

18) Schema VIEW_TABLE_USAGE


19) Schema ROUTINE_COLUMNS
20) Schema VIEWS View
Cap.20 Proceduri stocate ,functii utlizator
March 28, 2010

1) Sintaxa generala proceduri stocate (ex.proc.stocata si executie proc stocata)


2) Cum se definesc variabile intr-o procedura stocata

3) Folosire proceduri stocate pt.a intoarce valori


4) Intoarcerea unei valori dintr-o functie stocata folosind cuv.cheie RETURN:
5) Lucrul cu cursori in procedurile stocate
6) Declararea variabilelor intr-o procedura stocata si asignarea valorilor pt.aceste valori
declarate (clauzele declare si set):

7) Crearea unei functii utilizator (CREATE FUNCTION-crearea functiilor scalare in


mssql)
Explicatia parametrilor:

Exemple CREATE FUNCTION:

Ex1:
Ex2:

Ex3:
8) Stergerea unei proceduri stocate sau functii utilizator (functii scalare)

Cap23. Interogari si sub-interogari avansate,tabele


temporare,intersectia a 2 tabele, diferenta a 2 tabele
March 28, 2010

1) Self join (multy-query table that refers to itself):


2) Tabele temporare pt. inlaturarea datelor duplicate
Stergere inregistrari din tabela temporara:

3) Setare valori tabela 1 bazat pe valori din tabela 2 (clauza UPDATE):


4) Operatorii IN si EXISTS (IN verifica daca o valoare e intr-o lista de valori)
5) Operatorul ALL pt.a combina 2 query-uri intr-una singura

6) Operatorul EXISTS pt.a verifica daca exista inregistrari duplicat in tabela

7) Join la continutul tabelelor si rezultatele functiilor (chestionar msssql)


8) Folosire view-uri pt.a vedea ierarhia nivelurilor de agregare

9) Predicatul EXISTS pt. a afisa intersectia a 2 tabele


10) Predicatul EXCEPT pt.a afisa diferenta dintre 2 tabele

11) Clauza TOP


12) SELECT cu RUNNING TOTALS

Cap24. Mssql proceduri stocate built-in


March 29, 2010

1) Procedurile stocate sp_addtype si sp_droptype

2) Procedurile stocate sp_help si sp_helptext


3) Procedurile stocate sp_depends si sp_helpconstraint

4) Procedura stocata sp_key (PRIMARY KEY):

5) Procedura stocata sp_fkeys


6) Procedura sp_helpdb (afiseaza marimea si locatia fisierelor din bd) si procedura stocata
sp_spaceused
7) Procedura stocata sp_helptrigger -afiseaza informatii despre triggeri
8) Procedura stocata sp_who si kill

9) Procedura stocata sp_lock (afiseaza informatii despre locks din bd)


10) Procedurile stocate sp_password si sp_addlogin:

sp_addlogin si alte proc.stocate:


Clauza REFERENCES, FOREIGN KEY
March 12, 2011

Jobs in sql server, sql server agent si excludere mutuala


September 1, 2012

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.

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