এস কিউ এল সার্ভার ২০০৮ শিখুন ধাপে ধাপে [পর্ব-০৩] :: Query

SQL সার্ভার ২০০৮ শিখুন ধাপে ধাপে

সুপ্রিয় বন্ধুরা,

কেমন আছেন সবাই? গত পর্বের ধারাবাহিকতায় আজ আমি আপনাদের সামনে 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

আজ এ পর্যন্তই। আগামি কাল আবার দেখা হবে মজার মজার সব বিষয় নিয়ে। ভালো থাকুন। কোন বিষয় বুঝতে না পারলে জানাবেন। ধন্যবাদ।

Level 2

আমি Shafiq। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 13 বছর 1 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 18 টি টিউন ও 44 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 1 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।


টিউনস


আরও টিউনস


টিউনারের আরও টিউনস


টিউমেন্টস

Level 0

সাথে থাকলে শিখতে পারবো তো?
ভাই পোস্টটি সম্পন্ন করেন।

Level 2

ইনশাআল্লাহ্, সাথে থাকেন, মতামত জানান, শিখুন, শেখান…

Level 0

পোস্টটি দারুন হচ্ছে। চালিয়ে যান সাথে আছি।

ভাই, দুটি টেবিল এক সাথে কুয়েরি করতে হলে কি LEFT JOIN: দুটোর মাঝে ফাকা রাখতে হবে। নাকি রাখতে হবেনা । জানাবেন প্লিজ।
আর আমি কুয়েরি করেছি কিন্তু আমার সব ডাটা দেখাচ্ছেনা ………………………………

Level 2

জি ভাই ফাকা রাখতে হবে, (Left একটি স্পেস দিয়ে join ) Query টা পোস্ট করুন দেখে দিব।
ভালো থাকুন। reply দেরিতে দেয়ার জন্য sorry.