Добрый вечер, друзья ... Сегодня мы узнаем о выражении Common table, которое является новой функцией, которая была введена в SQL Server 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')
Я создал две таблицы employee и 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, мы пишем предложение «with», затем присваиваем имя табличному выражению, здесь я дал имя как «CTE_Example»
Затем мы пишем «As» и заключаем наш код в две скобки (---), мы можем объединить несколько таблиц в заключенные в скобки.
В последней строке я использовал «Select * from CTE_Example», мы ссылаемся на общее табличное выражение в последней строке кода, поэтому мы можем сказать, что это как представление, где мы определяем и используем представление в одной партии и 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.
Я надеюсь, что эта статья будет вам полезна, и вы сможете использовать CTE, когда сочтете это подходящим.