1. Obiecte importante in SQL

 - SQL are componente:

  • literali (constante)
  • limitatori
  • comentarii
  • indentificatori
  • cuvinte cheie rezervate

2. Literali

 - Literal este o constanta de tip alfa-numeric (sir de caractere), hexazecimala sau numerica

 - Tipul alfa-numeric contine unu sau mai multe simboluri plasati intre ghilimele (' ') sau (" "), Se recomanda (" "). Pentru a include ghilimele in sirul de caractere trebuie folosite doua ghhilimele alturate.

 - Tipul de date hexazecimal incep cu simbolurile 0x dupa care urmeaza un numar par de simboluri alfa-numerice

Exemple:

  • 'ABC' - corect
  • "ABC" - corect
  • '9868' - corect
  • 0x53514C0D - corect
  • 'Apostoful se prezinta asa:  can' ' t ' - corect
  • 'AB'C' - incorect
  • 'New York" - incorect

​ - Constantele numerice cuprind valorile intregi sau cu virgula fixa/ mobila (130; -130.00; -0.357E5; 22.3E-3)

- Constantele au proprietatile: tip de date si lungime, exactitatea si coeficientul de scalabilitate


3. Limitatorii

 - In T-SQL ghilimelele duble au doua intrebuintari: pentru siruri de caractere si pentru a fi folositi in calitate de limitatori pentru asa numitii indentificatori cu limitari(delimited identifier)

 - delimited identifier este un caz special al identificatorilor care se foloseste pentru a permite folosirea cuvintelor cheie in calitate de indentificatori cit si pentru a folosi spatii in numele obj. BD

 - Folosirea ghilimelelor duble in T-SQL se determina prin parametrul QUOTED_IDENTIFIER al instructiunii SET. Daca acest parametru  are valoarea ON(by default), identificatorii dintre ghilimelele duble vor fi tratati ca indentificatori cu linite


4. Comentarii

 - Sunt doua tipuri de comentarii: /* text */ si    doua defisuri ( -- ) care comenteaza doar rindul curent


5. Identificatori

 - Se folosesc pentru a denumi obj. BD (BD, tabele, indexi)

 - Pot avea pina la 128 simboluri si contin litere, cifre sau _, @, #, &

 - Primul simbol  poate fi litera sau _, @, #,

 - Simbolul initial # indica obiect temporar

- Simbolul @ indica o variabila


6. Cuvintele cheie rezervate

 - Nu se pot folosi la denumirea obj.


7. Tipuri de date

 - Toate valorile in coloana trebuie sa aiba un singur tip (in afara de tipul de date SQL_VARIANT)

- Tipuri de date

  • numerice
  • caracter
  • temporale (data si/sau timpul)
  • alte tipuri

Tipuri de date numerice in T-SQL

INTEGER 4yte (-2 147 483 648 - 2 147 483 647)
SMALLINT 2 byte (-32 768 - 32 767)
TYNYINT 1bye (0 - 255)
BIGINT 8byte (-2^63 - 2^63 - 1)

DECIMAL

(p,[s])

cu virgula fixata. Argumrtul p (precision) indica numarul de biti, iar s (scale) - numarul de biti care urmeaza dupa virgula. In dependenta de p, valoarea DECIMAL se pastreaza in 5..17 byte

NUMERIC

(p,[s])

Sinonim cu DECIMAL
REAL cu virgula mobila
FLOAT[(p)] cu virgula mobila, daca p<25 trebuie 4 byte, daca p>25 trebuie 8 byte
MONEY Reprezentarea banilor, corespunde tipului DECIMAL pe 8 byte.
SMALLMONEY La fel ca MONEY, doar ca are 4 byte

8. Tipuri de date caracter

Tipuri de date carcater in T-SQL

CHAR[(n)] cuprinde n byte (n<=8000)
VARCHAR[(n)] 0<n<8000
NCHAR[(n)] siruri de caractere de lungime fixa. pentru fiecarea simbol trebuie 2 byte (simboluri <=4000)
NVARCHAR[(n)] siruri de caractere cu lungime variabila; pentru fiecarea simbol trebuie 2 byte  (simboluri <=4000)

 


9. Tipuri de date temporale

  • DATETIME
  • SMALLDATETIME
  • DATE
  • TIME
  • DATETIME2
  • DATETIMEOFFSET

10. Alte tipuri de date 

  • binare
  • BIT
  • CURSOR
  • UNIQUEIDENTIFIER
  • SQL_VQRIANT
  • TABLE
  • XML
  • spatiale
  • HIERARCHYID
  • TIMESETAMP
  • determintae de utilizator

11. Tipuri de date binare si BIT

 - binare: BINARY si VARBYNARY; descriu obj. in formatul intern al sistemului si se folosesc pentru pastrarea sirurilor de biti

 - BIT contine doar un bit

Tipul de date binar si BIT

BINARY[(n)] sir de biti cu lungime fixa de n byte (0<n<8000)
VARBINARY[(n)] sir de biti cu lungime variabila de n byte (0<n<8000)
BIT pastreaza valori logice; poate avea trei stari: FALSE, TRUE si NULL

 


12. Tipuri de date obj. mari

 - LOB(Large OBject)  - poate pastra obj. al datelor cu marimea <= 2GB

 - In T-SQL sunt urmatoarele tipuri de date LOB

  • VARCHAR(max)
  • NVARCHAR(max)
  • VARBINARY(max)

13. Tipuri de date UNIQUEIDENTIFIER

 - numar de identificare pastrat in 16 byti; este  IDENTIFICATOR


14. Tipuri de date SQL_VARIANT

 - Pentru pastrarea valorilor de diferite tipuri

 - Fiecare valoarea de acest tip are doua parti: valoarea si informatia care descrie aceasta valoare(lungimea, scale, exactitatea)

 - Pentru a accesa valorile coloanei de tip SQL_VARIANT se foloseste functia T-SQL  SQL_VARIANT_PROPERTY


15. Tipuri de date HIERARCHYID

 - Pastreaza ierarhia completa.

 - Functii cu care lucreaza: GetLevel();  GetAncestor(); GetDescendent; Read(); si Write();


16. Tipuri de date TIMESTAMP

 - Indica coloana, determinata ca VARBINARY(8) sau BINARY(8), in dependenta de proprietatea coloanei de a primi valoarea NULL

 - Poate sa determine timpul ultimei modificari in coloane. (sinonim = ROWVERSION)


17. Tipuri de pastrare

 - Sunt doua tipuri de pastrare a LOB-obj.

  • FILESTREAM
  • pastrare si folosire coloane rare (sparse columns)

18. Pastrare de tip FILESTREAM

 - Fisierele mari (video) se pastreaza in afara BD

 - pastrarea de tip FILESTREAM administreaza obj. LOB care se pastreaza in sistemul de fisiereNTFS

 - Proprietati

  • datele de tip FILESTREAM pot fi pastrate cu ajutorul instructiunii CREATE TABLE, iar pentru lucrul cu ele se poate de folosit (SELECT, INSERT, UPDATE di DELETE)
  • Sistemul de administrarea al BD asigura nivel de securitate egal datelor de tip FILESTREAM cit si al datelor din interiorul BD

19. Tabele rare

 - Are scop minimizarea volumului pe disc pe care il ocupa BD

 - Coloanele acestui tip permit optimizarea pastrarii coloanelor la care majoritatea valorilor sunt NULL

  -Se creaza la fel ca tabelele simple,doar ca dupa denumirea coloanei se pune cuvintul cheie SPARSE


20. Functiile SQL

 - Pot fi agregate si scalare


21. Functiile agregate

 - Executa calcule asupra unue grupe de valori ai coloanei si intotdeauna intoarce o singura valoare

 - Tipuri:

  • obisnuite
  • statice
  • determintae de utilizator
  • analitice

​- Functiile obisnuite

  • AVG - media aritmetica a valorilor din coloana (datele trebuie sa fie numerice)
  • MAX si MIN - determina maximul si minimul dintre valorile tabelului(datele pot fi numerice caracter si temporale)
  • SUM - suma valorilor din coloana (datele trebuie sa fie numerice)
  • COUNT - numarul de valori diferite de NULL. COUNT(*) - returneaza numarul de rinduri (cu tot cu NULL)
  • COUNT_BIG - analog COUNT, doar ca returneaza tip de date BIGINT

22. Functiile scalare

 - Se folosesc pentru crearea expresiilor scalare

 - Executa calcule pentru o singura valoare din coloana sau lista de coloane

 - Categorii:

  • numerice
  • functiile datei
  • functii sir de caractere
  • de sistem
  • al metadatelor

23. Functiile numerice

 - Sunt functii matematice:

Functiile numerice T-SQL

ABS(n) modul
ACOS(n) arccosinus de n, returneaza float
ASIN(n) arcsinus de n, returneaza float
ATAN(n) arctangenta de n, returneaza float
ATN2(n,m) arctangenta de n/m, returneaza float
CEILING(n) rotungire la intreg catre mai mare
COS(n) cosinus de n, returneaza float
COT(n) cotangenta de n, returneaza float
DEGRESS(n) radiani in grade
EXP(n)  exponentiala  e^n
FLOOR(n) rotungire la intreg catre mai mic
LOG(n) logaritm de n
LOG10(n) logaritm in baza 10 de n
PI() returneaza valoarea pi(3,14)
POWER(x,y) calculeaza x ^y
RADIANS(n) grade in radiani
RAND() returneaza unn float arbitrar cuprins intre 0 si 1
ROUND(n,p,[t]) rotungeste n cu exactitatea pina la p
ROWCOUNT_BIG numarul de coloane care a fost prelucrat de ultima instructiune T-SQL
SIGN(n) semnul lui n; +1 daca e pozitiv; -1 daca e negativ
SQRT(n) radical de ordinul 2
SQUARE(n) = n^2
TAN(n) tangenta de n,returneaza float

 


24. Functiile temporale

 - Prelucreaza data,timpul

Functiile temporale T-SQL
GETDATE() returneaza data si timpul curent al sistemului
DATEPART(item, date)

SELECT DATEPART(month, '01.01.2005') = 1

(1 = ianuarie)

DATENAME(item, date) SELECT DATENAME(weekday,'01.01.2005') = Sanday
DATEDIFF(item, dat1, dat2) calculeaza diferenta dintre dat1 si dat2 ,returneaza rezultatul de tip intreg al argumentului item
DATEADD(i, n, d) adauga n-unitati indicate in i cu data indicata d

25. Functiile sir de caractere

 - Prelucreaza valorile coloanelor care au tip de date caracter

Functiile sir de caractere

ASCII (simbol) codul ASCII al simbolului
CHAR(numar intreg) simbol din codul ASCII
CHARINDEX(z1,z2) pozitia intiala al subsirului z1 in sirul z2
DIFFERENCE(z1, z2)

returneaza numar intreg intre 0..4 ,care este diferenta intre valorile SOUNDEX al sirurilor z1,z2

SOUNDEX returneaza numarul,care caracterizeaza sonoritatea sirului

LEFT(z, length) numarul primelor simboluri, dati de length
LEN(z) numarul de simboluri ale lui z
LOWER(z1) litere mari in litere mici
LTRIM(z) sterge spatiile de la inceput
NCHAR(i) returneaza simbolul un Unicode, dat in forma de numar intreg
QUOTENAME(char_string) returneaza sirul in Unicode cu adaugarea limitatorului
PATINDEX(%p%, expr) returneaza pozitia initiala al primului sablon p din expresia expr
REPLACE(str1,str2,str3) Schimba intrarile str2 din str1 cu str3
REPLICATE(z, i) repeta de  i ori sirul z
REVERSE(z) afiseaza z in ordine inversa
RIGHT(z,length) returneaza ultimele length simboluri din sirul z
RTRIM(z) sterge spatiile de la sfirsit
SOUNDEX(a) returneaza codul SOUNDEX, folosit pentru a determina asemanarile intre doua siruri
SPACE(length) returneaza un sir de spatii, cu lungimea length
STR(f,[len[,d]]) transforma expresia data in forma cu virgula mobila in  sir
STUFF(z1,a,length,z2) sterge din z1 length-simboluri,incepind cu pozitia a si pune in locul lor z2
SUBSTRING(z,a,length) scoate din z, incepind cu pozitia a, uin sir de lungime length
UNICODE(z) returneaza codul Unicode al primului simbol al siruluiz
UPPER(z) litere mici in litere mari

 


25. Functiile de sistem

 - Prezinta informatia despre obj. BD

 - Majoritatea folosesc identificatorul numeric intern (ID),care se atribuie fiecarui obj.

Functiile sistem
CAST (a AS type [(length)]) transforma expresia a in tipul de date type
COALESCE(a1,a2,...) returneaza prima expresie din lista care nu este NULL
COL_LENGTH(obj,col) returneaza lunghimea coloanei
CONVERT(type[(length)],a) echivalent CAST
CURRENT_TIMESTAMP returneaza data si ora curenta
CURRENT_USER returneaza numele userului curent
DATALENGTH(z) returneaza numarul de byte ai expresiei z
GETANSINULL('dbname') returneaza 1 daca valoarea folosita NULL corespunde standartelor ASCII
ISNULL(expr,value) returneaza valoarea expr, daca nu este NULL, in caz contrar returneaza valoarea value
ISNUMERIC(expresion) determina daca expresion este numerica
NEWID() creaza un identificatorr, destinar pentru pastrarea tipului UNIQUEIDENTIFIER
NEWSEQUENTITALID() creaza identificator GUID
NULLIF(expr1,expr2) returneaza NULL, daca valorile sunt egale
SERVERPROPERTY(propertyname) returneaza iformatia despre proprietatile BD
USER_ID([user_name]) returneaza identificatorul utilizatorului user_name
USER_NAME([id]) returneaza numele utilizatorului cu identificatorul id
SYSTEM_USER returneaza numele utilizatorului curent

 


26. Functiile metadatelor

 - returneaza informatie despre BD si despre obj

Functiile metadatelor
COL_NAME(tab_id, col_id) returneaza numele coloanei cu identificatorul idicat
COLUMNPROPERTY(id,col,property) returneaza informatia despre coloana indicata
DATABASEPROPERTYEX(database,property) returneaza valoarea property ai BD
DB_ID([db_name]) identificatorul BD
DB_NAME([db_id]) numele BD
INDEX_COL(table, i, no) numele indext al coloanei din tabel
INDEXPROPERTY(obj_id,index_name, property) proprietatile indexului sau statistica pentru identificatorul indicat
OBJECT_NAME(obj_id) numel obj. cu identificatorul obj_id
OBJECT_ID(obj_name) identificatorul obj_name
OBJECTPROPERTY(obj_id, property) informatia despre obj

 


27. Operatorii scalari

 - Se folosesc pentru lucrul cu valorile scalare

 - T-SQL sustine operatiile numerice, logice si concatenarea

 - Op. unari: +, -

- Op.binari: +, -, *, / ,%

Op.logici: ~ -- NOT;    & -- AND;  | -- OR;   ^-- XOR;


28. Variabile globale

 -  Variabile speciale care se folosesc ca constante

 - sunt prefixate cu @@

Variabile globale
@@CONNECTIONS numarul de tentative de intrare in sistema, de cind aceasta a fost pornita
@@CPU_BUSY timpul de ocupare al procesorului
@@ERROR informatia despre  valoarea ultimei instructiuni T-SQL
@@IDENTITY ultima valoare instrodusa in coloana
@@LANGID identificatorul limbei care se foloseste
@@LANGUAGE numele limbei care se foloseste
@@MAX_CONNECTIONS numarul maxim de conectiuni cu sistema
@@PROCID identificatorul procedurii utilizator, folosita in acest moment
@@ROWCOUNT numarul de coloane care au fost atinse de ultima instructiune
@@SERVERNAME informatia despre serverul local
@@SPID indentificatorul procesului server
@@VERSION versiunea curenta a SO

 


29. Valoarea NULL

 - Se folosest cind informatia in celula nu este cunoscuta

 - Daca un operand are val. NULL atunci rezultatul este NULL

 - NULL != 0