• Funcții Transact-SQL. Comenzi SQL de bază Fiecare programator Sql ar trebui să cunoască funcții matematice Exemple de interogări

    La fel ca majoritatea limbajelor de programare, SQL are funcții pentru manipularea datelor. Este de remarcat faptul că, spre deosebire de instrucțiunile SQL, funcțiile nu sunt standardizate pentru toate tipurile de SGBD, adică pentru a efectua aceleași operațiuni asupra datelor, diferite SGBD-uri au propriile nume de funcție. Aceasta înseamnă că codul de interogare scris într-un SGBD poate să nu funcționeze în altul, iar acest lucru trebuie luat în considerare în viitor. Cel mai mult, aceasta se referă la funcții pentru procesarea valorilor textului, conversia tipurilor de date și manipularea datelor.

    De obicei, un SGBD acceptă un set standard de tipuri de funcții, și anume:

    • Funcții de text care sunt utilizate pentru procesarea textului (selectarea unei părți a caracterelor din text, determinarea lungimii textului, conversia caracterelor în litere mari sau mici ...)
    • Funcții numerice. Folosit pentru a efectua operații matematice pe valori numerice
    • Funcții de dată și oră (efectuați manipularea datei și orei, calculați perioada dintre date, verificați corectitudinea datelor etc.)
    • Funcții statistice (pentru calcularea valorilor maxime/minime, a valorilor medii, numărarea numărului și a sumei...)
    • Funcții de sistem (furnizează diverse informații de serviciu despre SGBD, utilizator etc.).

    1. Funcții SQL pentru procesarea textului

    Implementarea SQL în SGBD-ul Access are următoarele funcții pentru procesarea textului:

    Să convertim numele produselor în majuscule folosind funcția UCase():

    SELECTAȚI Product, UCase(Product) AS Product_UCase FROM Sumproduct

    Selectați primele trei caractere din text folosind funcția STÂNGA():

    SELECTAȚI Product, LEFT(Product, 3) AS Product_LEFT FROM Sumproduct

    2. Funcții SQL pentru procesarea numerelor

    Funcțiile de procesare a numărului sunt concepute pentru a efectua operații matematice pe date numerice. Aceste funcții sunt destinate calculelor algebrice și geometrice, deci sunt utilizate mult mai rar decât funcțiile de procesare a datei și orei. Cu toate acestea, funcțiile numerice sunt cele mai standardizate în toate versiunile de SQL. Să aruncăm o privire la lista de funcții numerice:

    Am enumerat doar câteva dintre caracteristicile principale, dar puteți oricând să consultați documentația bazei de date pentru o listă completă a funcțiilor acceptate și descrierile detaliate ale acestora.

    De exemplu, să scriem o interogare pentru a obține rădăcina pătrată a numerelor dintr-o coloană Cantitate folosind funcția SQR():

    SELECTAȚI Sumă, SQR(Suma) AS Amount_SQR FROM Sumproduct

    3. Funcții SQL pentru procesarea datelor și orelor

    Funcțiile de manipulare a datei și orei sunt una dintre cele mai importante și frecvent utilizate funcții SQL. Bazele de date stochează valorile datei și orei într-un format special, astfel încât acestea nu pot fi utilizate direct fără procesare suplimentară. Fiecare SGBD are propriul set de funcții pentru procesarea datelor, ceea ce, din păcate, nu permite transferul acestora pe alte platforme și implementări SQL.

    Lista unor funcții pentru gestionarea datei și orei în Acces DBMS:

    Să ne uităm la un exemplu despre cum funcționează funcția DataPart():

    SELECTAȚI Data1, DatePart("m", Data1) AS Month1 FROM Sumprodus

    Funcţie DataPart() are un parametru suplimentar care ne permite să afișăm partea necesară a datei. În exemplu, am folosit parametrul "m", care afișează numărul lunii (la fel putem afișa anul - "aaaa", sfert - "q", zi - "d", saptamana - "w", ora - "h", minute - "n", secunde - "s" etc.).

    4. Funcții statistice SQL

    Funcțiile statistice ne ajută să obținem date gata făcute fără a le eșantiona. Interogările SQL cu aceste funcții sunt adesea folosite pentru a analiza și a crea diferite rapoarte. Un exemplu de astfel de selecții poate fi: determinarea numărului de rânduri dintr-un tabel, obținerea sumei valorilor pentru un anumit câmp, căutarea celei mai mari / mai mici sau a valorii medii într-o coloană specificată a tabelului. De asemenea, rețineți că funcțiile statistice sunt acceptate de toate SGBD-urile fără prea multe modificări de ortografie.

    Lista funcțiilor statistice în Acces DBMS:

    NUMARA():

    SELECTAȚI COUNT(*) AS Count1 FROM Sumproduct- returnează numărul tuturor rândurilor din tabel

    SELECTAȚI COUNT(Product) AS Count2 FROM Sumproduct- returnează numărul tuturor rândurilor negoale din câmp produs

    Am eliminat în mod intenționat o valoare dintr-o coloană produs pentru a arăta diferența în modul în care funcționează cele două interogări.

    Exemple de utilizare a funcțiilor SUMĂ():

    SELECTAȚI SUM(Cantitate) AS Sum1 FROM Sumprodus WHERE Luna = „Aprilie”

    Cu această solicitare, am reflectat numărul total de bunuri vândute în aprilie.

    SELECTAȚI SUM(Cantitate*Suma) AS Sum2 FROM Sumprodus

    După cum puteți vedea, în funcțiile agregate, putem efectua calcule pe mai multe coloane folosind operatori matematici standard.

    Exemplu de utilizare a funcției MIN():

    SELECTAȚI MIN(Suma) AS Min1 FROM Sumprodus

    Exemplu de utilizare a funcției MAX():

    SELECTAȚI MAX(Suma) AS Max1 FROM Sumprodus

    Exemplu de utilizare a funcției AVG():

    SELECTAȚI AVG(Amount) AS Avg1 FROM Sumproduct

    Etapele acestei etape de învățare a interogărilor SQL sunt menite să demonstreze faptul că SQL poate nu numai să facă selecții complexe și să sorteze date, ci și să calculeze rezultatele funcțiilor matematice, să efectueze transformarea textului, să grupeze înregistrări etc. Mai precis, nu SQL poate face toate acestea, ci cei care le susțin. SQL cu standardele sale formulează doar cerințele pentru aceleași SGBD.

    Pasul 15 SUM, AVG, MIN, MAX, COUNT...

    Acest pas vă va arăta cum să utilizați cele mai simple funcții din SQL, cum ar fi sumă, min, max, medie și așa mai departe. Să începem imediat cu un exemplu de derivare a vechimii medii a tuturor angajaților.

    SELECTAȚI AVG(D_STAFF.S_EXPERIENCE) CA [AVERAGE STAFF EXPERIENCE] DIN D_STAFF

    Funcția SQL AVG.

    În mod similar, puteți calcula valorile minime și maxime (MIN, MAX), suma totală (SUM), etc. Vă sfătuiesc să îl încercați folosind tutorialul. Merită să încercați să definiți criterii suplimentare pentru selectarea înregistrărilor implicate în determinarea valorii finale a funcției folosind clauza WHERE.

    Funcțiile enumerate mai sus folosesc întregul rezultat al interogării pentru a-și determina valoarea. Astfel de funcții sunt numite agregat . De asemenea, există o serie de funcții ale căror argumente nu sunt toate valorile coloanei definite în interogare, ci fiecare valoare individuală a fiecărui rând individual al rezultatului. Un exemplu de astfel de funcție este funcția SQL pentru calcularea lungimii câmpului de text LEN:

    SELECTAȚI S_NAME, LEN(D_STAFF.S_NAME) CA [LENGTH] FROM D_STAFF


    Poate fi folosit suprapunerea funcţiilor SQL, după cum se arată mai jos și calculați valoarea maximă a lungimii câmpului S_NAME.

    SELECTAȚI MAX(LEN(D_STAFF.S_NAME)) CA [MAX LENGTH] DIN D_STAFF


    Funcția SQL MAX.

    Ei bine, în concluzie, toți împreună.

    SELECTAȚI SUMA(D_STAFF.S_EXPERIENCE) CA [SUMA], AVG(D_STAFF.S_EXPERIENCE) CA [MEDIE], MIN(D_STAFF.S_EXPERIENCE) CA [MINIM], MAX(D_STAFF.S_EXPERIENCE) CA [MAXIM], COUNT(*) AS [NUMĂR DE ÎNREGISTRĂRI], MAX(LEN(D_STAFF.S_NAME)) CA [LENGTH MAXIMUM] DIN D_STAFF


    Un exemplu de utilizare a funcțiilor SQL agregate.

    Observați argumentul funcției COUNT. Am specificat (*) ca argument, pentru că vreau să obțin exact numărul total de înregistrări. Dacă specificați, de exemplu, COUNT(S_NAME), atunci rezultatul va fi numărul de valori S_NAME nevide (S_NAME NU ESTE NULL). Ar fi posibil să scrieți COUNT(DISTINCT S_NAME) și să obțineți numărul de valori unice S_NAME, dar MS Access, din păcate, nu acceptă această opțiune. În exemplul nostru, COUNT(S_NAME) și COUNT(*) dau exact același rezultat.

    Pasul 16 Transformarea textului

    Adesea, valorile textului sunt completate de utilizatorii de software în moduri diferite: cine scrie numele complet. cu majuscule, cine nu este; unii scriu totul cu majuscule. Multe formulare de raportare necesită o abordare unificată, și nu numai formulare de raportare. Pentru a rezolva această problemă, SQL are două funcții UCASE și LCASE. Un exemplu de cerere și rezultatul procesării acesteia sunt prezentate mai jos:

    SELECTAȚI UCASE(D_STAFF.S_NAME) AS , LCASE(D_STAFF.S_NAME) CA FROM D_STAFF


    Funcțiile SQL UCASE și LCASE.

    Pasul 17: manipularea SQL și a șirurilor

    Există, de asemenea, o funcție minunată MID care vă va ajuta să rezolvați problema extragerii unei părți a unui șir din întreaga valoare a unui câmp de text. Și aici, cel mai bun comentariu ar fi un exemplu - un exemplu de „batjocorire” a numelor de profil de utilizator.

    SELECTAȚI UCASE(MID(P_NAME,3,5)) DIN D_PROFILE


    Suprapunerea funcțiilor SQL UCASE și MID.

    Am „decupat” 5 caractere din valorile numelor de profil, începând cu cel de-al 3-lea, și am primit o grămadă de „gunoaie” care se repetă. Pentru a lăsa doar valori unice, vom folosi cuvântul cheie DISTINCT.

    SELECTARE DISTINCT UCASE(MID(P_NAME,3,5)) CA FROM D_PROFILE


    Selectarea valorilor unice ale funcției agregate.

    Uneori este necesar să folosiți expresii cu funcția LEN ca argumente pentru funcția MID. În exemplul următor, afișăm deja ultimele 5 caractere din numele profilului.

    SELECTAȚI UCASE(MID(P_NAME,LEN(P_NAME)-4,5)) DIN D_PROFILE


    Folosind funcția SQL LEN.

    Pasul 18. Utilizarea funcțiilor SQL în criteriile de selectare a înregistrărilor. Declarația HAVING

    După ce s-a ocupat de funcții, apare aproape imediat întrebarea cum pot fi ele utilizate în criteriile de selectare a înregistrărilor? Unele funcții, și anume cele care nu sunt agregate, sunt ușor de utilizat. Iată, de exemplu, o listă de angajați al căror nume complet mai mult de 25 de caractere.

    SELECTAȚI S_NAME FROM D_STAFF WHERE LEN(D_STAFF.S_NAME) > 25


    Utilizarea funcției LEN neagregate în condiții de interogare SQL.

    Ei bine, dacă, de exemplu, trebuie să afișați identificatorii tuturor posturilor care sunt ocupate de mai mult de un angajat în companie, atunci această abordare nu va funcționa. Ceea ce vreau să spun este că următoarea interogare poate să nu aibă niciun sens, dar este incorectă din punctul de vedere al unei interogări structurate. Acest lucru se datorează faptului că pentru procesarea corectă a unor astfel de interogări SQL folosind funcții agregate, o trecere liniară prin înregistrările angajaților nu va fi suficientă.

    SELECTAȚI S_POSIȚIA DIN D_STAFF WHERE COUNT(S_POSITION)>1

    Pentru astfel de cazuri a fost introdus cuvântul cheie HAVING în SQL, ceea ce ne va ajuta să rezolvăm problema cu posturile și angajații.

    SELECTAȚI S_POSIȚIA DIN GRUPUL D_STAFF DUPĂ S_POSIȚIA CU COUNT(S_POSITION)>1


    Utilizarea funcțiilor agregate în condiții de interogare SQL.

    Pasul 19. Gruparea datelor în rezultatele interogării SQL cu operatorul GROUP BY

    Clauza GROUP BY este necesară pentru a grupa valorile funcțiilor agregate după valorile câmpurilor asociate acestora. Este necesar atunci când dorim să folosim valoarea funcției agregate în criteriile de selecție a înregistrărilor (pasul anterior). Este necesar și atunci când dorim să includem valoarea funcției agregate în rezultatul interogării. Dar în cea mai simplă formă, gruparea echivalează cu evidențierea valorilor unice ale unei coloane. Să ne uităm la un exemplu de solicitare.

    SELECTAȚI S_POSIȚIA DIN D_STAFF


    Și acestea sunt două opțiuni care vă permit să afișați numai valori unice S_POSITION.

    SELECTAȚI S_POSIȚIA DIN GRUPUL D_STAFF PE S_POSIȚIE

    SELECTAȚI DISTINCT S_POSIȚIA DIN D_STAFF


    Ei bine, acum să revenim la gruparea valorilor funcției după valorile câmpurilor asociate acestora. Să afișăm pentru fiecare profil de utilizator numărul de înregistrări asociate acestuia în tabelul D_STAFF_PROFILE.

    SELECTAȚI PROFILE_ID CA , COUNT(PROFILE_ID) CA [NUMĂR DE ÎNREGISTRĂRI] DIN D_STAFF_PROFILE GROUP BY PROFILE_ID


    Utilizarea unei funcții SQL agregate cu grupare.

    Operatorul GROUP BY vă permite, de asemenea, să grupați rezultatul unei interogări după mai multe câmpuri, listându-le separate prin virgule. Sper că, după toate cele de mai sus, nu sunt necesare comentarii suplimentare cu privire la rezultatul ultimei interogări.

    SELECTAȚI S.S_POSITION AS , S.S_NAME CA [EMPLOYEE], COUNT(SP.STAFF_ID) CA [NUMĂR DE ÎNREGISTRĂRI ÎN TABELUL D_STAFF_PROFILE] DIN D_STAFF S, D_STAFF_PROFILE SP WHERE S.XD_IID=SP.STAFF_ID GROUP BY S.S_ . S_NAME


    Gruparea rândurilor de rezultat al interogării SQL după mai multe câmpuri.

    Să învățăm să rezumam. Nu, acestea nu sunt rezultatele învățării SQL, ci rezultatele valorilor coloanelor din tabelele bazei de date. Funcțiile agregate SQL operează pe valorile unei coloane pentru a produce o singură valoare de rezultat. Cele mai frecvent utilizate funcții de agregare SQL sunt SUM, MIN, MAX, AVG și COUNT. Există două cazuri în care ar trebui utilizate funcțiile agregate. În primul rând, funcțiile agregate sunt utilizate de la sine și returnează o singură valoare de rezultat. În al doilea rând, funcțiile de agregare sunt utilizate cu clauza SQL GROUP BY, adică cu gruparea după câmpuri (coloane) pentru a obține valorile rezultate în fiecare grup. Luați în considerare mai întâi cazurile de utilizare a funcțiilor agregate fără grupare.

    Funcția SQL SUM

    Funcția SQL SUM returnează suma valorilor unei coloane dintr-un tabel al bazei de date. Poate fi aplicat numai coloanelor ale căror valori sunt numere. Interogările SQL pentru a obține suma rezultată încep astfel:

    SELECTAȚI SUMA (NUME COLONĂ)...

    Această expresie este urmată de FROM (TABLE_NAME) și apoi poate fi specificată o condiție folosind clauza WHERE. În plus, DISTINCT poate fi prefixat la numele unei coloane pentru a indica faptul că vor fi luate în considerare numai valorile unice. În mod implicit, toate valorile sunt luate în considerare (pentru aceasta, puteți specifica în mod specific nu DISTINCT, ci TOATE, dar cuvântul TOATE este opțional).

    Exemplul 1 Există o bază de date a companiei cu date despre departamentele și angajații acesteia. Tabelul Personal are, de asemenea, o coloană cu date despre salariul angajaților. Selecția din tabel are următoarea formă (pentru a mări imaginea, faceți clic pe ea cu butonul stâng al mouse-ului):

    Pentru a obține suma tuturor salariilor, utilizați următoarea interogare:

    SELECTAȚI SUMA (Salariu) FROM Personal

    Această interogare va returna valoarea 287664.63.

    Si acum . În exerciții, începem deja să complicăm sarcinile, apropiindu-le de cele întâlnite în practică.

    Funcția SQL MIN

    Funcția SQL MIN operează și pe coloanele ale căror valori sunt numere și returnează minimul tuturor valorilor din coloană. Această funcție are o sintaxă similară cu cea a funcției SUM.

    Exemplul 3 Baza de date și tabelul sunt aceleași ca în exemplul 1.

    Este necesar să aflați salariul minim pentru angajații departamentului numărul 42. Pentru a face acest lucru, scrieți următoarea interogare:

    Interogarea va returna valoarea 10505.90.

    Și din nou exercițiu pentru autodeterminare. În acest exercițiu și în alte câteva exerciții, veți avea nevoie nu numai de tabelul Staff, ci și de tabelul Org care conține date despre diviziile companiei:


    Exemplul 4 Tabelul Org este adăugat la tabelul Staff, care conține date despre diviziile companiei. Indică numărul minim de ani în care un singur angajat a lucrat într-un departament situat în Boston.

    Funcția SQL MAX

    Funcția SQL MAX funcționează în mod similar și are o sintaxă similară, care este utilizată atunci când doriți să determinați valoarea maximă dintre toate valorile unei coloane.

    Exemplul 5

    Este necesar să aflați salariul maxim al angajaților departamentului numărul 42. Pentru a face acest lucru, scrieți următoarea interogare:

    Interogarea va returna valoarea 18352.80

    Este timpul exerciții de autodeterminare.

    Exemplul 6 Din nou lucrăm cu două mese - Staff și Org. Afișează numele departamentului și suma maximă de comisioane primite de un angajat din departamentul care aparține grupului de departamente (Divizia) Est. Utilizare JOIN (aderarea la mese) .

    Funcția SQL AVG

    Ceea ce sa spus despre sintaxa pentru funcțiile descrise anterior este adevărat și despre funcția SQL AVG. Această funcție returnează media tuturor valorilor dintr-o coloană.

    Exemplul 7 Baza de date și tabelul sunt aceleași ca în exemplele anterioare.

    Să fie necesar să se afle durata medie de muncă a angajaților din departamentul numărul 42. Pentru a face acest lucru, scriem următoarea interogare:

    Rezultatul va fi 6,33

    Exemplul 8 Lucrăm cu o singură masă - Personal. Afiseaza salariul mediu al angajatilor cu experienta de la 4 la 6 ani.

    Funcția SQL COUNT

    Funcția SQL COUNT returnează numărul de înregistrări dintr-un tabel de bază de date. Dacă specificați SELECT COUNT(COLUMNAME) ... în interogare, atunci rezultatul va fi numărul de înregistrări fără a lua în considerare acele înregistrări în care valoarea coloanei este NULL (nedefinită). Dacă utilizați un asterisc ca argument și începeți o interogare SELECT COUNT(*) ..., rezultatul va fi numărul tuturor înregistrărilor (rândurilor) din tabel.

    Exemplul 9 Baza de date și tabelul sunt aceleași ca în exemplele anterioare.

    Vrei să știi numărul tuturor angajaților care primesc comisioane. Numărul de angajați ale căror valori ale coloanei Comm nu sunt NULL va returna următoarea interogare:

    SELECTARE NUMĂR (Comm) FROM Staff

    Rezultatul va fi valoarea 11.

    Exemplul 10 Baza de date și tabelul sunt aceleași ca în exemplele anterioare.

    Dacă doriți să aflați numărul total de înregistrări din tabel, atunci utilizați interogarea cu un asterisc ca argument pentru funcția COUNT:

    SELECTAȚI NUMĂRUL (*) DIN Personal

    Rezultatul va fi valoarea 17.

    Următorul exercițiu pentru autodeterminare trebuie să utilizați o subinterogare.

    Exemplul 11. Lucrăm cu o singură masă - Personal. Afișați numărul de angajați din departamentul Plains.

    Funcții agregate cu SQL GROUP BY

    Acum să ne uităm la utilizarea funcțiilor agregate împreună cu clauza SQL GROUP BY. Clauza SQL GROUP BY este utilizată pentru a grupa valorile rezultate pe coloane într-un tabel al bazei de date. Site-ul are lectie dedicata acestui operator separat .

    Exemplul 12. Există o bază de date portal de anunțuri. Are un tabel de anunțuri care conține date despre anunțurile care au fost trimise pentru săptămână. Coloana Categorie conține date despre categorii mari de anunțuri (de exemplu, Imobiliare), iar coloana Piese conține date despre părți mai mici incluse în categorii (de exemplu, părțile Apartamente și Vile fac parte din categoria Imobiliare). Coloana Unități conține date despre numărul de anunțuri trimise, iar coloana Bani conține suma de bani câștigată pentru trimiterea anunțurilor.

    CategorieparteUnitățiBani
    TransportVehicule cu motor110 17600
    ImobiliareApartamente89 18690
    ImobiliareDachas57 11970
    TransportMotociclete131 20960
    materiale de construcțiiScânduri68 7140
    Inginerie Electricătelevizoare127 8255
    Inginerie ElectricăFrigidere137 8905
    materiale de construcțiiRegips112 11760
    Timp liberCărți96 6240
    ImobiliareAcasă47 9870
    Timp liberMuzică117 7605
    Timp liberJocuri41 2665

    Folosind clauza SQL GROUP BY, găsiți suma de bani generată prin trimiterea anunțurilor din fiecare categorie. Scriem următoarea interogare:

    SELECTARE Categoria, SUMA (Bani) CA Bani FROM Anunțuri GROUP BY Category

    Exemplul 13 Baza de date și tabelul sunt aceleași ca în exemplul anterior.

    Folosind clauza SQL GROUP BY, aflați care parte din fiecare categorie a avut cele mai multe anunțuri. Scriem următoarea interogare:

    SELECT Category, Part, MAX (Unități) AS Maximum FROM Ads GROUP BY Category

    Rezultatul va fi următorul tabel:

    Valorile totale și individuale într-un singur tabel pot fi obținute combinarea rezultatelor interogării folosind operatorul UNION .

    Baze de date relaționale și limbaj SQL

    În acest tutorial, veți învăța cum creați și ștergeți funcții în SQL Server(Transact-SQL) cu sintaxă și exemple.

    Descriere

    În SQL Server, o funcție este un program stocat căruia îi puteți transmite parametri și returna o valoare.

    Creare funcție

    Puteți crea propriile funcții în SQL Server (Transact-SQL). Să aruncăm o privire mai atentă.

    Sintaxă

    Sintaxa funcțiilor în SQL Server (Transact-SQL):

    CREATE FUNCTION nume_funcție
    ([ @parametru [ AS ] tip de date
    [ = implicit ] [ READONLY ]
    , @parametru [AS] tip de date
    [ = implicit ] [ READONLY ] ]
    RETURNS return_datatype
    [ CU ( CRIPTARE
    | SCHEMA BINDING
    | RĂTOARE NUL LA INTRARE NUL
    | APELAT PE INTRARE NUL
    | EXECUTE AS clauza]
    [ LA FEL DE ]
    ÎNCEPE
    executabil_section
    RETURN return_value
    SFÂRŞIT;

    Opțiuni sau Argumente

    schema_name este numele schemei căreia îi aparține această funcție.
    function_name este numele functiei din SQL Server.
    @parameter - unul sau mai mulți parametri care sunt trecuți funcției.
    type_schema_name este schema care deține tipul de date, dacă este cazul.
    tip de date - tip de date pentru @parametru .
    default este valoarea implicită de atribuit parametrului @parameter.
    READONLY - asta înseamnă că @parameter nu poate fi suprascris de funcție.
    return_datatype este tipul de date al valorii returnate a funcției.
    CRIPTARE - Aceasta înseamnă că sursa funcției nu va fi stocată ca text simplu în vizualizările sistemului SQL Server.
    SCHEMABINDING - Aceasta înseamnă că obiectele subiacente nu pot fi modificate pentru a afecta funcția.
    RETURNS NULL ON NULL INPUT - Aceasta înseamnă că funcția va returna NULL dacă vreun parametru este NULL fără a fi nevoie să executați funcția.
    CALL ON NULL INPUT - aceasta înseamnă că funcția va fi executată chiar dacă orice parametri este NULL.
    EXECUTE AS - Setează contextul de securitate pentru executarea funcției.
    return_value este valoarea returnată de funcție.

    Exemplu

    Să ne uităm la un exemplu de creare a unei funcții în SQL Server (Transact-SQL).
    Mai jos este un exemplu simplu de funcție:

    Transact SQL

    CREATE FUNCTION ReturnSite (@site_id INT) RETURNĂ VARCHAR(50) AS BEGIN DECLARE @site_name VARCHAR(50); DACA @site_id< 10 SET @site_name = "yandex.com"; ELSE SET @site_name = "google.com"; RETURN @site_name; END;

    CREATE FUNCTION ReturnSite

    (@site_id INT )

    RETURNĂ VARCHAR(50)

    ÎNCEPE

    DECLARE @site_name VARCHAR(50) ;

    DACA @site_id< 10

    SET @site_name = "yandex.com" ;

    ALTE

    SET @site_name = "google.com" ;

    RETURN @ nume_site ;

    SFÂRŞIT ;

    Această funcție se numește ReturnSite. Are un parametru numit @site_id , care este un tip de date INT. Funcția returnează valoarea VARCHAR(50) specificată în clauza RETURNS.
    Puteți apoi să vă referiți la noua funcție ReturnSite astfel.

    Funcțiile sunt un tip special de comandă în setul de comenzi SQL și fiecare dialect are propria sa implementare a setului de comenzi. Ca rezultat, putem spune că funcțiile sunt comenzi formate dintr-un cuvânt și care returnează o singură valoare. Valoarea unei funcții poate depinde de parametrii de intrare, cum ar fi în cazul unei funcții care calculează media unei liste de valori dintr-o bază de date. Cu toate acestea, multe funcții nu iau niciun parametru de intrare, de exemplu, funcția care returnează ora curentă a sistemului este CURRENTJ1ME.

    Standardul ANSI acceptă mai multe caracteristici utile. Acest capitol oferă o descriere a acestor caracteristici, precum și descrieri detaliate și exemple pentru fiecare platformă. În plus, fiecare platformă are o listă lungă de funcții interne proprii, care depășesc standardul SQL. Acest capitol oferă parametri și descrieri ale tuturor funcțiilor interne ale fiecărei platforme.

    În plus, majoritatea platformelor au capacitatea de a crea funcții personalizate. Pentru mai multe informații despre funcțiile definite de utilizator, consultați secțiunea Instrucțiuni CREATE/ALTER FUNCTION/PROCEDURE.

    Tipuri de funcții

    Există diferite moduri de a clasifica funcțiile. Următoarele subsecțiuni descriu diferențele importante pentru a vă ajuta să înțelegeți cum funcționează funcțiile.

    Funcții deterministe și nedeterministe

    Funcțiile pot fi deterministe sau nedeterministe. O funcție deterministă returnează întotdeauna același rezultat pentru același set de valori de intrare. Funcțiile nedeterministe pot returna rezultate diferite la apeluri diferite, chiar dacă li se dau aceleași valori de intrare.

    De ce este atât de important ca aceleași intrări să producă aceleași rezultate? Acest lucru este important deoarece definește modul în care funcțiile sunt utilizate în vizualizări, funcțiile definite de utilizator și procedurile stocate. Restricțiile variază în funcție de platformă, dar uneori doar funcții deterministe pot fi utilizate în aceste obiecte. De exemplu, SQL Server poate crea un index pe o expresie pe o coloană, atâta timp cât expresia nu conține funcții nedeterministe. Regulile și restricțiile variază de la platformă la platformă, așa că vă rugăm să consultați documentația producătorului atunci când utilizați funcțiile.

    Funcții agregate și scalare

    O altă modalitate de a clasifica funcțiile este prin capacitatea lor de a opera numai pe un singur șir, sau pe o colecție de valori sau pe seturi de șiruri. Funcțiile agregate operează pe o colecție de valori și returnează o singură valoare totală. Funcțiile scalare returnează o singură valoare, în funcție de argumentele de intrare scalare. Unele funcții scalare, cum ar fi CURRENTJTIME, nu necesită argumente.

    Funcțiile ferestrei

    Funcțiile ferestre pot fi considerate similare cu funcțiile agregate prin faptul că pot opera pe mai multe rânduri simultan. Diferența constă în modul în care sunt specificate aceste linii. Funcțiile agregate operează pe seturi de rânduri specificate în clauza GROUP BY. În cazul funcțiilor ferestre, setul de rânduri este specificat cu fiecare apel de funcție, iar apelurile de funcție diferite din cadrul aceleiași interogări pot funcționa pe seturi de rânduri diferite.