আজ আমরা কমন টেবিল এক্সপ্রেশন সম্পর্কে শিখতে যা এটি একটি নতুন বৈশিষ্ট্য যা এসকিউএল সার্ভার 2005 সালে চালু হয়েছিল এবং পরবর্তী সংস্করণগুলিতেও উপলব্ধ।
সাধারণ সারণী এক্সপ্রেশন: - সাধারণ টেবিল এক্সপ্রেশনটি একটি অস্থায়ী ফলাফল সেট হিসাবে বা অন্য কথায় এটি এসকিউএল সার্ভারে দর্শনের বিকল্প হিসাবে সংজ্ঞায়িত করা যেতে পারে। সাধারণ সারণী প্রকাশটি কেবলমাত্র বিবৃতি ব্যাচে বৈধ যেখানে এটি সংজ্ঞায়িত হয়েছিল এবং অন্যান্য সেশনে ব্যবহার করা যাবে না।
সিটিই ঘোষণার সিনট্যাক্স (সাধারণ সারণী প্রকাশ): -
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')
আমি দুটি টেবিল কর্মচারী এবং ডিপার্টমেন্ট তৈরি করেছি এবং প্রতিটি টেবিলে 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_Example" নাম দিয়েছি
তারপরে আমরা "As" লিখি এবং দুটি কোড বন্ধনী (---) এ আমাদের কোডটি বন্ধ করি, আমরা বদ্ধ বন্ধনীগুলিতে একাধিক টেবিলগুলিতে যোগদান করতে পারি।
শেষ লাইনে, আমি "সিটিE_ উদাহরণ থেকে" নির্বাচন করুন "ব্যবহার করেছি, আমরা কোডের শেষ লাইনে প্রচলিত সারণী প্রকাশটি উল্লেখ করছি, সুতরাং আমরা বলতে পারি যে এটি একটি দৃষ্টিভঙ্গির মতো, যেখানে আমরা সংজ্ঞা দিচ্ছি এবং এককভাবে ব্যবহার করছি ব্যাচ এবং সিটিই স্থায়ী অবজেক্ট হিসাবে ডাটাবেসে সংরক্ষণ করা হয় না। তবে এটি দেখার মতো আচরণ করে। আমরা সিটিইতে মুছে ফেলা এবং আপডেট বিবৃতিটি সম্পাদন করতে পারি এবং এটি সিটিইতে ব্যবহৃত রেফারেন্স টেবিলের উপর সরাসরি প্রভাব ফেলবে। এই বাস্তবতাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক।
With CTE_Example(EID,DeptName)
as
(
select EID,DeptName from DEPT
)
delete from CTE_Example where EID=10 and DeptName ='Payroll'
উপরের বিবৃতিতে আমরা CTE_Example থেকে একটি সারি মুছে ফেলছি এবং এটি সিটিইতে ব্যবহৃত রেফারেন্স টেবিল "ডিইপিটি" থেকে ডেটা মুছে ফেলবে।