SQLShack (Română)

0 Comments

Acest articol va oferi o scufundare adânc în SQL Uniunii operator, descrie numeroasele sale utilizări, împreună cu exemple și de a explora unele întrebări comune cum ar fi diferențele între Uniune vs Union All.pentru a răspunde cerințelor privind datele din lumea reală, este posibil să fie necesar să combinăm seturi de rezultate din mai multe surse de date, astfel încât să putem face analize de date sau să creăm noi seturi de date. Seturile de date pot fi identice, dar există șanse ca acestea să facă referire la tabele diferite., Există o modalitate de a combina datele într-o singură interogare? Sunt operatorii setați o opțiune viabilă? Să începem și să vedem cum pot fi folosiți unii dintre operatorii existenți pentru a ne ajuta să abordăm aceste provocări comune.,n vs Union All

  • SQL Operator Sintaxa
  • Cum să utilizați simplu SQL Uniunii clauza select
  • Cum să utilizați SQL Uniunii cu interogările care au clauza where
  • Cum să utilizați SELECTAȚI ÎN clauza cu Uniunea
  • Cum să utilizați SQL Uniunii cu întrebări care au o clauza where și clauza order by
  • Cum să utilizați SQL Uniunii și SQL Pivot
  • Cum să utilizați SQL Uniunea cu GRUPUL și AVÂND clauze
  • Operatorii

    Un operator este un simbol sau un cuvânt cheie care definește o acțiune care se realizează pe unul sau mai multe expresii în Select.,

    Set Operator

    Să intrăm în detalii Set de Operatori în SQL Server, și cum să le folosească

    Există patru Set de bază de Operatori în SQL Server:

    1. Uniunea
    2. Uniunea Toate
    3. DOAR
    4. se INTERSECTEAZĂ

    Uniune

    Uniunea operator combină rezultatele a două sau mai multe interogări într-o distinct singur set de rezultate care include toate rândurile care aparțin toate interogările în Uniune. În această operație, combină încă două interogări și elimină duplicatele.,

    de exemplu, tabelul ” A „are 1,2 și 3, iar tabelul” B ” are 3,4,5.,

    UNIUNE
    SELECTAȚI 2
    UNIUNE
    SELECTAȚI 3
    )
    UNIUNE
    (
    SELECTAȚI 3
    UNIUNE
    SELECTAȚI 4
    UNIUNE
    SELECTAȚI 5
    );

    În producția, puteți vedea o listă separată a înregistrărilor din cele două seturi de rezultate

    Union All

    atunci Când se uită la Uniunea vs Uniunea Toate vom găsi ele sunt destul de similare, dar au unele diferențe importante de la un rezultate de performanță perspectivă., operatorul Uniunii combină rezultatele a două sau mai multe interogări într-un singur set de rezultate care include toate rândurile care aparțin tuturor interogărilor din Uniune. În termeni simpli, combină cele două sau mai multe seturi de rânduri și păstrează duplicate.

    de exemplu, tabelul ” A „are 1,2 și 3, iar tabelul” B ” are 3,4,5.,iv>

    7
    8
    9
    10
    11
    12
    13
    14
    15
    (
    SELECTAȚI 1 ID
    UNIUNE
    SELECTAȚI 2
    UNIUNE
    SELECTAȚI 3
    )
    UNION ALL
    (
    SELECTAȚI 3
    UNIUNE
    SELECTAȚI 4
    UNIUNE
    SELECTAȚI 5
    );

    la ieșire, puteți vedea toate rândurile care includ repetarea înregistrări la fel de bine.,>4

    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    (
    SELECTAȚI 1 ID
    UNIUNE
    SELECTAȚI 2
    UNIUNE
    SELECTAȚI 3
    )
    intersect fiecare
    (
    SELECTAȚI 3
    UNIUNE
    SELECTAȚI 4
    UNIUNE
    SELECTAȚI 5
    );

    rand ‘3’ este comun între cele două seturi de rezultate.,

    cu excepția

    operatorul cu excepția listează rândurile din primul care nu sunt în al doilea.,/div>

    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    (
    SELECTAȚI 1
    UNIUNE
    SELECTAȚI 2
    UNIUNE
    SELECTAȚI 3
    )
    DOAR
    (
    SELECTAȚI 3 B
    UNIUNE
    SELECTAȚI 4
    UNIUNE
    SELECTAȚI 5
    );

    Lista de nume comune randuri din primul set.,

    Notă: este foarte ușor de a vizualiza un set operator folosind o diagramă Venn, în cazul în care fiecare dintre tabele este reprezentată de intersectare forme. Intersecțiile formelor, unde tabelele se suprapun, sunt rândurile în care este îndeplinită o condiție.,olumns care sunt definite în fiecare interogare trebuie să aibă același ordin

  • Ulterioare declarație SQL rând seturi trebuie să se potrivească tipul de date de prima interogare
  • Paranteze sunt permise de a construi un alt set de operatori în aceeași declarație
  • E posibil să aibă o clauză ORDER BY, dar asta ar trebui să fie ultima declarație de SQL
  • clauze GROUP BY si HAVING poate fi aplicat individual de interogare
  • Notă:

    1. Toate aceste Set de operatori elimina duplicate, cu excepția Uniunii de Toate operatorul
    2. coloana De ieșire nume sunt menționate la prima interogare nu.,e. când vom rula SELECT declarații cu oricare dintre operatorii de Set și rezultat set de fiecare dintre interogări pot avea nume diferite coloane, astfel încât rezultatul SELECT declarație se referă numele coloanelor de la prima interogare în operațiunea.
    3. SQL JOIN este mai des folosit combina coloane din mai multe tabele conexe întrucât operatorii SET combină rânduri din mai multe tabele.,
    4. atunci Când expresia tipuri sunt la fel, dar diferă în precizie, la scară, sau de durata, rezultatul este determinat pe baza acelorași reguli pentru combinarea expresiilor

    Exemple:

    următoarele T-SQL interogări sunt pregătite și a alerga împotriva Adventureworks2014 baza de date. Puteți descărca proba AdventireWorks2014 baza de date de aici

    1. Cum să utilizați simplu SQL Uniunii clauza select

      În acest exemplu, rezultatul setul include un set distinct de rânduri din primul set si al doilea set.,Următorul exemplu se bazează pe regula 1, 3 & 5.,

      SELECTAȚI 1
      UNIUNE
      SELECTAȚI 2
      UNIUNE
      SELECTAȚI 3
      )
      UNIUNE
      (
      SELECTAȚI 3 B
      UNIUNE
      SELECTAȚI 4
      UNIUNE
      SELECTAȚI 5
      )
      UNION ALL
      (
      SELECTAȚI 8 c
      UNIUNE
      SELECTAȚI 9
      UNIUNE
      SELECTAȚI 1
      )
      ) T;

      rezultatul este o combinație de Uniune și unirea Tuturor operatorilor folosind paranteze.,

    2. Cum să utilizați SQL Uniunii cu interogările care au clauza where

      următorul exemplu arată utilizarea Uniunii în două declarațiile SELECT cu clauza where și clauza ORDER BY.,

      The following example is based on the rule 1,2 and 3

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10

      SELECT P1.ProductModelID,
      P1.Name
      FROM Production.ProductModel P1
      WHERE ProductModelID IN(3, 4)
      UNION
      SELECT P2.ProductModelID,
      P2.,Nume
      din producție.ProductModel P2
      unde P2.ProductModelID ÎN(3, 4)
      COMANDA PRIN P1.Nume;

    3. Cum să utilizați SELECTAȚI ÎN clauza cu SQL Uniunii

      următorul exemplu creează un nou dbo.tabelul dummy folosind clauza INTO din prima instrucțiune SELECT care conține setul de rezultate finale al Uniunii coloanelor ProductModel și name din două seturi de rezultate diferite., În acest caz, este derivat din același tabel, dar într-o situație din lumea reală, aceasta poate fi, de asemenea, două tabele diferite. Următorul exemplu se bazează pe regula 1 , 2 și 4.

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16

      DROP TABLE DACĂ EXISTĂ dbo.,dummy;
      SELECT P1.ProductModelID,
      P1.Name
      INTO dummy
      FROM Production.ProductModel P1
      WHERE ProductModelID IN(3, 4)
      UNION
      SELECT P2.ProductModelID,
      P2.Name
      FROM Production.ProductModel P2
      WHERE P2.ProductModelID IN(3, 4)
      ORDER BY P1.Name;
      GO
      SELECT *
      FROM dbo.,Dummy;

    4. Cum să utilizați SQL Uniunii cu întrebări care au o clauza where și clauza ORDER BY

      Acest lucru este posibil numai atunci când vom folosi de SUS sau de funcții agregate în fiecare select al Uniunii operator. În acest caz, primele 10 rânduri sunt listate din fiecare set de rezultate și combinate rândurile folosind clauza Union pentru a obține un rezultat final. De asemenea, vedeți că clauza comandă după este plasată în toată instrucțiunea select.,

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21

      SELECTAȚI.ModelID,
      la.,Name
      FROM
      (
      SELECT TOP 10 ProductModelID ModelID,
      Name
      FROM Production.ProductModel
      WHERE ProductModelID NOT IN(3, 4)
      ORDER BY Name DESC
      ) a
      UNION
      SELECT b.ProductModelID,
      b.Name
      FROM
      (
      SELECT TOP 10 ProductModelID,
      Name
      FROM Production.,ProductModel
      UNDE ProductModelID IN(5, 6)
      ORDER BY Nume DESC
      ) b;

    5. Cum să utilizați SQL Uniunii și SQL Pivot

      În exemplul următor, suntem încercarea de a combina mai mult de un set de rezultate. Într-o situație reală, este posibil să aveți numere financiare din diferite regiuni sau departamente, iar tabelele ar putea avea aceleași coloane și tipuri de date, dar doriți să le puneți într-un set de rânduri și într-un singur raport., Într-un astfel de scenariu, ați folosi clauza Uniunii și este foarte ușor să combinați rezultatele și să transformați datele într-un raport mai semnificativ.

      în acest exemplu, modelul de produs este clasificat în Top10, Top100, Top 100 și transformă rândurile ca un set agregat de valori în coloanele respective. Următorul exemplu se bazează pe regula 2.,/div>

      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      SELECT MAX(Top10) Top10,
      MAX(Top100) Top100,
      MAX(Top1000) Top100
      DE
      (
      SELECT COUNT(*) Top10,
      0 Top100,
      0 Top1000
      DE Producție.,ProductModel
      WHERE ProductModelID < 10
      UNION
      SELECT 0,
      COUNT(*),
      0
      FROM Production.ProductModel
      WHERE ProductModelID > 11
      AND ProductModelID < 100
      UNION
      SELECT 0,
      0,
      COUNT(*)
      FROM Production.,ProductModel
      UNDE ProductModelID > 101
      ) T;

      NULL valori sunt foarte importante cu Setul de Operatori și sunt tratate ca la clasa a doua baza de date a cetățenilor. Deoarece nul – urile sunt considerate unice și dacă două rânduri au un nul în aceeași coloană, atunci ele ar fi considerate identice, deci în acest caz, comparați de fapt un nul cu un nul și obțineți egalitate. În exemplul următor, vedeți utilizarea valorilor nule. În acest caz, este operat cu funcția agregată, max.,

      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      SELECT MAX(Top10) Top10,
      MAX(Top100) Top100,
      MAX(Top1000) Top100
      DE
      (
      SELECT COUNT(*) Top10,
      NULL Top100,
      NULL Top1000
      DE Producție.,ProductModel
      WHERE ProductModelID < 10
      UNION
      SELECT NULL,
      COUNT(*),
      NULL
      FROM Production.ProductModel
      WHERE ProductModelID > 11
      AND ProductModelID < 100
      UNION
      SELECT NULL,
      NULL,
      COUNT(*)
      FROM Production.,ProductModel
      UNDE ProductModelID > 101
      ) T;

    Cum să utilizați SQL Uniunea cu Grupul și Având clauze

    Următoarele exemple de utilizare a operatorului Union pentru a combina rezultatele din tabel că toate au condiționată de clauze definite folosind Group by si Having clauză.

    numele de familie este analizat prin specificarea condițiilor din clauza having.

    următorul exemplu se bazează pe regula 5.,

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

    SELECTAȚI pp.nume,
    COUNT(*) repeatedtwice,
    0 Repeatedthrice
    DE la Persoana.Persoană ca pp
    Alăturați-vă Humanresurse.Angajat ca e pe e. BusinessEntityID = pp.,BusinessEntityID
    grup de pp.numele de familie
    având numărul(*) = 2
    Uniunea
    selectați pp.Numele de familie,
    0,
    COUNT(*) NtoZRange
    de la persoană.Persoană ca pp
    Alăturați-vă Humanresurse.Angajat ca e pe e. BusinessEntityID = pp.BusinessEntityID
    grup de pp.,Nume
    HAVING COUNT(*) > 2;

    putem vedea că ultimul nume sunt derivate în două coloane diferite, folosind Uniunii operator

    Asta e tot pentru acum…

    Sumar

    Astfel, de departe, ne-am adresat diverse opțiuni disponibile și regulile de utilizare Set de operatori și de a înțelege când să le folosească. Atunci când se determină dacă să utilizeze Uniunea vs Uniunea toate există câteva puncte să ia în considerare., Utilizați Union All dacă știți că seturile de rezultate din mai multe interogări nu se suprapun sau nu generează duplicate și amintiți-vă, dacă trebuie să utilizați paranteze, puteți face asta. De asemenea, puteți pivota și transforma ieșirea.

    doar asigurați-vă că tipurile de date se potrivesc și dacă trebuie să faceți o comandă, faceți-o la sfârșit după ce ați rulat toate aceste interogări setate. Prin natura sa, când vine vorba de Uniune vs Uniune toate, Uniunea toate este mai rapidă decât Uniunea; deoarece operatorii din Uniune suportă cheltuieli suplimentare pentru a elimina duplicatele. sper că v-a plăcut acest articol despre operatorul SQL Union., Simțiți-vă liber să puneți întrebări în comentariile de mai jos.

    • Autor
    • Mesajele Recente
    Am o baza de Date tehnolog având 11+ ani de bogat, experienta hands-on pe baza de Date tehnologii. Sunt Microsoft Certified Professional și susținută cu o diplomă în Master of Computer Application.
    specialitatea mea constă în proiectarea & implementarea soluțiilor de disponibilitate ridicată și migrarea DB multiplă platformă., Tehnologiile care lucrează în prezent sunt SQL Server, PowerShell, Oracle și MongoDB.,
    Vezi toate posturile de Prashanth Jayaram

    Ultimele posturi de Prashanth Jayaram (vezi toate)
    • O privire de ansamblu rapidă a bazei de date de audit în SQL – ianuarie 28, 2021
    • Cum să înființeze Azure de Sincronizare a Datelor între baze de date SQL Azure și local SQL Server – 20 ianuarie 2021
    • Cum de a efectua Azure SQL baze de date de Import/Export, operațiuni folosind PowerShell – 14 ianuarie 2021


    Lasă un răspuns

    Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *