3.1 মান তুলনা করা: <, >, =, <>

এসকিউএল কোয়েরি লেখার সময় ব্যবহৃত সবচেয়ে সাধারণ কীওয়ার্ডগুলির মধ্যে একটি হল WHERE. এটির সাহায্যে আমরা মাইএসকিউএলকে বলি যে কোন টেবিলের সারি আমরা ফিল্টার করতে চাই (নির্বাচন করুন)।

কীওয়ার্ডের পরে, WHEREআপনি খুব জটিল এবং জটিল শর্ত লিখতে পারেন। তাহলে কি অপারেশন এই অবস্থা ধারণ করতে পারে?

অপারেটর বর্ণনা উদাহরণ
< কম বেতন <40000
> আরও বেতন > 100000
<= কম বা সমান বয়স <= 25
>= বেশি বা সমান বয়স >= 18
= সমান পেশা = 'প্রোগ্রামার'
<>, != সমান না বছর (যোগদানের_তারিখ) != 2015

জাভা ভাষার বিপরীতে, কঠোর সমতার জন্য, এখানে এক সমান অক্ষর ব্যবহার করা হয়েছে, দুটি নয়

আপনি যদি পরীক্ষা করতে চান যে মানগুলি সমান নয়, তবে এটি দুটি উপায়ে করা যেতে পারে: <>হয় !=প্রথম পদ্ধতিটি প্যাসকেলের মতো ভাষাগুলিতে ব্যবহৃত হয়, দ্বিতীয়টি C ++ এর মতো ভাষার জন্য সাধারণ। এবং জাভা।

এসকিউএল-এ অ্যাসাইনমেন্টের জন্য, এটি :=প্যাসকেলের মতো ব্যবহার করা হয়, তবে অ্যাসাইনমেন্টটি খুব কমই ব্যবহৃত হয়।

আসুন একটি ক্যোয়ারী লিখি যেখানে আমরা 2015 সালে নিয়োগ করা হয়নি এমন সমস্ত কর্মচারীদের প্রদর্শন করি৷


SELECT * FROM employee WHERE YEAR(join_date) != 2015
        

এবং আমরা নিম্নলিখিত ক্যোয়ারী ফলাফল পেতে:

আইডি নাম পেশা বেতন বয়স তারিখ যোগ দিতে
1 ইভানভ ইভান প্রোগ্রামার 100,000 25 2012-06-30
2 পেট্রোভ পেট্র প্রোগ্রামার 80,000 23 2013-08-12
3 ইভানভ সের্গেই পরীক্ষক 40,000 ত্রিশ 2014-01-01
6 ভাস্কা বিড়াল 1,000 3 2018-01-01

3.2 যৌক্তিক ক্রিয়াকলাপ এবং, বা, না

এছাড়াও আপনি WHEREলজিক্যাল অপারেশন ব্যবহার করতে পারেন AND, ORএবং NOT. এবং আমি তাদের এখানে বর্ণনা করেছি ঠিক সেভাবেই লেখা হয়েছে। কোনোটিই নয় &&, ||বা!

আসুন একটি SQL ক্যোয়ারী লিখি যেখানে আমরা 20 বছরের বেশি বয়সী এবং 50K এর কম বেতন পান এমন কর্মচারী নির্বাচন করি৷


SELECT * FROM employee WHERE age > 20 AND salary < 50000
        

এবং আমরা নিম্নলিখিত ক্যোয়ারী ফলাফল পেতে:

আইডি নাম পেশা বেতন বয়স তারিখ যোগ দিতে
3 ইভানভ সের্গেই পরীক্ষক 40,000 ত্রিশ 2014-01-01
5 কিরিয়েনকো আনাস্তাসিয়া অফিস ব্যবস্থাপক 40,000 25 2015-10-10

খুব সহজ. আসুন একটি ক্যোয়ারী লিখি যেখানে আমরা এমন কর্মচারী নির্বাচন করি যারা 100K এর বেশি পায় এবং পরিচালক হিসাবে কাজ করে না:


SELECT * FROM employee WHERE salary >= 100000 AND NOT occupation = 'Director'
        

এখানে আমরা বিশেষভাবে প্রতীকের পরিবর্তে !=অপারেটর ব্যবহার করেছি NOT

এবং আমরা নিম্নলিখিত ক্যোয়ারী ফলাফল পেতে:

আইডি নাম পেশা বেতন বয়স তারিখ যোগ দিতে
1 ইভানভ ইভান প্রোগ্রামার 100,000 25 2012-06-30

3.3 এর মধ্যে: মান পরিসীমা

এছাড়াও এসকিউএল-এ একটি বিশেষ অপারেটর রয়েছে BETWEENযার সাহায্যে আপনি দুটি মানের মধ্যে একটি পরিবর্তনশীল আছে কিনা তা পরীক্ষা করতে পারেন। এই অপারেটরটি বুলিয়ান এক্সপ্রেশনের ভিতরে ব্যবহার করা হয়। এই ধরনের অপারেটরের সাধারণ ফর্ম হল:


variable BETWEEN bottom line AND top_bound
        

এই ক্ষেত্রে, জাভা ভাষার বিপরীতে, নিম্ন এবং উপরের উভয় সীমানা অনুমোদিত ব্যবধানে অন্তর্ভুক্ত।

আসুন একটি উদাহরণ লিখি যেখানে আমরা 40K থেকে 100K পর্যন্ত বেতন সহ সমস্ত কর্মচারী নির্বাচন করি। অনুরোধটি এরকম দেখাবে:

SELECT * FROM employee WHERE salary BETWEEN 40000 AND 100000

এবং আমরা নিম্নলিখিত ক্যোয়ারী ফলাফল পেতে:

আইডি নাম পেশা বেতন বয়স তারিখ যোগ দিতে
1 ইভানভ ইভান প্রোগ্রামার 100,000 25 2012-06-30
2 পেট্রোভ পেট্র প্রোগ্রামার 80,000 23 2013-08-12
3 ইভানভ সের্গেই পরীক্ষক 40,000 ত্রিশ 2014-01-01
5 কিরিয়েনকো আনাস্তাসিয়া অফিস ব্যবস্থাপক 40,000 25 2015-10-10

অপারেটর BETWEENশুধুমাত্র সাংখ্যিক প্রকারগুলিই নয়, তারিখগুলি এবং এমনকি স্ট্রিং প্রকারগুলিকেও সমর্থন করে ৷ স্ট্রিংগুলির সাথে কাজ করার ক্ষেত্রে, অভিধানের ক্রম ব্যবহার করা হয়: aaba aabb-এর আগে আসে

3.4 IN: মানের তালিকা

এছাড়াও, এসকিউএল-এর একটি বিশেষ অপারেটর রয়েছে INযার সাহায্যে আপনি নির্দিষ্ট তালিকায় একটি পরিবর্তনশীল রয়েছে কিনা তা পরীক্ষা করতে পারেন। এই অপারেটরটি বুলিয়ান এক্সপ্রেশনের ভিতরে ব্যবহার করা হয়। এই ধরনের অপারেটরের সাধারণ ফর্ম হল:

variable IN (value 1 , value 2 , ... value N)

আসুন একটি প্রশ্ন লিখি যেখানে আমরা 20, 25 বা 30 বছর বয়সী কর্মচারী নির্বাচন করি। অনুরোধটি এরকম দেখাবে:

SELECT * FROM employee WHERE age IN (20, 25, 30)

এবং আমরা নিম্নলিখিত ক্যোয়ারী ফলাফল পেতে:

আইডি নাম পেশা বেতন বয়স তারিখ যোগ দিতে
1 ইভানভ ইভান প্রোগ্রামার 100,000 25 2012-06-30
3 ইভানভ সের্গেই পরীক্ষক 40,000 ত্রিশ 2014-01-01
5 কিরিয়েনকো আনাস্তাসিয়া অফিস ব্যবস্থাপক 40,000 25 2015-10-10

এবং এখন একটি ক্যোয়ারী লিখি, যেখানে, বিপরীতে, আমরা এমন কর্মচারী নির্বাচন করি যাদের বয়স not20, 25 বা 30৷ ক্যোয়ারীটি দেখতে এরকম হবে:

SELECT * FROM employee WHERE age NOT IN (20, 25, 30)

এবং আমরা নিম্নলিখিত ক্যোয়ারী ফলাফল পেতে:

আইডি নাম পেশা বেতন বয়স তারিখ যোগ দিতে
2 পেট্রোভ পেট্র প্রোগ্রামার 80,000 23 2013-08-12
4 রাবিনোভিচ মইশা পরিচালক 200,000 35 2015-05-12
6 ভাস্কা বিড়াল 1,000 3 2018-01-01

সবকিছু আশানুরূপ কাজ করেছে। সৌন্দর্য।

3.5 লাইক: স্ট্রিং প্যাটার্ন

এবং অবশেষে, আরেকটি গুরুত্বপূর্ণ এবং খুব প্রায়ই ব্যবহৃত অপারেটর - LIKE. স্ট্রিং তুলনা করার সময় এটি ব্যবহার করা হয়। এটি একটি স্ট্রিং প্যাটার্ন সেট করতে ব্যবহার করা যেতে পারে। এই অপারেটরটি বুলিয়ান এক্সপ্রেশনের ভিতরে ব্যবহার করা হয়। এই ধরনের অপারেটরের সাধারণ ফর্ম হল:

variable LIKE 'sample'

প্যাটার্নে বিশেষ অক্ষর ব্যবহার করা যেতে পারে: %এবং _

  • আন্ডারস্কোর মানে যেকোনো অক্ষর, সর্বদা 1 পিসি।
  • শতাংশ মানে যে কোন অক্ষর এবং যে কোন সংখ্যক বার (0 বার সহ)।

আসুন একটি প্রশ্ন লিখি যা সেই সমস্ত লোককে নির্বাচন করবে যাদের শেষ নাম "I" অক্ষর দিয়ে শুরু হয়। অনুরোধটি এরকম দেখাবে:

SELECT * FROM employee WHERE name LIKE 'I%'

এবং আমরা নিম্নলিখিত ক্যোয়ারী ফলাফল পেতে:

আইডি নাম পেশা বেতন বয়স তারিখ যোগ দিতে
1 ইভানভ ইভান প্রোগ্রামার 100,000 25 2012-06-30
3 ইভানভ সের্গেই পরীক্ষক 40,000 ত্রিশ 2014-01-01

এখন কাজটি জটিল করা যাক - নামটিতে "o" থাকা উচিত এবং নামটি "a" দিয়ে শেষ হওয়া উচিত। অনুরোধটি এরকম দেখাবে:

SELECT * FROM employee WHERE name LIKE '%o%a'

এবং আমরা নিম্নলিখিত ক্যোয়ারী ফলাফল পেতে:

আইডি নাম পেশা বেতন বয়স তারিখ যোগ দিতে
4 রাবিনোভিচ মইশা পরিচালক 200,000 35 2015-05-12

ঠিক আছে, এটা একটু কঠিন করা যাক. আসুন সমস্ত কর্মচারীকে ফিল্টার করি যাদের বয়স "3" নম্বর দিয়ে শুরু হয়। অনুরোধটি এরকম দেখাবে:

SELECT * FROM employee WHERE age LIKE '3%'

এবং আমরা নিম্নলিখিত ক্যোয়ারী ফলাফল পেতে:

আইডি নাম পেশা বেতন বয়স তারিখ যোগ দিতে
3 ইভানভ সের্গেই পরীক্ষক 40,000 ত্রিশ 2014-01-01
4 রাবিনোভিচ মইশা পরিচালক 200,000 35 2015-05-12
6 ভাস্কা বিড়াল 1,000 3 2018-01-01

যাইহোক, আমাদের বয়স কলাম টাইপের int, তাই LIKEএটি শুধুমাত্র স্ট্রিং দিয়ে কাজ করে না। আনন্দ করা ছাড়া আর কি পারি না।