সুপ্রিয় বন্ধুরা,
কেমন আছেন সবাই? গত পর্বের ধারাবাহিকতায় আজ আমি আপনাদের সামনে update, delete কোয়ারি এবং join নিয়ে বিস্তারিত আলোচনা করার চেষ্টা করবো। আপনাদের কোন প্রশ্ন থাকলে করবেন। তো চলুন শুরু করি। এস কিউ এল এর সব থেকে important বিষয় হল query আজ সে বিষয়ে বিষদ দেখানোর চেষ্টা করবো, যদি কিছু বাদ পরে যায় পরবর্তী টিউন এ এড করে দেবো।
Update Query:
Syntex:
UPDATE TableName SET ColumnName=value WHERE ID=value
Example:
update myFirstTable set myName='khalil' where myID='107'
Delete Query:
Syntex:
Delete myFirstTable where myID='101'
Example:
Delete TableName Where ID=Value
Select Query:
select * from myFirstTable where mySalary not in (7000,7500,1000)
(আন্ডারলাইন অংশটি লক্ষ করুন, এখানে বোঝানো হয়েছে যাদের salary 700,7500,1000 নয় তাদের information দেখাবে।)
select * from myFirstTable
order by myName
((আন্ডারলাইন অংশটি লক্ষ করুন, order by দ্বারা myName কলামের value গুলোকে এসেন্ডিং আকারে দেখতে পাবো, আর ডিসেন্ডিং আকারে দেখতে হলে নিচে দেখুন...)
select * from myFirstTable
order by myNamedesc
Joining:
Create table category
(
cid int primary key not null,
cName varchar(20)
)
GO
Create Table product
(
pid int primary key not null,
pName varchar(20),
pQuantity int,
pPrice float,
cid int foreign key references category(cid)
)
insert into category values(1,'Computer Parts')
insert into category values(2,'Electronics')
insert into category values(3,'Beverage')
select * from category
insert into product values(1,'mouse',50,250,1)
insert into product values(2,'keyboard',50,500,1)
insert into product values(3,'radio',3,1500,2)
insert into product values(4,'tv',4,45000,2)
insert into product values(5,'monitor',5,22050,1)
insert into product values(6,'hdd',50,5000,1)
insert into product values(7,'fan',3,1500,2)
insert into product values(8,'freez',4,45000,2)
select * from product
(এখানে লক্ষ করুন আমি দুইটি টেবিল তৈরি করেছি, product টেবিল এর শেষ কলামটির সাথে category table এর প্রথম কলামটি মিলে যাচ্ছে, একে বলে relation, product table এ data insert করার সময় কেটাগরি টেবিলের information add করা হয়েছে। আবার ক্যাটাগরি টেবিল থেকে কোন data delete করতে চাইলে আপনাকে ডিলিট করতে দেবে না, কারন এর সাথে অন্য একটি টেবিল (product) connected হয়ে আছে।)
এবার দুটি table এর ভেলু এক সংগে দেখতে হলে এভাবে query লিখতে হবে...
LEFT JOIN :
SELECT C.cName as [Category Name],P.pName as [Product Name],P.pPrice as Price from category C
LEFT JOIN
product P
on
C.cid=P.cid
(এখানে লক্ষ করুন beverage কলামটিতে কোন value নেই, কিন্তু তারপরেও দেখাচ্ছে, অর্থাৎ left join দ্বারা বাম পাশের সব কলাম এবং ডান পাশের শুধু মেচিং কলামগুলো দেখাবে। আরেকটি বিষয় খেয়াল করুন C.cName as [Category Name] কোন কলাম নেম কে যদি আপনি আপনার মত করে দেখতে চান তবে কলাম নেম এর পর as লিখে আপনার পছন্দের নাম টি লিখে দিলেই হবে। আন্ডারলাইন করা অংশটি দেখুন এখানে category table এর cid এর সাথে product table এর cid এর সাথে লিঙ্ক করছে, অর্থাৎ join করতে হলে অবশ্যই দুটি টেবিল এর যে কোন একটি কলাম একরকম থাকতে হবে, আশাকরি আমি কি বলতে চাচ্ছি আপনারা ধরতে পেরেছেন।)
RIGHT JOIN :
SELECT C.cName as [Category Name],P.pName as [Product Name],P.pPrice as Price from category C
RIGHT JOIN
product P
on
C.cid=P.cid
(এখানে লক্ষ করুন beverage কলামটি কিন্তু এখানে আর নেই। তার মানে এক্ষেত্রে ডান পাশের কলামটি সব ভেলু আনছে, কিন্তু বাম পাশের কলামটি থেকে শুধু মেচিং ভেলু আনছে।)
INNER JOIN :
SELECT C.cName as [Category Name],P.pName as [Product Name],P.pPrice as Price from category C
INNER JOIN
product P
on
C.cid=P.cid
(এখানে দুটি টেবিল থেকেই শুধু মেচিং ডাটা আনবে। )
FULL JOIN :
SELECT C.cName as [Category Name],P.pName as [Product Name],P.pPrice as Price from category C
FULL JOIN
product P
on
C.cid=P.cid
(এখানে দুটি টেবিল এর সব ভেলুই আপনাকে দেখাবে।)
CROSS JOIN :
SELECT C.cName as [Category Name],P.pName as [Product Name],P.pPrice as Price from category C
CROSS JOIN
product P
(এখানে গুণিতক আকারে দেখাবে, অর্থাৎ category table এ যত কলাম রয়েছে তার সাথে product table এর কলাম সংখ্যা গুণকরে দেখাবে। যেমন- category table এ কলাম রয়েছে ৩ টি, product table এ কলাম রয়েছে ৮ টি, সর্বমোট ২৪ টি। আরেকটি বিষয় লক্ষণীয় এই কোয়ারিতে কিন্তু কোন মেচিং এর ব্যাপার নেই।)
UNION :
select cid,cName,'','' from category
UNION
select cid,pName,pPrice,pQuantity from product
(এখানে union দ্বারা দুটি table এর মধ্যে সংযোগ স্থাপন করা হয়েছে, উল্লেখ্য union দ্বারা দুটি query কে সংযোগ করা হয়েছে এবং দুটি query এর মধ্যে সমান সংখ্যক কলাম থাকতে হবে। লক্ষ করুন category table এর কলাম দুটি কিন্তু এখানে ৪টি দেখানো হয়েছে, (‘’, ‘’ এগুলো কলাম আকারে রয়েছে কিন্তু কোন ভেলু নেই।) কারন product table এ ৪টি কলাম রয়েছে।)
DISTINCT :
insert into product values(9,'freez',4,45000,2)
insert into product values(10,'freez',4,45000,2)
insert into product values(11,'freez',4,45000,2)
select distinct pName from product
(প্রথমে insert query চালান তারপর select query চালান। লক্ষ করুন product table এ ১১ টি ভেলু থাকা সত্তেও আপনাকে দেখাচ্ছে ৮ টি, এর কারন হল distinct, এর দ্বারা duplicate value avoid করা যায়।)
WHERE :
Where clause এ আমরা যে যে operator ব্যবহার করতে পারি।
(=) select * from product where pName='tv'
(<>)select * from product where pName<>'tv'
(>)select * from product where pPrice>22000
(<)select * from product where pPrice<22000
(>=)select * from product where pPrice>=22000
(<=)select * from product where pPrice<=22000
(BETWEEN) select * from product where pPrice between 22000 and 45000
(LIKE) select * from product where pName like 'fre%'
(IN) select * from product where pid in(1,3,7,11)
(AND) select * from product where pid in(1,3,7,11) AND pPrice>5000
(OR) select * from product where pid =1 or pPrice>5000
আজ এ পর্যন্তই। আগামি কাল আবার দেখা হবে মজার মজার সব বিষয় নিয়ে। ভালো থাকুন। কোন বিষয় বুঝতে না পারলে জানাবেন। ধন্যবাদ।
আমি Shafiq। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 13 বছর যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 18 টি টিউন ও 44 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 1 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।
সাথে থাকলে শিখতে পারবো তো?
ভাই পোস্টটি সম্পন্ন করেন।