Сьогодні ми дізнаємось про загальний вираз таблиці, що є новою функцією, яка була представлена на SQL сервері 2005 року та доступна в наступних версіях.
Загальна таблична виразність: - Загальний вираз таблиці може бути визначений як тимчасовий набір результатів або іншими словами його замінник поглядів у SQL Server. Загальний вираз таблиці дійсний лише в пакеті оператора, де він був визначений і не може бути використаний в інших сесіях.
Синтаксис оголошення CTE (загальний вираз таблиці): -
with [Name of CTE]
as
(
Body of common table expression
)
Давайте візьмемо приклад: -
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')
Я створив дві таблиці працівників і Dept і вставив по 5 рядків у кожну таблицю. Тепер я хотів би приєднатися до цих таблиць і створити тимчасовий набір результатів, щоб використовувати його далі.
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
Давайте візьмемо кожен рядок висловлювання по одному і зрозуміємо.
Для визначення CTE ми пишемо "з" пунктом, потім даємо ім'я виразу таблиці, тут я дав ім'я як "CTE_Example"
Тоді ми пишемо "As" і додаємо наш код у дві дужки (---), ми можемо приєднати кілька таблиць у доданих дужках.
В останньому рядку я використав "Select * from CTE_Example", ми маємо на увазі вираз загальної таблиці в останньому рядку коду, тому ми можемо сказати, що це як перегляд, де ми визначаємо і використовуємо подання в єдиному batch і CTE не зберігаються в базі даних як постійний об'єкт. Але він поводиться як погляд. ми можемо виконати операцію видалення та оновлення на CTE, і це матиме прямий вплив на таблицю, на яку посилається, та які використовуються в CTE. Давайте візьмемо приклад, щоб зрозуміти цей факт.
With CTE_Example(EID,DeptName)
as
(
select EID,DeptName from DEPT
)
delete from CTE_Example where EID=10 and DeptName ='Payroll'
У наведеному вище викладі ми видаляємо рядок із CTE_Example, і він видалить дані з посилальної таблиці "DEPT", яка використовується в CTE.