Hari ini kita akan belajar tentang ekspresi tabel umum yang merupakan fitur baru yang diperkenalkan di SQL server 2005 dan tersedia dalam versi yang lebih baru juga.
Ekspresi tabel umum: - Ekspresi tabel umum dapat didefinisikan sebagai hasil sementara yang ditetapkan atau dengan kata lain sebagai pengganti tampilan dalam SQL Server. Ekspresi tabel umum hanya valid dalam kumpulan pernyataan yang didefinisikan dan tidak dapat digunakan dalam sesi lain.
Sintaks menyatakan CTE (ekspresi tabel umum): -
with [Name of CTE]
as
(
Body of common table expression
)
Mari kita ambil contoh: -
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')
Saya telah membuat dua tabel karyawan dan Departemen dan memasukkan 5 baris di setiap tabel. Sekarang saya ingin bergabung dengan tabel ini dan membuat hasil sementara yang diatur untuk menggunakannya lebih lanjut.
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
Mari kita ambil setiap baris pernyataan satu per satu dan mengerti.
Untuk mendefinisikan CTE kita menulis klausa "dengan", lalu kita beri nama untuk ekspresi tabel, di sini saya telah memberikan nama sebagai "CTE_Example"
Kemudian kita menulis "Sebagai" dan melampirkan kode kita dalam dua tanda kurung (---), kita dapat bergabung dengan beberapa tabel dalam tanda kurung terlampir.
Pada baris terakhir, saya telah menggunakan "Select * from CTE_Example", kita merujuk ekspresi tabel Common di baris terakhir kode, Jadi kita dapat mengatakan bahwa ini seperti tampilan, di mana kita mendefinisikan dan menggunakan tampilan dalam satu batch dan CTE tidak disimpan dalam database sebagai objek permanen. Tapi itu berperilaku seperti pandangan. kita dapat melakukan hapus dan perbarui pernyataan pada CTE dan itu akan berdampak langsung pada tabel yang direferensikan yang sedang digunakan dalam CTE. Mari kita ambil contoh untuk memahami fakta ini.
With CTE_Example(EID,DeptName)
as
(
select EID,DeptName from DEPT
)
delete from CTE_Example where EID=10 and DeptName ='Payroll'
Dalam pernyataan di atas kami menghapus baris dari CTE_Example dan itu akan menghapus data dari tabel yang direferensikan "DEPT" yang sedang digunakan dalam CTE.