Ce este o Masă Comună de Exprimare

Un Tabel Comun de Exprimare, de asemenea, numit ca CTE în formă scurtă, este o temporar pe nume set de rezultate care aveți posibilitatea de referință într-un SELECT, INSERT, UPDATE, sau DELETE. CTE poate fi, de asemenea, utilizat într-o vizualizare. în acest articol, vom vedea în detaliu despre cum să creați și să utilizați CTEs de pe serverul nostru SQL.,

sintaxă și exemple pentru expresii comune de tabel

interogarea CTE începe cu un „cu” și este urmată de numele expresiei. Vom folosi acest nume de Expresie în interogarea noastră select pentru a afișa rezultatul interogării noastre CTE și pentru a scrie definiția interogării noastre CTE.,

1
2
3
4
5

WITH expression_name ) ]
AS
( CTE_query_definition )

To view the CTE result we use a Select query with the CTE expression name.,r

1
2
3

Select * from expression_name

Common Table Expression (CTE) Types

There are two types of CTEs: Recursive and Non-Recursive

Non-Recursive CTEs

Non-Recursive CTEs are simple where the CTE doesn’t use any recursion, or repeated processing in of a sub-routine., Vom crea un simplu CTE non-recursiv pentru a afișa numărul rândului de la 1 la 10.

conform sintaxei CTE fiecare interogare CTE va începe cu un „cu” urmat de numele expresiei CTE cu lista de coloane.

aici am folosit doar o coloană ca ROWNO. Următoarea este partea de interogare, aici scriem interogarea selectată pentru a fi executată pentru CTE. După crearea interogării noastre CTE pentru a rula CTE, utilizați instrucțiunea select cu numele expresiei CTE.

ieșire: când rulăm interogarea, putem vedea ieșirea de mai jos.,

CTE Recursive

CTE Recursive sunt utilizați bucle procedurale repetate aka recursivitate. Interogarea recursiv se numesc până când interogarea îndeplinită condiția. Într-un CTE recursiv ar trebui să oferim o condiție unde să terminăm recursivitatea.:

vom vedea cum se creează o interogare recursivă simplă pentru a afișa numărul rândului de la 1 la 10 folosind un CTE.

în primul rând declarăm variabila întreagă ca ” RowNo „și setăm valoarea implicită ca 1 și am creat prima noastră interogare CTE ca nume de Expresie,”ROWCTE”., În CTE-ul nostru vom afișa mai întâi numărul rândului implicit și apoi vom folosi o uniune toate pentru a crește și afișa numărul rândului 1 cu unul până când rândul nu atinge valoarea incrementată la 10. Pentru a vizualiza rezultatul, vom folosi o interogare select pentru a afișa rezultatul nostru CTE.,/div>

7
8
9
10
11
12
13
Ateste @RowNo int =1;
;cu ROWCTE ca
(
SELECTAȚI @RowNo ca ROWNO
UNION ALL
SELECTAȚI ROWNO+1
DE la ROWCTE
UNDE RowNo < 10
)
SELECT * FROM ROWCTE

Ieșire: Când vom rula o interogare, putem vedea mai jos de ieșire.,

CTE Interogare pentru a afișa Intervalul de date:

Să considerăm ca există un scenariu pentru a afișa data de la data de începere la data de sfârșit toți, unul câte unul după fiecare rând cu detalii. Pentru a afișa datele recursive, vom folosi interogarea CTE. aici vom scrie o interogare CTE pentru a afișa intervalul de date cu numărul săptămânii și ziua. Pentru aceasta am setat data de început și de sfârșit în parametru. Aici, în acest exemplu, am folosit getdate () pentru a seta data de începere ca data de astăzi, iar pentru data de încheiere adăugăm 16 zile de astăzi.,

CTE fără uniune toate

aici putem vedea că am creat o interogare CTE simplă pentru a afișa numărul RowNo, data începerii și numărul săptămânii. Când vom rula acest lucru vom obține doar un singur rezultat cu RowNo ca „1”, StartDate ca data curentă și numărul săptămânii, împreună cu ziua săptămânii.

ieșire: când rulăm interogarea, putem vedea ieșirea de mai jos.,

CTE cu Uniunea Toate

pentru a afișa rezultatul de la data de începere la data de sfârșit unul câte unul ca recursiv, vom folosi o Uniune Tot pentru a incrementa RowNo, pentru a adăuga zi, unul câte unul până când condiție îndeplinită intervalul de date, în scopul de a opri recursivitate avem nevoie de a stabili unele condiții. În acest exemplu, repetăm recursivitatea pentru a afișa înregistrările noastre până când Data este mai mică sau egală cu data de încheiere.

ieșire: când rulăm interogarea, putem vedea ieșirea de mai jos.,

multiple CTE

În unele scenarii, trebuie să creăm mai multe interogări CTE și să le alăturăm pentru a afișa rezultatul nostru. În acest caz, putem folosi mai multe CTEs. Putem crea o interogare CTE multiplă și le putem combina într-o singură interogare folosind virgula. CTE Multiple trebuie să fie separate prin”, ” virgulă cu numele CTE.

Vom folosi de mai sus același interval de exemplu, pentru a utiliza mai mult de un CTE interogare, aici putem vedea ca ne-am creat două CTE interogare ca CTE1 și CTE 2 la interval de afișare rezultatul atât pentru CTE1 și pentru CTE2.,

exemplu:

ieșire: când rulăm interogarea, putem vedea ieșirea de mai jos.

Utilizarea CTE interogare SQL Masă

Acum să vedem cum să folosiți CTE interogare pentru SQL server tabelul de date.,

Creare de baze de Date: în Primul rând, vom crea o bază de date pentru crearea de masa noastră

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

UTILIZARE MASTER
GO
— 1) Verificați pentru Date Există .,În cazul în care baza de date este Exista apoi picătură și de a crea noi DB
dacă există (selectați din sys.baze de date în cazul în CARE = ‘CTEDB’ )
DROP DATABASE CTEDB
GO
CREARE de baze de DATE CTEDB
GO
UTILIZAREA CTEDB
GO

create Table: Acum vom crea un eșantion Element de Tabelul pe care l-a creat baza de Date.

introduceți date de probă: vom introduce câteva înregistrări de probă pentru utilizarea în interogarea noastră CTE.,

exemplu CTE:

acum vom crea un rezultat temporar simplu folosind interogarea CTE. Aici, în această interogare CTE, am dat numele expresiei ca „itemCTE” și am adăugat lista coloanelor pe care le folosim în interogarea CTE. În interogarea CTE afișăm toate detaliile articolului cu anul.

ieșire: când rulăm interogarea, putem vedea ieșirea de mai jos.

CTE folosind Uniunea toate

să considerăm că există o mai jos două scenarii pentru a afișa rezultatul.

  1. primul scenariu este de a afișa prețul fiecărui element din anul curent.,
  2. al doilea scenariu este creșterea cu 10% a prețului fiecărui articol pentru anul viitor. pentru aceasta folosim interogarea CTE de mai sus. În această interogare, vom adăuga Uniunea toate și în Uniunea toate interogare facem calcul pentru a adăuga 10% la fiecare preț element și arată în rândul următor cu adăugarea de un an.

    ieșire: când rulăm interogarea, putem vedea ieșirea de mai jos.

    expresii comune de masă (CTE) pentru Inserare

    acum vom vedea cum să inserați rezultatul CTE într-un alt tabel. Pentru aceasta, să luăm în considerare tabelul de mai sus., Introducem rezultatul detaliilor articolului din interogarea CTE de mai sus în tabelul istoricului articolului. Pentru aceasta mai întâi vom crea un tabel de Istorie element.

    Creare tabel istoric articol: în acest tabel istoric, adăugăm aceleași coloane ca tabel articol împreună cu coloana Marketetrate ca preț articol prezent sau viitor. Iată interogarea pentru a crea un Elementhistory table.

    CTE Inserare exemplu:

    aici vom folosi mai sus aceeași interogare CTE introduceți rezultatul în tabelul de Istorie element. Din această interogare inserăm ambele detalii ale articolului din anul curent prețul articolului împreună cu prețurile articolului din anul următor adăugate cu 10% mai mult.,

    ieșire: când rulăm interogarea, putem vedea ieșirea de mai jos, deoarece 30 de înregistrări au fost introduse în tabelul nostru de istoric al articolelor.

    selectați interogare:

    pentru a vizualiza rezultatul istoricului articolului, selectăm și afișăm toate detaliile.,

    1
    2
    3

    select * from ItemHistory

    Ieșire: Când vom rula o interogare, putem vedea mai jos, de ieșire din elementul de masă de istorie.

    creați vizualizarea cu exemplul CTE:

    acum vedem cum se utilizează interogarea CTE de mai sus poate fi utilizată într-o vizualizare., Aici creăm o vizualizare și adăugăm rezultatul CTE în interiorul vizualizării. Când selectăm vizualizarea ca rezultat, putem vedea că va fi afișată ieșirea CTE.

    exemplu de interogare:

    ieșire: când rulăm interogarea, putem vedea ieșirea de mai jos ca rezultat din Vizualizare.

    cum se scrie o interogare CTE curată:

    iată câteva linii directoare de bază care trebuie urmate pentru a scrie o interogare CTE bună.

    1. un CTE trebuie să fie urmat de o singură instrucțiune SELECT, INSERT, UPDATE sau DELETE care face referire la unele sau la toate coloanele CTE.,
    2. mai multe definiții de interogare CTE pot fi definite într-un CTE non-recursiv.
    3. O CTE poate referință în sine și definite anterior CTEs în același lucru CU clauza
    4. putem folosi doar unul Cu Clauză într-o CTE
    5. PENTRU DE, ÎN, CALCULA sau CALCULA PRIN, OPȚIUNE, PENTRU XML nu poate fi utilizat în non-recursive CTE interogare de definiție
    6. SELECT DISTINCT, GROUP BY, HAVING, Scalar agregare, SUS, STÂNGA, DREAPTA, OUTER JOIN (INNER JOIN este permis) subinterogari nu poate fi folosit într-un recursiv CTE interogare de definiție.,

    concluzie

    CTEs poate fi folosit pentru a crea o interogare recursivă și poate fi folosit pentru a se referi de mai multe ori. CTEs poate fi folosit în loc de vizualizări și în cele din urmă un CTE este ușor și simplu pentru lizibilitate și mentenabilitate Cod.

    • Autor
    • Mesajele Recente
    Syed Shanu este o Microsoft MVP, de două ori CsharpCorner MVP și de două ori Codul proiectului MVP, Autor, Blogger, Vorbitor și întotdeauna fericit să împărtășească ceea ce știe de la alții.,
    este practic din Madurai, Tamil Nadu, India. Lucrează ca lider tehnic în Coreea de Sud, cu mai mult de 10 ani de experiență în tehnologiile Microsoft.
    Shanu este activă în comunitate și întotdeauna fericit pentru a partaja teme legate de ASP.NET, MVC, ASP.NET de Bază, Web API, SQL Server, UWP, Azure, C#, AngularJs, Angular2. El a scris mai mult de 70 de articole cu diverse tehnologii pe ASP.NET, SQL Server, C#, AngularJs, Angular2, ASP.NET de Bază, Unity 3D, Windows App Universal și Samsung Gear de dezvoltare App., El este de mai multe ori TechNet Guru de Aur Câștigător și puteți găsi toate contribuția sa în MSDN și, de asemenea, în TechNet Wiki https://social.technet.microsoft.com/profile/syedshanu/
    El este, de asemenea, un Autor de carte electronică „Interogări SQL Pentru Incepatori”, puteți descărca eBook de aici: http://www.c-sharpcorner.com/ebooks/sql-queries-for-beginners.,
    Vezi toate posturile de Syed Shanu

    Ultimele posturi de Syed Shanu (vezi toate)
    • SQL Server Masă Comună Expresii (CTE) – 23 februarie 2017
    • Crearea unui „inteligent” de declanșare bazate pe pista de audit pentru SQL Server – 12 decembrie, 2016