Dzisiaj dowiemy się o Wyrażeniu wspólnej tabeli, która jest nową funkcją, która została wprowadzona w SQL Server 2005 i dostępna również w późniejszych wersjach.
Wspólne wyrażenie tabeli: - Wspólne wyrażenie tabeli można zdefiniować jako tymczasowy zestaw wyników lub innymi słowy jest to zamiennik widoków w programie SQL Server. Wspólne wyrażenie tabelowe jest poprawne tylko w partii instrukcji, w której zostało zdefiniowane, i nie może być używane w innych sesjach.
Składnia deklarującego CTE (wspólne wyrażenie tabelowe): -
with [Name of CTE]
as
(
Body of common table expression
)
Weźmy przykład: -
CREATE TABLE Employee([EID] [int] IDENTITY(10,5) NOT NULL,[Name] [varchar](50) NULL)
insert into Employee(Name) values('Neeraj')
insert into Employee(Name) values('dheeraj')
insert into Employee(Name) values('shayam')
insert into Employee(Name) values('vikas')
insert into Employee(Name) values('raj')
CREATE TABLE DEPT(EID INT,DEPTNAME VARCHAR(100))
insert into dept values(10,'IT')
insert into dept values(15,'Finance')
insert into dept values(20,'Admin')
insert into dept values(25,'HR')
insert into dept values(10,'Payroll')
Utworzyłem dwie tabele pracownik i Dział i wstawiłem 5 wierszy w każdej tabeli. Teraz chciałbym dołączyć do tych tabel i utworzyć tymczasowy zestaw wyników, aby dalej z niego korzystać.
With CTE_Example(EID,Name,DeptName)
as
(
select Employee.EID,Name,DeptName from Employee
inner join DEPT on Employee.EID =DEPT.EID
)
select * from CTE_Example
Weźmy każdy wiersz instrukcji jeden po drugim i zrozummy.
Aby zdefiniować CTE, piszemy klauzulę „with”, a następnie nadajemy nazwę wyrażeniu tabelowemu, tutaj nadałem nazwę jako „CTE_Example”
Następnie piszemy „As” i umieszczamy nasz kod w dwóch nawiasach (---), możemy łączyć wiele tabel w załączonych nawiasach.
W ostatnim wierszu użyłem „Wybierz * z CTE_Example”, odnoszimy się do wyrażenia Common table w ostatnim wierszu kodu, więc możemy powiedzieć, że jest to widok, w którym definiujemy i używamy widoku w jednym partia i CTE nie są przechowywane w bazie danych jako obiekt stały. Ale zachowuje się jak widok. możemy wykonać usunięcie i aktualizację instrukcji CTE, co będzie miało bezpośredni wpływ na tabelę, do której się odnoszą, które są używane w CTE. Weźmy przykład, aby zrozumieć ten fakt.
With CTE_Example(EID,DeptName)
as
(
select EID,DeptName from DEPT
)
delete from CTE_Example where EID=10 and DeptName ='Payroll'
W powyższej instrukcji usuwamy wiersz z CTE_Example i spowoduje to usunięcie danych z przywoływanej tabeli „DEPT”, która jest używana w CTE.