প্রোগ্রামিং

SQL - নতুনদের জন্য দ্রুত গাইড

30 অক্টোবর, 2021

এসকিউএল স্ট্রাকচার্ড কোয়েরি ভাষা বোঝায়। এটি একটি ডোমেন-নির্দিষ্ট ভাষা যা ডাটাবেসে সংরক্ষিত ডেটা পুনরুদ্ধার করার জন্য ব্যবহৃত হয়। এসকিউএল তে সংরক্ষিত ডেটা পরিচালনা করে রিলেশনাল ডাটাবেস ম্যানেজমেন্ট সিস্টেম (RDBMS), অর্থাৎ, সত্তা এবং ভেরিয়েবলের মধ্যে সম্পর্ক জড়িত এমন ডেটা। স্ট্রাকচার্ড ক্যোয়ারী ভাষা সব প্রধানের সাথে সামঞ্জস্যপূর্ণ অপারেটিং সিস্টেম .

এর আগে ডাটা ব্যবহার করে ম্যানিপুলেশন করা হতো ISAM (সূচিবদ্ধ অনুক্রমিক অ্যাক্সেস পদ্ধতি) এবং VSAM (ভার্চুয়াল স্টোরেজ অ্যাক্সেস পদ্ধতি) . আইএসএএম এবং ভিএসএম-এর চেয়ে কাঠামোগত ক্যোয়ারী ভাষার আরও সুবিধা রয়েছে। এসকিউএল-এ একটি একক কমান্ড ব্যবহার করে, আপনি একাধিক রেকর্ড বা ডেটা পুনরুদ্ধার করতে পারেন। আরেকটি সুবিধা হ'ল ডেটা কীভাবে পৌঁছাতে হবে তা নির্দিষ্ট করার প্রয়োজন নেই।

সুচিপত্র

এসকিউএল কি?

এসকিউএল ডাটাবেস তৈরি, ম্যানিপুলেট এবং বজায় রাখার জন্য একটি ভাষা। এটি ডেটা সন্নিবেশ করতে, এটি মুছে ফেলতে বা সংশোধন করতে সহায়তা করে। এই ভাষাতে একাধিক উপভাষা রয়েছে, যেমন ডেটা সংজ্ঞা ভাষা (DDL) , ডেটা ম্যানিপুলেশন ল্যাঙ্গুয়েজ (DML) , ডেটা কোয়েরি ল্যাঙ্গুয়েজ (DQL) , এবং তথ্য নিয়ন্ত্রণ ভাষা (DCL) .

একটি SQL একটি ডেটা ক্যোয়ারী, ডেটা সংজ্ঞা, ডেটা ম্যানিপুলেশন এবং ডেটা অ্যাক্সেস নিয়ন্ত্রণ নিয়ে গঠিত। একটি ডাটা ক্যোয়ারী হল একটি কমান্ড যা ডাটাবেস থেকে যেকোনো তথ্য পুনরুদ্ধার করতে ব্যবহৃত হয়। ডেটা সংজ্ঞায় ডেটাবেস স্কিমা সংজ্ঞায়িত করা জড়িত এবং ডেটা ম্যানিপুলেশনের মধ্যে ডেটা সন্নিবেশ করা, আপডেট করা এবং মুছে ফেলা অন্তর্ভুক্ত।

1986 সালে, এসকিউএল হয়ে ওঠে আমেরিকান ন্যাশনাল স্ট্যান্ডার্ড ইনস্টিটিউট (ANSI) মান পরের বছর, এটি হয়ে ওঠে ইন্টারন্যাশনাল অর্গানাইজেশন ফর স্ট্যান্ডার্ডাইজেশন (ISO) মান 1970 সালে, ডোনাল্ড ডি. চেম্বারলিন এবং রেমন্ড এফ. বয়েস আইবিএম-এ এসকিউএল তৈরি করেছে।

আগে, এটি SEQUEL (স্ট্রাকচার্ড ইংলিশ কোয়েরি ল্যাঙ্গুয়েজ) নামে পরিচিত ছিল। এটি বিশেষভাবে আইবিএম-এর ডেটা সংরক্ষণ এবং পুনরুদ্ধারের জন্য ডিজাইন করা হয়েছিল। 1989, 1992, 1996, 1999, 2003, 2006, 2008, 2011 এবং 2016 সালে প্রকাশিত বিভিন্ন SQL সংস্করণ রয়েছে।

MySQL, Oracle, Sybase, SQL Server, MS Access, Postgres, এবং Informix-এর মতো সমস্ত রিলেশনাল ডাটাবেস ম্যানেজমেন্ট সিস্টেমের জন্য SQL হল মূল ভাষা। এই প্রশ্নের উপভাষা ব্যবহার করে একাধিক সুবিধা রয়েছে। SQL ব্যবহারকারীদের যেকোনো রিলেশনাল ডাটাবেস ম্যানেজমেন্ট সিস্টেম থেকে তথ্য অ্যাক্সেস করতে সক্ষম করে।

ব্যবহারকারীরা ডেটা সংজ্ঞায়িত করতে পারে, এটি সংশোধন করতে পারে বা SQL ব্যবহার করে ডেটা মুছে ফেলতে পারে। আপনি এই উপভাষাটিকে অন্য কোনো প্রোগ্রামিং ভাষায় এম্বেড করতে পারেন, যেখানে ডেটা পুনরুদ্ধার করা প্রয়োজন। এটি ব্যবহারকারীদের সঞ্চিত পদ্ধতি, ফাংশন এবং ভিউতে অনুমতি তৈরি এবং সেট করার অনুমতি দেয়।

আমরা এখন এসকিউএল এবং এর ইতিহাস সম্পর্কে জানি। আসুন এখন রিলেশনাল ডাটাবেস ম্যানেজমেন্ট সিস্টেম (RDBMS) এর উপর আলোকপাত করি। পিএল/এসকিউএল, SQL-এ পদ্ধতিগত ভাষা এক্সটেনশন , SQL প্রসারিত করতে সাহায্য করে এবং এটিকে পদ্ধতিগত ক্ষমতা প্রদান করে

RDBMS ডাটাবেস

আমরা দেখেছি যে SQL অনেক RDBMS ডাটাবেস দ্বারা ব্যবহৃত হয়, যেমন MySQL, SQL সার্ভার, Oracle, MS Access, ইত্যাদি। তাই, এই বিভাগে, আমরা কয়েকটি RDBMS ডাটাবেস শিখব। আমরা প্রতিটি ডাটাবেসের বৈশিষ্ট্যগুলি দেখব এবং তারপরে আমরা তাদের মধ্যে পার্থক্য স্বীকার করতে পারি।

এক. মাইএসকিউএল:

একটি সুইডিশ কোম্পানি, MySQL AB, এটি তৈরি করেছে মাইএসকিউএল ডাটাবেস, যা বিনামূল্যে ব্যবহার করা যায় এবং ওপেন সোর্স। মাইএসকিউএল সমস্ত প্রধান সিস্টেমের সাথে সামঞ্জস্যপূর্ণ, যেমন মাইক্রোসফ্ট উইন্ডোজ, লিনাক্স , Unix, এবং macOS অপারেটিং সিস্টেম। আপনি এর বাণিজ্যিক বা অ-বাণিজ্যিক সংস্করণ ব্যবহার করতে পারেন। সংস্করণ অনুযায়ী, আপনি বৈশিষ্ট্য সঙ্গে প্রদান করা হয়. এটি একটি বলিষ্ঠ, দ্রুত, বহু-থ্রেডেড, এবং বহু-ব্যবহারকারী ডাটাবেস সার্ভারকে অন্তর্ভুক্ত করে।

1994 সালে, মাইকেল উইডেনিয়াস এবং ডেভিড অ্যাক্সমার্ক MySQL তৈরি করেছিলেন এবং এটিকে ‘my ess-que-ell’ প্রসঙ্গে উচ্চারণ করা হয়। এই ডাটাবেসটি 8ই জানুয়ারী 1998 সালে উইন্ডোজ সিস্টেমের সাথে চালানোর জন্য সামঞ্জস্যপূর্ণ ছিল। এটি প্রথম উইন্ডোজ 95 এবং এনটি-এর জন্য প্রকাশ করা হয়েছিল।

দ্য মাইএসকিউএল সংস্করণ 3.23: বিটা জুন 2000 থেকে জানুয়ারী 2001 এর মধ্যে প্রকাশিত হয়েছিল। পরবর্তী সংস্করণ, 4.0: বিটা, আগস্ট 2002 থেকে মার্চ 2003 এর মধ্যে চালু হয়েছিল। জুন 2004 থেকে অক্টোবর 2004 পর্যন্ত, সংস্করণ 4.1: বিটা প্রকাশিত হয়েছিল। নিম্নলিখিত সংস্করণ, 5.1: বিটা, মার্চ 2005 থেকে অক্টোবর 2005 পর্যন্ত উত্পাদিত হয়েছিল। পরে 2008 সালে, MySQL সান মাইক্রোসিস্টেম দ্বারা অধিগ্রহণ করা হয়েছিল, এবং তারপর সর্বশেষ সংস্করণ 5.2: বিটা চালু হয়েছিল।

বৈশিষ্ট্য:

MySQL উচ্চ কার্যক্ষমতা, উচ্চ প্রাপ্যতা এবং যেকোনো কিছু চালানোর জন্য নমনীয়তা প্রদান করে। এটি চালানোর জন্য শক্তিশালী লেনদেন সমর্থন করে। MySQL ডাটাবেসের সমস্ত ডেটা সুরক্ষিত এবং অত্যন্ত সুরক্ষিত। এটি অবাধে উপলব্ধ এবং ওপেন সোর্স।

দুই ওরাকল:

ওরাকল বহু-ব্যবহারকারী এবং বৃহৎ ম্যানেজমেন্ট সিস্টেম সহ বহুল ব্যবহৃত রিলেশনাল ডাটাবেসগুলির মধ্যে একটি। ওরাকল কর্পোরেশন ওরাকল রিলেশনাল ডাটাবেস চালু করেছে। এই DBMS ক্লায়েন্ট/সার্ভার অপারেশনের জন্য সবচেয়ে উপযুক্ত। বেশ কিছু ক্লায়েন্ট নেটওয়ার্কের মাধ্যমে ডেটা অ্যাক্সেস এবং পাঠাতে পারে। ওরাকল ক্লায়েন্ট এবং সার্ভার সিস্টেমের সাথে সামঞ্জস্যপূর্ণ, যেমন UNIX, UnixWare, OS/2, NetWare, এবং MSDOS।

ল্যারি এলিসন, এড ওটস এবং বব মাইনার 1977 সালে ওরাকল ডাটাবেস তৈরি করেন এবং সফ্টওয়্যার ডেভেলপমেন্ট ল্যাবরেটরিজ প্রতিষ্ঠা করেন। 1979 সালে, 2.0 ওরাকল সংস্করণ পরবর্তী দুই বছরে মুক্তি পায়, প্রথম বাণিজ্যিক ওরাকল সংস্করণ। তারা সফ্টওয়্যার ডেভেলপমেন্ট ল্যাবরেটরিজ নাম পরিবর্তন করে রিলেশনাল সফটওয়্যার ইনকর্পোরেটেড (RSI)। এই সংস্থার নাম পরে 1982 সালে Oracle Corporation রাখা হয়। পরবর্তী সংস্করণ, 3.0, 1983 সালে C ভাষায় চালু করা হয়। ওরাকল সংস্করণ 4.0, 1984 সালে তৈরি করা হয়েছে, এতে আরও উন্নত বৈশিষ্ট্য রয়েছে, যেমন মাল্টি-সংস্করণ রিড কনসিস্টেন্সি, কনকারেন্সি কন্ট্রোল ইত্যাদি। Oracle 11g, সর্বশেষ সংস্করণ, 2007 সালে চালু হয়েছিল।

ওরাকল রিলেশনাল ডাটাবেসে আরও উন্নত বৈশিষ্ট্য রয়েছে, যেমন কনকারেন্সি, লকিং মেকানিজম, এসকিউএল প্লাস, রিসোর্স ম্যানেজার, ডেটা মাইনিং, পার্টিশনিং, ডেটা গুদামজাতকরণ, সমান্তরাল সম্পাদন ইত্যাদি।

3. MS SQL সার্ভার:

মাইক্রোসফট থেকে রিলেশনাল ডাটাবেস হয় এমএস এসকিউএল সার্ভার . এই ডাটাবেসের প্রাথমিক উদ্দেশ্য হল ডাটাবেসে ডেটা সংরক্ষণ করা এবং পুনরুদ্ধার করা। এটি মাইক্রোসফ্ট উইন্ডোজ, লিনাক্স এবং এর সাথে সামঞ্জস্যপূর্ণ উইন্ডোজ সার্ভার অপারেটিং সিস্টেম MS SQL সার্ভার যেকোনো সফ্টওয়্যার অ্যাপ্লিকেশনকে, একই কম্পিউটারে বা ভিন্ন এক বা নেটওয়ার্ক জুড়ে উপস্থিত, ডেটা পুনরুদ্ধার করার অনুমতি দেয়। এটি ANSI SQL এবং T-SQL ডাটাবেস ভাষা ব্যবহার করে।

প্রাথমিকভাবে, 1987 সালে, Sybase দ্বারা UNIX সিস্টেমের জন্য SQL সার্ভার তৈরি করা হয়েছিল। পরের বছরে, মাইক্রোসফ্ট, অ্যাস্টন-টেট এবং সাইবেস OS/2 এর জন্য SQL সার্ভার 1.0 প্রকাশ করে। উইন্ডোজ 3.0 ব্যবহারকারীদের জন্য, এসকিউএল সার্ভারের সংস্করণ 1.1 1990 সালে চালু করা হয়েছিল। পরে, অ্যাস্টন-টেট সংস্থাটি ছেড়ে দেয় এবং 2000 সালে মাইক্রোসফ্ট SQL সার্ভার 2000 প্রকাশ করে। পরের বছরে, এই ডাটাবেসের জন্য XML তৈরি করা হয়েছিল। SQLXML 2.0 2002 সালে বিকশিত হয় এবং পরে SQLXML 3.0 প্রকাশ করে। সর্বশেষ সংস্করণ, SQL সার্ভার 2005, 7ই নভেম্বর 2005-এ তৈরি করা হয়েছিল।

এমএস এসকিউএল সার্ভারে ডাটাবেস মিররিং, ডিডিএল ট্রিগার, সিমলেস এক্সএমএল ইন্টিগ্রেশন, ডাটাবেস মেল, উচ্চ কার্যক্ষমতা এবং উচ্চ উপলব্ধতা রয়েছে।

চার. এমএস অ্যাক্সেস:

আরেকটি জনপ্রিয় রিলেশনাল ডাটাবেস হল MS Access। উপরের ডাটাবেসের মত, MS Accessও Microsoft এর পণ্য। এই DBMS ছোট আকারের ব্যবসার জন্য ব্যবহার করা হয় এবং ব্যতিক্রমীভাবে সস্তা। এটি একটি জেট ডাটাবেস ইঞ্জিন অন্তর্ভুক্ত করে। এই ইঞ্জিনটিকে জেট এসকিউএলও বলা হয়, কারণ এটি এসকিউএল ভাষা ব্যবহার করে।

1992 সালে, প্রথম এমএস অ্যাক্সেস সংস্করণ 1.0 তৈরি করা হয়েছিল। পরের বছরে, এটি সামঞ্জস্যের উন্নতির জন্য অ্যাক্সেস বেসিক প্রোগ্রামিং ভাষার সাথে বিকশিত হয়েছিল। পরে, অ্যাক্সেস 2007 চালু করা হয়েছিল, যা ACCDB ফর্ম্যাট ব্যবহার করেছিল। এই MS অ্যাক্সেস সংস্করণটি উন্নত এবং এতে জটিল ডেটা প্রকার এবং বহু-মূল্যবান ক্ষেত্র অন্তর্ভুক্ত রয়েছে।

MS Access সংযুক্ত টেবিল, ফর্ম, রিপোর্ট এবং প্রশ্নের জন্য ম্যাক্রো ব্যবহার করে। এই সিস্টেমটি ব্যবহার করে, আপনি ASCII, Oracle, ODBC, SQL সার্ভার, ইত্যাদির মতো আপনার ডেটা রপ্তানি এবং আমদানি করতে পারেন৷ জেট ফর্ম্যাটটি একটি ফাইলে অ্যাপ্লিকেশন এবং এর ডেটা একসাথে রাখে৷ অতএব, যেকোনো অ্যাপ্লিকেশন শেয়ার করা অনায়াসে। এটি ডাটাবেস ট্রিগার, সঞ্চিত পদ্ধতি এবং লেনদেন লগিং সমর্থন করে না, কারণ এটি একটি ফাইল সার্ভার-ভিত্তিক সিস্টেম।

RDBMS কি?

এসকিউএল, ওরাকল, মাইএসকিউএল, মাইক্রোসফ্ট অ্যাক্সেস, ইত্যাদির মতো প্রায় সমস্ত বর্তমান ডাটাবেস সিস্টেম রিলেশনাল ডাটাবেস ম্যানেজমেন্ট সিস্টেম ব্যবহার করে। এই ডাটাবেস সিস্টেম রিলেশনাল মডেলের উপর ভিত্তি করে। E. F. Codd রিলেশনাল ডাটাবেস ম্যানেজমেন্ট সিস্টেমের প্রস্তাব করেছিলেন। RDBMS-এ কিছু কিছু উপাদান আছে যা আমরা এসকিউএল-এর দিকে যাওয়ার আগে আপনাকে জানতে হবে। আসুন নীচের প্রতিটি দিক নিয়ে আলোচনা করি।

এক. টেবিল:

RDBMS-এ ডেটা টেবিলের আকারে সংরক্ষণ করা হয়। এই টেবিল একটি বস্তু হিসাবে উল্লেখ করা হয়. একে ক বলা হয় সম্পর্ক . RDBMS-এর একটি টেবিলে সারি এবং কলাম রয়েছে। RDBMS-এর প্রতিটি টেবিলের একটি নির্দিষ্ট টেবিলের নাম রয়েছে। একটি টেবিলকে সহজতম ডেটা স্টোরেজ ফর্ম হিসাবে বিবেচনা করা হয়।

আসুন আমরা টেবিলের নাম, ‘ছাত্র’ সম্বলিত টেবিলটি বিবেচনা করি। আমরা শিক্ষার্থীর তথ্যগুলি ছাত্র টেবিলে সংরক্ষণ করব, যেমন নাম, বয়স, ছাত্র_আইডি এবং শহরের।

নামবয়সশিক্ষার্থী আইডিশহর
স্টিভ231092নিউইয়র্ক
অলিভার241093পরীরা
রবার্টএকুশ1094শিকাগো
মেরি251095ক্যালিফোর্নিয়া
জেনিফার231096নিউইয়র্ক
জেমস221097ওয়াশিংটন ডিসি
জনএকুশ1098ক্যালিফোর্নিয়া
জনি241099শিকাগো

উপরের সারণীটি শিক্ষার্থীদের সম্পর্কে তথ্য প্রদান করে।

দুই ক্ষেত্র:

পরবর্তী RDBMS উপাদান হল ক্ষেত্র। একটি ক্ষেত্র হল টেবিলের ছোট সত্তা। উদাহরণস্বরূপ, উপরের সারণীতে, ‘ছাত্র,’ নাম, বয়স, ছাত্র_আইডি এবং শহর হল ক্ষেত্র। অতএব, টেবিলের প্রতিটি কলাম একটি ক্ষেত্র, যা নির্দিষ্ট তথ্য বা রেকর্ড সংরক্ষণ করে।

3. সারি:

একটি সারিকে একটি রেকর্ড হিসাবেও উল্লেখ করা হয়। রেকর্ড বা সারিতে নির্দিষ্ট সত্তা সম্পর্কে তথ্য থাকে। উপরের টেবিলে, 'ছাত্র,' আটটি ভিন্ন সারি বা রেকর্ড রয়েছে। অন্য কথায়, উপরের সারণীতে আটটি ভিন্ন শিক্ষার্থীর তথ্য রয়েছে। একটি একক অনুভূমিক সত্তা একটি সারি বা রেকর্ড। নিম্নোক্তটি টেবিল থেকে একটি সারি বা রেকর্ড ‘ছাত্র’।

|_+_|

চার. কলাম:

আমরা দেখেছি যে একটি সারি একটি অনুভূমিক সত্তা। সারি থেকে ভিন্ন, কলাম একটি উল্লম্ব সত্তা। একটি কলাম ক্ষেত্রের সাথে সম্পর্কিত সমস্ত ডেটা ধারণ করে। 'ছাত্র' টেবিলে, নাম, বয়স, ছাত্র_আইডি এবং শহর হল ক্ষেত্র। অতএব, 'নাম' ক্ষেত্র সহ একটি কলামে শিক্ষার্থীদের নাম রয়েছে। এই কলামটি নিম্নরূপ উপস্থাপন করা হয়:

|_+_|

5. শূন্য:

যখন একটি নির্দিষ্ট ক্ষেত্রে কোনো ডেটা থাকে না বা ক্ষেত্রে একটি ফাঁকা স্থান থাকে, তখন সেই মানটি হল NULL মান। NULL মান শূন্যের সমান নয়। রেকর্ড তৈরি করার সময় এটি ফাঁকা রাখা হয়।

এসকিউএল বেসিক

আমরা এই সেগমেন্টের সমস্ত SQL বেসিক শিখব, যেমন সিনট্যাক্স, কোয়েরি প্রসেসিং, সীমাবদ্ধতা, কমান্ড এবং ডাটাবেস স্বাভাবিককরণ।

এসকিউএল সিনট্যাক্স

একটি SQL ক্যোয়ারী ডাটাবেস থেকে ডেটা পুনরুদ্ধার করার জন্য বেশ কয়েকটি উপাদান ধারণ করে। নীচে ক্যোয়ারী জড়িত উপাদান আছে.

    ধারা:

ধারাগুলি প্রশ্নের ঐচ্ছিক অংশ। তারা প্রশ্নের উপাদান. যেমন, UPDATE, SET, WHERE ইত্যাদি ক্লজগুলো।

    অভিব্যক্তি:

ক্যোয়ারীতে এক্সপ্রেশনের ফলে সারি এবং কলাম যুক্ত টেবিলের আকারে ডেটা পাওয়া যায়। একটি সারিকে 'টুপল' বলা হয় এবং একটি কলামকে 'বিশিষ্ট' হিসাবে উল্লেখ করা হয়।

    পূর্বাভাস:

ভবিষ্যদ্বাণী হল শর্ত, যা তিন-মূল্যবান যুক্তি তৈরি করে (সত্য/মিথ্যা/অজানা)।

    প্রশ্ন:

ক্যোয়ারী শর্তাবলী ব্যবহার করে ডাটাবেস থেকে প্রয়োজনীয় তথ্য আনয়ন করে।

    বিবৃতি:

বিবৃতি প্রোগ্রামের প্রবাহ, লেনদেন, সংযোগ, ইত্যাদি নিয়ন্ত্রণ করে। এতে একটি সেমিকোলন ‘;.’ জড়িত থাকতে পারে।

    নগণ্য হোয়াইটস্পেস:

SQL ক্যোয়ারীতে অবাঞ্ছিত হোয়াইটস্পেস বিবেচনা করা হয় না, এটি আরও বোধগম্য এবং পঠনযোগ্য করে তোলে।

এখানে আমরা তিনটি ধারা, আপডেট, সেট এবং কোথায় ব্যবহার করে ছোট উদাহরণ দেখব।

  1. হালনাগাদ বয়স;

উপরের ক্যোয়ারীটি বয়সের বৈশিষ্ট্য আপডেট করে।

  1. SET বয়স = বয়স+2;

উপরের একটি অভিব্যক্তি 'বয়স+2' জড়িত, যা বয়সকে দুই দ্বারা বৃদ্ধি করে এবং ফলাফলটি বয়সের জন্য নির্ধারিত হয়।

  1. যেখানে emp_name = 'জন';

এখানে, 'emp_name = 'John' হল একটি predicate, এবং 'John' হল একটি অভিব্যক্তি।

প্রশ্ন প্রক্রিয়াকরণ

এসকিউএল-এ ক্যোয়ারীগুলিকে নিম্ন-স্তরের অভিব্যক্তিতে রূপান্তর করার জন্য প্রক্রিয়া করা হয়, যা কম্পিউটার দ্বারা বোধগম্য। যেকোন ক্যোয়ারী প্রসেসিং-এ পার্সার, ট্রান্সলেটর, ইভোলিউশন ইঞ্জিন, ডাটাবেস ইত্যাদির মতো কিছু উপাদান থাকে। উচ্চ-স্তরের ক্যোয়ারী ফাইল সিস্টেমের ফিজিক্যাল লেভেলের সাথে সামঞ্জস্যপূর্ণ এক্সপ্রেশনে রূপান্তরিত হয়। নীচের চিত্রটি দেখানো হয়েছে যে কীভাবে প্রশ্নটি প্রক্রিয়া করা হয় এবং এটিকে বাস্তব স্তরে বাস্তবায়নের জন্য অপ্টিমাইজ করা হয়।

img 617dd1be21877

প্রথমত, উচ্চ-স্তরের ক্যোয়ারী একটি বোধগম্য অভিব্যক্তিতে রূপান্তরিত হয়, যেমন, বীজগণিতীয় অভিব্যক্তি। এই রূপান্তরের সময়, ক্যোয়ারীটি বিভিন্ন পর্যায়ের মধ্য দিয়ে যায়, যেমনটি উপরের চিত্রে দেখানো হয়েছে। প্রথম পর্যায়ে, পার্সার ক্যোয়ারীটির সিনট্যাক্স পরীক্ষা করে এবং জড়িত সম্পর্ক এবং গুণাবলী সঠিক কিনা তা পর্যবেক্ষণ করে। অনুবাদক প্রশ্নটিকে একটি অভ্যন্তরীণ উপস্থাপনায় রূপান্তরিত করে, যা অপ্টিমাইজারকে দেওয়া হয়।

ক্যোয়ারী অপ্টিমাইজার ক্যোয়ারীটির অভ্যন্তরীণ উপস্থাপনাকে এক্সপ্রেশনে রূপান্তর করে, যা কার্যকর করা যেতে পারে। এই অভিব্যক্তিগুলি তখন ডিবিএমএস ইঞ্জিন বা ক্যোয়ারী মূল্যায়ন ইঞ্জিন দ্বারা কার্যকর করা হয়। ডিবিএমএস ইঞ্জিনের ফলাফল ডাটাবেসের শারীরিক স্তরে দেওয়া হয়।

এসকিউএল ক্লজ

এসকিউএল-এর ধারাটি প্রশ্নের একটি উপাদান। এসকিউএল-এ বেশ কয়েকটি ধারা রয়েছে। আসুন নিচের সিনট্যাক্স সহ প্রতিটি ধারা বিস্তারিতভাবে দেখি।

    ধারা নির্বাচন করুন:

আপনি যখন নির্দিষ্ট কলাম বা সারি থেকে ডেটা পুনরুদ্ধার করতে চান, আপনি SELECT ক্লজ ব্যবহার করতে পারেন। এটি একাধিক টেবিল বা দর্শনের সারি থেকে ডেটা পুনরুদ্ধার করতে পারে। সিলেক্ট স্টেটমেন্টের ফলাফল সেটটিও একটি টেবিল।

বাক্য গঠন:

|_+_|
    স্বতন্ত্র ধারা:

SELECT clause-এর সাথে DISTINCT clause ব্যবহার করা হয়। এটি অনন্য এবং ভিন্ন মান প্রদান করে। ফলাফল সেটে কোনো ডুপ্লিকেট মান উপস্থিত নেই।

বাক্য গঠন:

|_+_|
    যেখানে ধারা:

যেখানে ক্লজটি ডেটা পুনরুদ্ধারের শর্ত উল্লেখ করতে ব্যবহৃত হয়। এটি শর্ত দ্বারা নির্দিষ্ট করা একমাত্র সারিগুলি প্রদর্শন করে।

বাক্য গঠন:

|_+_|
    ধারা দ্বারা গ্রুপ:

এই ধারাটি সারিগুলিকে একটি ফলাফল সেটে গোষ্ঠীভুক্ত করে যেগুলির একই মান রয়েছে৷ SUM, MAX, MIN, COUNT, এবং AVG-এর মত ফাংশন সহ একটি প্রশ্নে GROUP BY ক্লজটি সর্বদা ব্যবহৃত হয়।

বাক্য গঠন:

|_+_|
    অর্ডার করুন:

যখন ফলাফলটিকে আরোহী বা অবরোহ ক্রমে সাজানোর প্রয়োজন হয়, আপনি ORDER BY বিবৃতি ব্যবহার করতে পারেন। ডিফল্টরূপে, এই বিবৃতিটি ফলাফলকে ক্রমবর্ধমান ক্রমে সাজায়। আপনি যদি ফলাফলের সেটকে অবরোহ ক্রমে সাজাতে চান, আপনি ক্যোয়ারীতে 'ডেস্ক' উল্লেখ করতে পারেন।

বাক্য গঠন:

|_+_|
    থাকা:

HAVING কীওয়ার্ডের প্রাথমিক উদ্দেশ্য হল এটি শুধুমাত্র সমষ্টিগত ফাংশনের সাথে ব্যবহার করা হয়, যেমন SUM, MIN, MAX, COUNT এবং AVG। WHERE কীওয়ার্ডটি সামগ্রিক ফাংশনের সাথে সামঞ্জস্যপূর্ণ নয়।

বাক্য গঠন:

|_+_|

এসকিউএল-এ কমান্ড

এসকিউএল কমান্ডগুলিকে পাঁচটি ভিন্ন ধরনের, ডিডিএল, ডিএমএল, ডিকিউএল, টিসিএল এবং ডিসিএলে শ্রেণীবদ্ধ করা হয়েছে। আমরা নীচে এই তিনটি প্রকারের প্রতিটি বিস্তারিতভাবে জানব।

    DDL:

ডেটা ডেফিনিশন ল্যাঙ্গুয়েজ চারটি এসকিউএল কমান্ড নিয়ে গঠিত, তৈরি, পরিবর্তন, ছাঁটাই এবং ড্রপ। এই কমান্ডগুলি টেবিলের গঠন পরিবর্তনের জন্য ব্যবহৃত হয়। এগুলি সবই স্বয়ংক্রিয়ভাবে প্রতিশ্রুতিবদ্ধ, অর্থাৎ, টেবিলের কাঠামোতে করা পরিবর্তনগুলি স্থায়ীভাবে সংরক্ষিত হয়৷

ক্রিয়েট টেবিল স্টেটমেন্টটি ডাটাবেসের নতুন টেবিল, টেবিলের ভিউ বা অন্য কোনো বস্তু তৈরি করতে ব্যবহৃত হয়।

বাক্য গঠন:

|_+_|

উদাহরণ:

|_+_|

অন্য একটি কমান্ড, পরিবর্তন, একটি বিদ্যমান ভিউ বা টেবিলে পরিবর্তন বা পরিবর্তন করতে ব্যবহৃত হয়। alter কমান্ড ব্যবহার করে, আপনি টেবিলে একটি নতুন কলাম যোগ করতে পারেন বা একটি নির্দিষ্ট টেবিলের বিদ্যমান কলাম পরিবর্তন করতে পারেন।

বাক্য গঠন:

|_+_|

উদাহরণ:

|_+_|

ট্রাঙ্কেট ডিডিএল কমান্ড টেবিল থেকে সমস্ত সারি মুছে দেয়। মনে রাখবেন যে এটি টেবিলটি মুছে ফেলবে না।

বাক্য গঠন:

|_+_|

উদাহরণ:

|_+_|

অবশেষে, ড্রপ কমান্ড টেবিল বা ভিউ মুছে দেয়। এটি টেবিলের কাঠামো এবং টেবিলে সংরক্ষিত ডেটা সম্পূর্ণরূপে মুছে ফেলে।

বাক্য গঠন:

|_+_|

উদাহরণ:

|_+_|
    DML:

ডেটা ম্যানিপুলেশন ল্যাঙ্গুয়েজে তিনটি কমান্ড রয়েছে, সন্নিবেশ করা, মুছে ফেলা এবং আপডেট করা। এই কমান্ডগুলি টেবিলের ডেটা পরিবর্তন করে। DDL কমান্ডের বিপরীতে, DML কমান্ড স্বয়ংক্রিয়ভাবে প্রতিশ্রুতিবদ্ধ নয়। আপনি যখন তিনটি কমান্ডের যেকোনো একটি ব্যবহার করেন, তখন আপনাকে স্থায়ীভাবে পরিবর্তনগুলি সংরক্ষণ করতে 'কমিট' কীওয়ার্ড ব্যবহার করতে হবে।

INSERT কমান্ড টেবিলে ডেটা সন্নিবেশ করায়। যখনই টেবিলে কোনো নতুন ডেটা যোগ করা হয়, টিপলের সংখ্যা বৃদ্ধি পায়।

বাক্য গঠন:

|_+_|

বা

|_+_|

উদাহরণ:

|_+_|

পরবর্তী আপডেট বিবৃতি আছে. এই বিবৃতিটি একটি একক বৈশিষ্ট্যের বিদ্যমান মান আপডেট বা সংশোধন করে।

বাক্য গঠন:

|_+_|

উদাহরণ:

|_+_|

অবশেষে, ডিলিট স্টেটমেন্ট টেবিল থেকে নির্দিষ্ট সারি মুছে দেয়।

বাক্য গঠন:

|_+_|

উদাহরণ:

|_+_|
    ডিসিএল:

এসকিউএল-এ, ডাটাবেস থেকে ডেটা ম্যানিপুলেট, অ্যাক্সেস বা মুছে ফেলার জন্য আমরা কিছু কর্তৃপক্ষ বা অধিকার লোকেদের বরাদ্দ করি। আমরা GRANT এবং REVOKE কমান্ড ব্যবহার করে কর্তৃপক্ষকে মঞ্জুর করতে এবং ফিরিয়ে নিতে পারি।

GRANT বিবৃতিটি ডাটাবেস অ্যাক্সেস করার অধিকার প্রদান করতে ব্যবহৃত হয়। ব্যবহারকারীদের অনুমতি দেওয়া হলে ডাটাবেস অ্যাক্সেস করতে পারেন।

বাক্য গঠন:

|_+_|

REVOKE বিবৃতিটি GRANT বিবৃতির বিপরীত। এটি ব্যবহারকারীর কাছ থেকে সমস্ত সুযোগ-সুবিধা কেড়ে নেয় ডাটাবেস অ্যাক্সেস করুন .

|_+_|
    DQL:

ডেটা ক্যোয়ারী ল্যাঙ্গুয়েজে শুধুমাত্র একটি কমান্ড আছে, সিলেক্ট করুন। এই কমান্ডটি টেবিল থেকে নির্দিষ্ট বৈশিষ্ট্য নির্বাচন করতে ব্যবহৃত হয়। এটি নির্দিষ্ট শর্তের উপর নির্ভর করে বৈশিষ্ট্যগুলি নির্বাচন করে।

বাক্য গঠন:

|_+_|

উদাহরণ:

|_+_|
    TCL:

লেনদেন নিয়ন্ত্রণ ভাষাতে তিনটি কমান্ড, কমিট, রোলব্যাক এবং সেভপয়েন্ট জড়িত। আপনি শুধুমাত্র DML কমান্ডের সাথে TCL বিবৃতি ব্যবহার করতে পারেন। এগুলি DDL বিবৃতিগুলির সাথে ব্যবহার করা যাবে না, কারণ তারা স্বয়ংক্রিয়ভাবে ডাটাবেসে স্থায়ীভাবে পরিবর্তনগুলি সংরক্ষণ করে।

কমিট স্টেটমেন্ট ডাটাবেসের টেবিলে স্থায়ীভাবে করা সমস্ত পরিবর্তন সংরক্ষণ করে।

বাক্য গঠন:

|_+_|

উদাহরণ:

|_+_|

আপনি যখন ডাটাবেসে প্রতিশ্রুতিবদ্ধ নয় এমন কোনো পূর্ববর্তী লেনদেন পূর্বাবস্থায় ফেরাতে চান, তখন রোলব্যাক বিবৃতিটি কার্যকর করা যেতে পারে।

বাক্য গঠন:

|_+_|

উদাহরণ:

|_+_|

সবশেষে, SAVEPOINT স্টেটমেন্ট লেনদেনের একটি দক্ষ রোলব্যাক বহন করে। এটি নির্দিষ্ট লেনদেনকে কাঙ্খিত পয়েন্টে ফিরিয়ে দেয়, রোল ব্যাক করার জন্য পুরো লেনদেনের প্রয়োজন হয় না।

বাক্য গঠন:

|_+_|

তথ্য অখণ্ডতা

ডাটাবেসে ডেটা ইন্টিগ্রিটি নির্ভুলতা এবং অন-অপ্রয়োজনীয়তা বোঝায়। ডাটাবেসে উপস্থিত ডেটা সঠিক এবং পুনরাবৃত্তি না হওয়া উচিত। এই উদ্দেশ্যে, আমরা সীমাবদ্ধতা ব্যবহার করি। সাধারণত, সীমাবদ্ধতা মানে সীমাবদ্ধতা বা সীমাবদ্ধতা। এসকিউএল-এ, সীমাবদ্ধতা সারণির কলামগুলিতে প্রবিধান বা নিয়ম বোঝায়। অন্য কথায়, সীমাবদ্ধতাগুলি টেবিলে কোন ডেটা যুক্ত করা উচিত তা নির্দিষ্ট করে। ডেটা কলামে সীমাবদ্ধতা প্রয়োগ করা নিশ্চিত করে নির্ভরযোগ্যতা এবং তথ্যের সঠিকতা।

এসকিউএল

উপরের চিত্রটি বিভিন্ন সীমাবদ্ধতাকে চিত্রিত করে যা তিনটি বিভাগে বিভক্ত, সত্তা অখণ্ডতা, রেফারেন্সিয়াল অখণ্ডতা এবং ডোমেন অখণ্ডতা৷

আপনি টেবিলের কলামে বা সরাসরি টেবিলে সীমাবদ্ধতা প্রয়োগ করতে পারেন। আপনি যদি কলামগুলিতে সীমাবদ্ধতা প্রয়োগ করতে পছন্দ করেন তবে এটিকে কলাম-স্তরের সীমাবদ্ধতা হিসাবে উল্লেখ করা হয়। আপনি এক বা দুটি কলামে কলাম-স্তরের সীমাবদ্ধতা প্রয়োগ করতে পারেন। এবং সম্পূর্ণ টেবিলে সীমাবদ্ধতা ব্যবহার করাকে টেবিল-স্তরের সীমাবদ্ধতা বলা হয়। আপনি যখন টেবিল-স্তরের সীমাবদ্ধতাগুলি প্রয়োগ করেন, তখন এটি টেবিলের সমস্ত কলামে প্রয়োগ করা হয়।

আসুন এখন আমরা উপরের তিনটি ডেটা ইন্টিগ্রিটি ক্যাটাগরি জেনে নেই।

    সত্তা সততা:

সত্তার অখণ্ডতায়, নীচের তিনটি সীমাবদ্ধতা ব্যবহার করে টেবিলের প্রতিটি টিপল অনন্যভাবে চিহ্নিত করা হয়:

  • NULL সীমাবদ্ধতা নয়: এটি নিশ্চিত করে যে টেবিল বা কলামে কোন NULL মান নেই।
  • অনন্য সীমাবদ্ধতা: এই নিয়মটি নির্দিষ্ট করে যে টেবিলের কলামের অনন্য মান থাকবে। কলামের কোনো মান পুনরাবৃত্তি হবে না.
  • প্রাথমিক কী: আপনি যখন টেবিলের যেকোনো কলামে এই সীমাবদ্ধতা প্রয়োগ করেন, তখন সেই কলামটি টেবিলের প্রতিটি সারি বা টিপলকে স্বতন্ত্রভাবে চিহ্নিত করবে।
    উল্লেখ সততা:

আপনি যখন ডাটাবেসের মধ্যে দুটি ভিন্ন টেবিলের সাথে সম্পর্ক করতে চান, আপনি রেফারেন্সিয়াল অখণ্ডতা ব্যবহার করতে পারেন।

  • বিদেশী কী: এটি অনন্যভাবে অন্য টেবিলের একটি সারি বা টিপল সনাক্ত করবে। একটি টেবিলের প্রাথমিক কী অন্য টেবিলে একটি বৈশিষ্ট্য হিসাবে উপস্থিত থাকা উচিত। এই ধরনের একটি বৈশিষ্ট্য ফরেন কী হিসাবে উল্লেখ করা হয়.
    ডোমেন অখণ্ডতা:

ডোমেনের অখণ্ডতা নিশ্চিত করতে ব্যবহৃত হয় যে টেবিলের সমস্ত মান সংজ্ঞায়িত নিয়মগুলি অনুসরণ করে।

  • ডিফল্ট সীমাবদ্ধতা: এটি কলামে ডিফল্ট মান নির্ধারণ করে যখন নির্দিষ্ট মানটি বলা হয় না।
  • সীমাবদ্ধতা পরীক্ষা করুন: আপনি যখন যাচাই করতে চান যে সমস্ত কলামের মান নির্দিষ্ট শর্ত পূরণ করে, আপনি চেক সীমাবদ্ধতা প্রয়োগ করতে পারেন।

INDEX: আপনি যখন ডাটাবেসের ডেটা আনতে বা তৈরি করতে চান, আপনি INDEX ব্যবহার করতে পারেন।

ডাটাবেস স্বাভাবিককরণ

ডাটাবেস নর্মালাইজেশন হল ডাটাবেসের ডাটাকে একটি সুগঠিত বিন্যাসে সংগঠিত করার প্রক্রিয়া। মধ্যে বিভিন্ন স্বাভাবিক ফর্ম আছে ডাটাবেস স্বাভাবিককরণ , যা অপ্রয়োজনীয়তা দূর করতে এবং ডেটা অখণ্ডতা বাড়াতে সাহায্য করে। E. F. Codd ডাটাবেস স্বাভাবিকীকরণ ধারণার প্রস্তাব করেছিলেন। ডাটাবেস স্বাভাবিককরণের জন্য দুটি প্রাথমিক কারণ রয়েছে।

  • ডাটাবেস থেকে বারবার ডেটা মুছে ফেলা হচ্ছে।
  • সমস্ত ডেটা নির্ভরতা সঠিক এবং অর্থপূর্ণ তা নিশ্চিত করা।

অপ্রয়োজনীয় ডেটা অপসারণ ডিস্কের স্থান খালি করতে সাহায্য করবে। ডাটাবেস নর্মালাইজেশন ব্যবহার করে, আপনি একটি ভাল ডাটাবেস তৈরি করতে পারেন এবং যৌক্তিকভাবে ডেটা সংরক্ষণ করতে পারেন। ডাটাবেস নর্মালাইজেশনে বিভিন্ন স্বাভাবিক ফর্ম রয়েছে, যা আপনাকে একটি সুগঠিত ডাটাবেস তৈরি করতে সাহায্য করে। এই স্বাভাবিক ফর্মগুলি নীচে দেওয়া হল:

  • প্রথম সাধারণ ফর্ম
  • দ্বিতীয় সাধারণ ফর্ম
  • তৃতীয় সাধারণ ফর্ম
  • Boyce Codd স্বাভাবিক ফর্ম
  • চতুর্থ সাধারণ ফর্ম
  • পঞ্চম সাধারণ ফর্ম

এসকিউএল ডেটা প্রকার

SQL ডেটা টাইপ ব্যবহার করা ডেটার ধরণকে সংজ্ঞায়িত করে। এসকিউএল-এ ছয়টি বিভিন্ন ধরণের ডেটা টাইপ রয়েছে: সংখ্যাসূচক, তারিখ এবং সময়, অক্ষর এবং স্ট্রিং, ইউনিকোড অক্ষর, বাইনারি এবং বিবিধ। ডাটাবেসে টেবিল তৈরি করার সময় এই ডেটা প্রকারগুলি ব্যবহার করা হয়। প্রতিটি কলাম ডেটা টাইপের জন্য বরাদ্দ করা হয় এবং শুধুমাত্র নির্দিষ্ট ধরনের ডেটা থাকা উচিত।

প্রতিটি রিলেশনাল ডাটাবেস সমস্ত SQL ডাটা প্রকারকে সমর্থন করে না। ওরাকল রিলেশনাল ডাটাবেস DATETIME ডেটা টাইপ সমর্থন করে না, এবং MySQL ডাটাবেস CLOB ডেটা টাইপ সমর্থন করে না। কিছু নির্দিষ্ট ডাটাবেস আছে, যেগুলোতে অতিরিক্ত আলাদা ডাটা টাইপ আছে। মাইক্রোসফ্ট এসকিউএল সার্ভারে, অন্যান্য ডেটা প্রকারগুলি হল 'মানি' এবং 'স্মলমনি।' আসুন এখন নীচের প্রতিটি ডেটা টাইপ নিয়ে আলোচনা করি।

এক. সংখ্যাসূচক ডেটা টাইপ

এসকিউএল-এ এগারোটি বিভিন্ন সাংখ্যিক ডেটা টাইপ রয়েছে, যেগুলিকে দুটি গ্রুপে শ্রেণীবদ্ধ করা হয়েছে। প্রথম গ্রুপে সঠিক সাংখ্যিক ডেটা প্রকার রয়েছে এবং দ্বিতীয়টিতে আনুমানিক সংখ্যাসূচক ডেটা প্রকার রয়েছে। সঠিক সাংখ্যিক ডেটা প্রকারের মধ্যে রয়েছে bigint, int, smallint, tinyint, decimal, money, numeric, smallmoney এবং bit। এবং আনুমানিক সাংখ্যিক ডেটা প্রকারের মধ্যে ফ্লোট এবং বাস্তব জড়িত। নীচের টেবিলগুলি সঠিক এবং আনুমানিক ডেটা প্রকারের পরিসরের মানগুলিকে চিত্রিত করবে।

সঠিক ডেটা প্রকার

ডেটা টাইপ থেকে প্রতি স্টোরেজ
বিট0এক
bigint-9,223,372,036,854,775,8089,223,372,036,854,775,8078 বাইট
tinyint02551 বাইট
ছোট টাকা-214,748.3648+২১৪.৭৪৮.৩৬৪৭4 বাইট
টাকা-922,337,203,685,477.5808+922,337,203,685,477.58078 বাইট
ক্ষুদ্র ক্ষুদ্র অংশ-32,76832,7672 বাইট
int-2,147,483,6482,147,483,6474 বাইট
সংখ্যাসূচক-10^38 +110^38-15 - 17 বাইট
দশমিক-10^38 +110^38-15 - 17 বাইট

আনুমানিক ডেটা প্রকার

ডেটা টাইপ থেকে প্রতি স্টোরেজ
বাস্তব-3.40E + 383.40E + 384 বা 8 বাইট
ভাসা-1.79E + 3081.79E + 3084 বাইট

দুই তারিখ এবং সময়

তারিখ এবং সময় ডেটা টাইপের চারটি ভিন্ন ডেটা প্রকার রয়েছে, তারিখ সময়, তারিখ, সময় এবং ছোট তারিখের সময়। আসুন এখন প্রতিটি তারিখ এবং সময়ের ডেটা টাইপের রেঞ্জিং মানগুলি জানি৷

ডেটা টাইপ থেকে প্রতি স্টোরেজ
ছোট তারিখের সময়জানুয়ারী 1, 1900জুন 6, 20794 বাইট
তারিখ সময়জানুয়ারী 1, 175331 ডিসেম্বর, 99998 বাইট
তারিখ সময়2জানুয়ারী 1, 000131 ডিসেম্বর, 99996 - 8 বাইট
তারিখএই ডেটা টাইপ তারিখটি 30 জুন, 1991 আকারে সংরক্ষণ করে।3 বাইট
সময়এই ডেটা টাইপ সময়কে 12:30 P.M ফর্মে সঞ্চয় করে।3 - 5 বাইট

3. অক্ষর এবং স্ট্রিং

অক্ষর এবং স্ট্রিং ডেটা টাইপ বর্ণমালা এবং শব্দ সন্নিবেশ করতে ব্যবহৃত হয়। নিম্নরূপ চারটি স্বতন্ত্র অক্ষর এবং স্ট্রিং ডেটা প্রকার রয়েছে:

    চর

চর ডেটা টাইপ নির্দিষ্ট দৈর্ঘ্যের এবং সর্বোচ্চ 8,000 অক্ষরের আকার সীমা রয়েছে।

    varchar

এই ডেটা টাইপটি একটি পরিবর্তনশীল-দৈর্ঘ্য, যার সর্বোচ্চ সীমা 8,000 অক্ষর রয়েছে।

    পাঠ্য

পাঠ্য ডেটা টাইপের পরিবর্তনশীল-দৈর্ঘ্য রয়েছে এবং সর্বাধিক আকারের সীমা 2,147,483,647 অক্ষর পর্যন্ত।

    varchar(সর্বোচ্চ)

এই ডেটা টাইপটি পরিবর্তনশীল-দৈর্ঘ্যেরও, যার সর্বোচ্চ আকার সীমা 2E + 31।

উপরের সমস্ত ডেটা টাইপ নন-ইউনিকোড।

চার. বাইনারি:

এসকিউএল-এ চারটি বাইনারি ডেটা প্রকার রয়েছে: বাইনারি, ভারবিনারি, ভারবিনারি (সর্বোচ্চ), এবং চিত্র। নীচে এই প্রতিটি ডেটা প্রকারের একটি সংক্ষিপ্ত বিবরণ রয়েছে৷

    বাইনারি

এই ডেটা টাইপটি নির্দিষ্ট দৈর্ঘ্যের, যার সর্বোচ্চ দৈর্ঘ্য 8,000 বাইট।

    varbinary

varbinary হল আরেকটি বাইনারি ডেটা টাইপ, যার একটি পরিবর্তনশীল দৈর্ঘ্য রয়েছে। এটির সর্বোচ্চ আকার সীমা 8,000 বাইট।

    varbinary(সর্বোচ্চ)

ভারবিনারির মতো, ভারবিনারি(সর্বোচ্চ)ও একটি পরিবর্তনশীল-দৈর্ঘ্যের ডেটা টাইপ, যার সর্বোচ্চ আকার সীমা 2E + 31 বাইট। এটি শুধুমাত্র SQL সার্ভার 2005 এ ব্যবহৃত হয়।

    ইমেজ

ইমেজ হল একটি পরিবর্তনশীল-দৈর্ঘ্যের বাইনারি ডেটা যার সর্বোচ্চ সীমা 2,147,483,647 বাইট।

5. ইউনিকোড ডেটা টাইপ

এই গোষ্ঠীতে চারটি স্বতন্ত্র ডেটা প্রকার রয়েছে: nchar, nvarchar, nvarchar(max), এবং ntext।

    nchar

nchar হল একটি নির্দিষ্ট দৈর্ঘ্যের ইউনিকোড ডেটা টাইপ, যার সর্বোচ্চ দৈর্ঘ্য 4,000 বাইট।

    nvarchar

nchar এর বিপরীতে, nvarchar হল একটি পরিবর্তনশীল-দৈর্ঘ্যের ইউনিকোড যার সর্বোচ্চ আকার 4,000 বাইট।

    nvarchar(সর্বোচ্চ)

nvarchar(max) শুধুমাত্র SQL সার্ভার 2005 ডাটাবেসের সাথে সামঞ্জস্যপূর্ণ। এটির সর্বোচ্চ আকার সীমা 2E + 31 এবং একটি পরিবর্তনশীল দৈর্ঘ্য রয়েছে।

    ntext

ntext হল একটি পরিবর্তনশীল-দৈর্ঘ্যের ইউনিকোড যার সর্বোচ্চ দৈর্ঘ্য 1,073,741,823 বাইট।

6. বিবিধ

নিম্নলিখিত ডেটা প্রকারগুলি বিবিধ গ্রুপের অধীনে পড়ে।

    sql_variant: এটি টাইমস্ট্যাম্প, টেক্সট এবং এনটেক্সট ব্যতীত SQL সার্ভার ডাটাবেস দ্বারা সমর্থিত সমস্ত ডেটা প্রকারের মান ধারণ করে।অনন্য শনাক্তকারী: এই ডেটা টাইপ একটি GUID ধারণ করে, একটি বিশ্বব্যাপী অনন্য শনাক্তকারী।কার্সার: এটি একটি কার্সার বস্তুকে বোঝায়।টাইমস্ট্যাম্প: এটি একটি অনন্য সংখ্যা যা ডাটাবেসের যেকোনো সারি পরিবর্তন করা হলেই পরিবর্তিত হয়।xml: এটি SQL সার্ভার 2005 দ্বারা সমর্থিত এবং xml ডেটা ধারণ করে।টেবিল: এটিতে একটি ফলাফল সেট রয়েছে, যা ভবিষ্যতের উদ্দেশ্যে ব্যবহৃত হয়।

এসকিউএল অপারেটর

অপারেটর হল সংরক্ষিত শব্দ বা অক্ষর। তারা নির্দিষ্ট অপারেশন সঞ্চালনের জন্য বোঝানো হয়. সাধারণত, শর্তটি নির্দিষ্ট করতে WHERE ক্লজে একটি অপারেটর ব্যবহার করা হয়। একজন অপারেটর পাটিগণিত, যৌক্তিক বা তুলনামূলক হতে পারে। আপনি একই বিবৃতিতে দুটি শর্ত একত্রিত করতে একটি অপারেটর ব্যবহার করতে পারেন। এসকিউএল-এ, তিনটি ভিন্ন অপারেটর প্রকার, পাটিগণিত, তুলনা এবং লজিক্যাল অপারেটর রয়েছে।

এক. পাটিগণিত অপারেটর

একজন পাটিগণিত অপারেটর পাটিগণিতের ক্রিয়াকলাপ সম্পাদন করতে পারে, যেমন যোগ, বিয়োগ, গুণ, মডুলাস এবং ভাগ। একটি চলক হিসেবে ‘a, মান 15’ এবং ‘b, মান 30’কে আরেকটি চলক হিসেবে নিই। আমরা নীচে প্রতিটি গাণিতিক অপারেটরের একটি উদাহরণ দেখতে পাব।

অপারেটর বর্ণনা উদাহরণ
+‘+’ অপারেটর দুটি ভেরিয়েবলের সংযোজন করে।a+b=15+30=45
-'-' অপারেটর বাম ভেরিয়েবল থেকে ডান ভেরিয়েবল বিয়োগ করে।a-b =15-30=-15
%যখন বাম চলকটিকে ডান চলক দ্বারা ভাগ করা হয় তখন '%' তার ফলাফল হিসাবে অবশিষ্টাংশ উৎপন্ন করে।b/a=30%15=0
/'/' বিভাগ সম্পাদন করে। বাম চলক মান ডান পরিবর্তনশীল মান দ্বারা ভাগ করা হয়.b/a =30/15=2
*'*' দুটি ভেরিয়েবলকে গুণ করে।a*b=15*30=450

দুই লজিক্যাল অপারেটর

এখানে, আমরা এসকিউএল-এ ব্যবহৃত সমস্ত লজিক্যাল অপারেটর তাদের সংক্ষিপ্ত বিবরণ সহ দেখতে পাব।

  • AND: AND একটি এসকিউএল স্টেটমেন্টে বিভিন্ন শর্ত একত্রিত করার জন্য ব্যবহৃত হয়।
  • BETWEEN: এই অপারেটরটি মান পরিসীমা নির্দিষ্ট করার জন্য ব্যবহৃত হয়। আপনি BETWEEN কীওয়ার্ড ব্যবহার করে সর্বনিম্ন এবং সর্বোচ্চ মান সেট করতে পারেন।
  • IN: আপনি যখন IN কীওয়ার্ড প্রয়োগ করেন, তখন এটি একটি নির্দিষ্ট তালিকায় উপস্থিত অন্যান্য সমস্ত আক্ষরিক মানের সাথে একটি একক মান তুলনা করে।
  • নয়: এই অপারেটরটি অন্যান্য লজিক্যাল অপারেটরের সাথে ব্যবহার করা হয়, যেমন EXISTS, BETWEEN। উদাহরণস্বরূপ, আপনি NOT EXISTS, NOT BETWEEN, NOT IN ইত্যাদি আবেদন করতে পারেন।
  • IS NULL: আপনি যখন NULL মানের সাথে কোনো মান তুলনা করতে চান, আপনি IS NULL ব্যবহার করতে পারেন।
  • সমস্ত: এই অপারেটরটি একটি সেটের একটি মান অন্য সেটের অন্যান্য সমস্ত মানের সাথে তুলনা করার জন্য ব্যবহৃত হয়।
  • যেকোনো: এটি তালিকার যেকোনো ব্যবহারিক মানের সাথে একটি মান তুলনা করে।
  • বিদ্যমান: এটি টেবিলে একটি নির্দিষ্ট সারি উপস্থিত আছে কিনা তা পরীক্ষা করে।
  • LIKE: আপনি যখন একই মানের সাথে একটি মান তুলনা করতে চান, তখন LIKE কীওয়ার্ডটি ব্যবহার করুন।
  • OR: Like AND, OR এছাড়াও WHERE clause-এ বেশ কিছু শর্ত একত্রিত করে।
  • অনন্য: এই কীওয়ার্ডটি টেবিলের প্রতিটি সারির স্বতন্ত্রতা যাচাই করে।

3. তুলনা অপারেটর

তুলনা অপারেটর স্বীকার করার জন্য, আমরা দুটি ভেরিয়েবল নেব, a এবং b। ধরা যাক 'a' 15 'b' 20 হবে।

অপারেটর বর্ণনা উদাহরণ
এটি পরীক্ষা করে যে দুটি ভেরিয়েবলের মান সমান কি না। যদি তারা সমান না হয়, তবে এটি সত্য হয়, অন্যথায় সত্য নয়।(ab) =(1530)=সত্য
==যেমন , == সমান মানের জন্য দুটি ভেরিয়েবলও পরীক্ষা করে। মান সমান হলে, এটি সত্য প্রদান করে।(a==b)=(15==30)=সত্য নয়
!='!=' '.' এর অনুরূপ যদি উভয় ভেরিয়েবলের মান সমান না হয় তবে এটি সত্য উৎপন্ন করে।(ab) =(1530)=সত্য
>বাম ভেরিয়েবলের মান ডান ভেরিয়েবলের চেয়ে বেশি হলে, '>' সত্য দেখায়।(a>b)=(15>30)= সত্য নয়
!>'!>' হল '>' অপারেটরের বিপরীত। বাম পরিবর্তনশীল মান ডান পরিবর্তনশীল মানের চেয়ে বেশি না হলে এটি সত্য দেখায়।(a!>b)=(15!>30)= সত্য
>=বাম অপারেন্ড ডান অপারেন্ডের চেয়ে বড় বা সমান হলে, শর্তটি সত্য হয়ে যায়।(a=30)= সত্য নয়
<যদি বাম পরিবর্তনশীল মান ডান পরিবর্তনশীল মানের থেকে কম হয়, ‘<’ returns true. (প্রতি
!<'!<’ is opposite to the ‘<’ operator. It returns true if the left variable value is not less than the right variable value. (প্রতি
<=যদি বাম অপারেন্ড ডান অপারেন্ডের চেয়ে কম বা সমান হয় তবে শর্তটি সত্য হয়ে যায়।(প্রতি<=b)=(15<=30)= true

এসকিউএল এক্সপ্রেশন

এসকিউএল-এ, একটি অভিব্যক্তি অপারেটর, এক বা একাধিক মান এবং SQL ফাংশন দ্বারা গঠিত। এগুলি সর্বদা WHERE ক্লজে নির্দিষ্ট করা হয়। ডাটাবেস ক্যোয়ারীতে এক্সপ্রেশনের ব্যবহার চিত্রিত করে সিনট্যাক্স নিচে দেওয়া হল।

বাক্য গঠন:

|_+_|

এসকিউএল, বুলিয়ান, সংখ্যাসূচক এবং তারিখে তিন ধরনের এক্সপ্রেশন ব্যবহার করা হয়।

এক. বুলিয়ান এক্সপ্রেশন

বুলিয়ান এক্সপ্রেশন একটি একক মানের সাথে মেলে এমন ডেটা পুনরুদ্ধার করে। এটি সারিগুলি পুনরুদ্ধার করে যা এক্সপ্রেশনে নির্দিষ্ট করা মানের সাথে মেলে।

বাক্য গঠন:

|_+_|

এর আগে, আমরা টেবিলটি তৈরি করেছি, একটি টেবিল-নাম রয়েছে, ‘ছাত্র।’ আমরা SELECT স্টেটমেন্ট ব্যবহার করে এর ডেটা পুনরুদ্ধার করব।

|_+_|

আউটপুট:

|_+_|

এখন, আমরা Student_ID = 1098 মানের সাথে মেলে এমন ডেটা আনব। শুধুমাত্র একটি সারি নিম্নরূপ প্রদর্শিত হবে।

|_+_|

ফলাফল:

|_+_|

দুই সংখ্যাসূচক অভিব্যক্তি

সংখ্যাসূচক রাশি হল গাণিতিক ক্রিয়াকলাপ। এটি নিম্নরূপ প্রকাশ করা হয়:

বাক্য গঠন:

|_+_|

আপনি সংখ্যাসূচক এক্সপ্রেশন ব্যবহার করে যেকোনো গাণিতিক অপারেশন করতে পারেন। এখানে একটি সাংখ্যিক অভিব্যক্তি ব্যবহার করে গাণিতিক ক্রিয়াকলাপ চিত্রিত করার একটি উদাহরণ।

|_+_|

আউটপুট:

|_+_|

এছাড়াও আপনি সাংখ্যিক অভিব্যক্তিতে সমষ্টিগত ফাংশন অন্তর্ভুক্ত করতে পারেন: avg(), সর্বোচ্চ(), গণনা(), মিন(), এবং যোগফল()। এখন, আমরা 'ছাত্র' টেবিলে রেকর্ড বা সারির সংখ্যা গণনা করব।

|_+_|

আউটপুট:

|_+_|

3. তারিখ অভিব্যক্তি

তারিখের অভিব্যক্তি হল SQL-এ সবচেয়ে পছন্দের অভিব্যক্তি, যা সিস্টেমের বর্তমান তারিখ এবং সময় প্রদান করে। আসুন সিস্টেমের বর্তমান তারিখ এবং সময় প্রদর্শনের জন্য ক্যোয়ারী দেখি।

|_+_|

আউটপুট:

|_+_|

এসকিউএল-এ ডেটাবেস বিবৃতি তৈরি করুন, ড্রপ করুন এবং ব্যবহার করুন

এক. ডাটাবেস তৈরি করুন

আমরা টেবিল তৈরি করার আগে, আমাদের প্রথমে ডাটাবেস তৈরি করতে হবে। প্রথমত, আপনি যে ডাটাবেসটিতে কাজ করতে চান তা তৈরি করুন। আমরা এখন দেখব কিভাবে ডাটাবেস তৈরি করতে হয়।

বাক্য গঠন:

|_+_|

আপনাকে অবশ্যই নিশ্চিত করতে হবে যে ডাটাবেসের নাম অনন্য এবং ভিন্ন হওয়া উচিত। এটি আগে ব্যবহার করা উচিত নয়।

এখন নাম সহ ডাটাবেস তৈরি করা যাক।

|_+_|

যেকোন ডাটাবেস তৈরি করার জন্য আপনার অবশ্যই অ্যাডমিন সুবিধা থাকতে হবে। আপনি 'শো ডাটাবেস' কমান্ড ব্যবহার করে তৈরি করা সমস্ত ডেটাবেস দেখতে পারেন। আমরা আগে একাধিক ডাটাবেস তৈরি করেছি: school_info, softwaretestips, test, company, and origin.

|_+_|

ফলাফল:

|_+_|

উপরের আউটপুট তৈরি করা ডাটাবেসের তালিকা প্রদর্শন করে।

দুই ডাটাবেস ড্রপ করুন

ধরুন আমরা উপরের ডাটাবেসগুলির একটি মুছে ফেলতে চাই। এই উদ্দেশ্যে, 'ড্রপ ডেটাবেস' বিবৃতি ব্যবহার করা হয়।

বাক্য গঠন:

|_+_|

বিবেচনা করুন যে আমরা SQL স্কিমা থেকে 'পরীক্ষা' ডাটাবেস মুছে ফেলতে চাই। আপনি যখন কোনো ডাটাবেস মুছে ফেলবেন, এতে উপস্থিত সমস্ত ডেটা মুছে যাবে। ডাটাবেস মুছে ফেলার জন্য আপনার অবশ্যই অ্যাডমিন বিশেষাধিকার থাকতে হবে।

|_+_|

আমরা 'পরীক্ষা' ডাটাবেস মুছে ফেলেছি। আসুন এখন স্কিমাতে উপস্থিত ডাটাবেসের তালিকা দেখি।

|_+_|

আউটপুট:

|_+_|

3. ডাটাবেস ব্যবহার করুন এবং নির্বাচন করুন

আমাদের স্কিমাতে, বেশ কয়েকটি ডাটাবেস রয়েছে। ধরুন আমরা শুধুমাত্র একটি নির্দিষ্ট ডাটাবেস নিয়ে কাজ করতে চাই; আপনাকে সমস্ত ডাটাবেস থেকে একটি বেছে নিতে হবে। একটি ডাটাবেস নির্বাচন করার পরে, আপনি এটিতে সমস্ত DDL অপারেশন করতে পারেন। ডাটাবেস নির্বাচন করার জন্য, একটি USE বিবৃতি আছে।

বাক্য গঠন:

|_+_|

আমরা আমাদের ডাটাবেস তালিকা থেকে একটি ডাটাবেস 'সফ্টওয়্যার টেস্টটিপস' নির্বাচন করব যেখানে আমরা সমস্ত ডাটাবেস অপারেশন সম্পাদন করব।

|_+_|

আপনি যা কিছু তৈরি করেন, টেবিল বা দেখুন, তা 'সফ্টওয়্যার টেস্টটিপস' ডাটাবেসে উপস্থিত থাকবে।

এটি এসকিউএল সম্পর্কে সমস্ত দ্রুত টিউটোরিয়াল ছিল। আমরা এখন 'softwaretesttips' ডাটাবেসে একটি টেবিল তৈরি করব এবং সেই টেবিলে সমস্ত SQL অপারেশন সম্পাদন করব।

ছক তৈরি কর

আমরা তৈরি টেবিল সিনট্যাক্স এবং উদাহরণ দেখেছি। এই বিবৃতিটি নিম্নরূপ লেখা হয়েছে,

|_+_|

তৈরি টেবিল বিবৃতিতে, আমরা টেবিলের নাম, বৈশিষ্ট্য এবং ডেটা প্রকার উল্লেখ করি। আমরা তৈরি টেবিল স্টেটমেন্ট ব্যবহার করে বৈশিষ্ট্যগুলিতে সীমাবদ্ধতাও প্রয়োগ করতে পারি। নিশ্চিত করুন যে টেবিলের নামটি অনন্য এবং আগে ব্যবহার করা হয়নি।

আমরা এখন টেবিল তৈরি করব 'create table' স্টেটমেন্ট ব্যবহার করে। আসুন আমরা একটি 'কর্মচারী' টেবিল তৈরি করি, যা কর্মচারীদের ডেটা সংরক্ষণ করে। আমরা এই টেবিলের জন্য পাঁচটি বৈশিষ্ট্য তৈরি করব: Emp_ID, নাম, বয়স, শহর এবং বেতন।

|_+_|

আমরা EMP_ID, NAME, AGE, CITY, এবং SALARY এর বৈশিষ্ট্যগুলি সহ 'EMPLOYEE' টেবিলটি তৈরি করেছি৷ 'EMPLOYEE' টেবিলের প্রাথমিক কী হল EMP_ID, যা NULL হওয়া উচিত নয়৷ উপরন্তু, NAME এবং AGE বৈশিষ্ট্যগুলিও NULL হওয়া উচিত নয়৷

উপরের তৈরি টেবিল স্টেটমেন্টটি লেখার পরে, আপনি স্ক্রিনে 'টেবিল সফলভাবে তৈরি হয়েছে' বার্তাটি দেখতে পাবেন। আপনি যখন টেবিল বা টেবিল স্কিমার বৈশিষ্ট্যগুলি দেখতে চান, নীচের কমান্ডটি টাইপ করুন:

|_+_|

আউটপুট:

|_+_|

আমরা ড্রপ স্টেটমেন্ট ব্যবহার করে 'কর্মচারী' টেবিলটি ফেলে দিতে পারি।

|_+_|


টেবিলটি ড্রপ করার পরে, এটি ডাটাবেস থেকে মুছে ফেলা হয়। আপনি যদি 'DESC' কমান্ড চালানোর চেষ্টা করেন, তাহলে এটি নিম্নরূপ একটি ত্রুটির কারণ হবে:

|_+_|

সারণীতে মান সন্নিবেশ করান

আমরা শিখেছি কিভাবে একটি নির্দিষ্ট ডাটাবেসে একটি টেবিল তৈরি করতে হয় এবং ডাটাবেস থেকে ড্রপ করতে হয়। এখন, আমরা টেবিলে ডেটা সন্নিবেশ করার উপর ফোকাস করব। এই নিবন্ধের প্রাথমিক বিভাগে, আমরা দেখেছি কিভাবে সন্নিবেশ বিবৃতি লিখতে হয়। এখানে, আমরা উদাহরণ ব্যবহার করে সন্নিবেশ বিবৃতি লিখতে শিখব।

আমরা উপরের সারণীটি নেব, 'কর্মচারী' এবং সন্নিবেশ কীওয়ার্ড ব্যবহার করে এতে কর্মচারীদের ডেটা সন্নিবেশ করাব। টেবিলে ডেটা সন্নিবেশ করার দুটি উপায় রয়েছে।

|_+_|

INSERT বিবৃতি লেখার আরেকটি সহজ ফর্ম হল:

|_+_|

প্রথম বিন্যাসে, আমরা কলাম এবং মান নির্দিষ্ট করেছি। আমরা শুধুমাত্র দ্বিতীয় বিন্যাসে নির্দিষ্ট মান আছে. দ্বিতীয় বিন্যাসটি ব্যবহার করার সময়, নিশ্চিত করুন যে আপনি টেবিল তৈরির সময় বৈশিষ্ট্যগুলি নির্দিষ্ট করে রেখে সঠিক ক্রমে মান সন্নিবেশ করান।

আসুন এখন কর্মচারী টেবিলে কর্মচারীদের তথ্য সন্নিবেশ করা যাক।

|_+_|

আমরা প্রথম ফরম্যাট ব্যবহার করে ছয়জন কর্মচারীর তথ্য সন্নিবেশ করেছি। দ্বিতীয় বিন্যাসটি ব্যবহার করে একজন কর্মচারীর ডেটা সন্নিবেশ করা যাক।

|_+_|

এখন, কর্মচারী টেবিলে সাতটি রেকর্ড বা সারি রয়েছে। কর্মচারী টেবিলে ডেটা প্রদর্শনের জন্য, SELECT স্টেটমেন্ট ব্যবহার করা হয়। এখন SELECT স্টেটমেন্টে ফোকাস করা যাক।

বিবৃতি নির্বাচন করুন

SELECT স্টেটমেন্টটি একটি নির্দিষ্ট টেবিল থেকে ডেটা পুনরুদ্ধার করার জন্য ব্যবহৃত হয়। যখন আমরা SELECT স্টেটমেন্ট ব্যবহার করে ডেটা আনয়ন করি, তখন এটি টেবিল ফর্ম্যাটে ডেটা ফেরত দেয়। এর আগে, আমরা কীভাবে SELECT স্টেটমেন্ট লিখতে হয় তা দেখেছি।

|_+_|

উপরের বিবৃতিটি নির্দিষ্ট টেবিল থেকে শুধুমাত্র কলাম 1 এবং কলাম 2 প্রদর্শন করবে। আপনি যদি একটি নির্দিষ্ট টেবিলের সমস্ত ডেটা দেখাতে চান তবে সমস্ত কলাম নির্দিষ্ট করার পরিবর্তে '*' ব্যবহার করা হয়।

|_+_|

আমরা EMPLOYEE টেবিল থেকে সমস্ত ডেটা প্রদর্শন করব।

|_+_|

আউটপুট:

|_+_|

ধরুন আপনি শুধুমাত্র কর্মচারীদের নাম এবং আইডি পুনরুদ্ধার করতে চান; আপনি SELECT বিবৃতিতে EMP_ID এবং NAME নির্দিষ্ট করতে পারেন।

|_+_|

আউটপুট:

|_+_|

WHERE ক্লজ

WHERE ক্লজটি ডেটা পুনরুদ্ধারের শর্ত নির্ধারণ করতে ব্যবহার করা হয়। এটি দুটি ভিন্ন টেবিল একত্রিত করতেও ব্যবহার করা হয়। যখন আপনি WHERE ক্লজে নির্দিষ্ট শর্ত প্রয়োগ করেন, তখন শর্তটি সত্য হলেই ডেটা পুনরুদ্ধার করা হয়। ব্যবহারকারীদের নির্দিষ্ট তথ্যের প্রয়োজন হলে WHERE কীওয়ার্ডটি সাধারণত ব্যবহৃত হয়। এই কীওয়ার্ডটি DELETE এবং UPDATE বিবৃতিতে ব্যবহৃত হয়।

|_+_|

এই অবস্থায়, আমরা যৌক্তিক এবং তুলনা অপারেটর ব্যবহার করতে পারি। কর্মচারী টেবিল বিবেচনা করুন. আসুন এখন সমস্ত কর্মচারী আইডি, নাম এবং বেতন পুনরুদ্ধার করি যাদের বেতন 40,000 এর বেশি বা সমান। অতএব, আমরা WHERE ক্লজে বেতন >= 40,000 হিসাবে শর্তটি উল্লেখ করব।

|_+_|

আউটপুট:

|_+_|

ফলাফল সেটে সমস্ত কর্মচারী আইডি, নাম এবং বেতন রয়েছে, যাদের বেতন 40,000 এর বেশি বা সমান।

WHERE বিবৃতিতে আপনার শর্তে যদি স্ট্রিং থাকে তবে এটি একক উদ্ধৃতিতে লিখুন (‘ ‘)। মেরি নামের একজন কর্মচারীর নাম, আইডি এবং বয়স পুনরুদ্ধার করা যাক।

|_+_|

আউটপুট:

|_+_|

এবং এবং বা অপারেটর

AND এবং OR অপারেটর দুটি বা ততোধিক ভিন্ন অবস্থাকে একত্রিত করে। যখন আপনার টেবিল থেকে সুনির্দিষ্ট এবং সংক্ষিপ্ত ডেটার প্রয়োজন হয়, আপনি AND বা OR অপারেটর ব্যবহার করে বেশ কয়েকটি শর্তে যোগ দিতে পারেন।

আপনি যখন AND অপারেটর ব্যবহার করে শর্তগুলিকে একত্রিত করেন, তখন সমস্ত শর্ত সন্তুষ্ট হলেই এটি ফলাফল প্রদান করে। কোনো শর্ত সন্তুষ্ট হলে এটি ডেটা ফেরত দেবে না। আমরা জানি যে WHERE কীওয়ার্ডে অপারেটর ব্যবহার করা হয়। এটি নিম্নরূপ লেখা হয়:

|_+_|

আপনি বেশ কয়েকটি শর্ত উল্লেখ করতে পারেন। কর্মচারী টেবিল বিবেচনা করুন. আসুন এখন 40 বছরের বেশি বয়সী এবং বেতন 35,000-এর বেশি বা সমান কর্মচারীদের নাম, আইডি, বয়স এবং বেতন পুনরুদ্ধার করি।

|_+_|

আউটপুট:

|_+_|

উভয় শর্ত ধরে রাখলে কর্মচারী ডেটা পুনরুদ্ধার করা হয়।

OR অপারেটর দুটি বা ততোধিক শর্তকে একত্রিত করে। AND কীওয়ার্ডের বিপরীতে, OR ক্লজ ব্যবহার করে WHERE কীওয়ার্ডে নির্দিষ্ট করা সমস্ত শর্ত সত্য হওয়ার প্রয়োজন নেই। এমনকি একটি শর্ত সত্য হলেও, এটি ফলাফল সেটে ডেটা লিখবে। আপনি নীচের হিসাবে OR কীওয়ার্ড ব্যবহার করে বেশ কয়েকটি শর্ত নির্দিষ্ট করতে পারেন:

|_+_|

টেবিল এমপ্লয়ি থেকে, আমরা নাম, শহর এবং বেতন পুনরুদ্ধার করব, যার শহর ক্যালিফোর্নিয়া বা বেতন 30,000।

|_+_|

আউটপুট:

|_+_|

উপরের ফলাফল সেটে এমন সমস্ত কর্মচারীর নাম রয়েছে যারা হয় ক্যালিফোর্নিয়ায় থাকেন বা 30,000 বেতন পান।

ক্লজ আছে

আপনি যখন আরও নির্দিষ্ট ডেটাতে আপনার ফলাফল ফিল্টার করতে চান, তখন HAVING ক্লজ ব্যবহার করা হয়। আপনি HAVING কীওয়ার্ডে শুধুমাত্র সমষ্টিগত ফাংশন প্রয়োগ করতে পারেন, যা ডেটা পুনরুদ্ধারের শর্ত নির্দিষ্ট করবে। নিম্নলিখিত HAVING কীওয়ার্ড লেখার ফর্ম:

|_+_|

আমরা টেবিল নেব, টেবিল-নাম, কর্মচারী2। টেবিলটি নিম্নরূপ:

|_+_| |_+_|

আউটপুট:

|_+_|

সামগ্রিক ফাংশন

মধ্যে সমষ্টি ফাংশন ডাটাবেস ব্যবস্থাপনা সিস্টেম রেকর্ড থেকে একাধিক ডেটা নেয় এবং গণনার পরে একটি একক মান ফেরত দেয়। পাঁচটি ভিন্ন সমষ্টিগত ফাংশন আছে: যোগফল(), গড়(), গণনা(), মিন(), এবং সর্বোচ্চ()। এই সমস্ত ফাংশন গণনা() ফাংশন ছাড়া শুধুমাত্র সংখ্যাসূচক ডেটাতে প্রয়োগ করা যেতে পারে। আসুন নীচে প্রতিটি ফাংশন সম্পর্কে বিস্তারিত আলোচনা করি। আমরা উদাহরণ সহ সমষ্টিগত ফাংশন বোঝার জন্য কর্মচারী টেবিলটি নেব।

|_+_|
    যোগফল():sum() ফাংশন কলামে উপস্থিত সমস্ত সংখ্যার যোগফল প্রদান করে। উপরের সারণীতে, আমরা sum() ফাংশন ব্যবহার করে সমস্ত কর্মচারীদের বেতন যোগ করব। এটি একাধিক ডেটা নেয় এবং একটি একক মান প্রদান করে।
|_+_|

ফলাফল:

|_+_|
    গড়():avg() ফাংশন একটি একক মান প্রদান করে। এটি একটি কলামে উপস্থিত সমস্ত ডেটা সংখ্যার যোগফল গণনা করে এবং এটিকে কলামের মোট সংখ্যা দ্বারা ভাগ করে। avg() ফাংশন সমস্ত সাংখ্যিক ডেটার গড় গণনা করে।
|_+_|

ফলাফল:

|_+_|
    সর্বোচ্চ():যখন আপনাকে ডেটা সেট থেকে সর্বাধিক মান খুঁজে বের করতে হবে, আপনি একটি নির্দিষ্ট কলামে max() ফাংশন প্রয়োগ করতে পারেন। এটি ফলাফল সেটে একটি একক মানও প্রদান করে।
|_+_|

আউটপুট:

|_+_|
    মিন ():min() ফাংশনটি max() ফাংশনের বিপরীত। এটি নির্দিষ্ট কলাম থেকে সর্বনিম্ন মান প্রদান করে।
|_+_|

আউটপুট:

|_+_|
    গণনা():Count() টেবিলে রেকর্ডের সংখ্যা গণনা করতে ব্যবহৃত হয়। আপনি টেবিলের সমস্ত ধরণের ডেটাতে count() ফাংশন প্রয়োগ করতে পারেন। এটি NULL এবং ডুপ্লিকেট ডেটাও বিবেচনা করে। আপনি যদি ডুপ্লিকেট ডেটা অপসারণ করতে চান, তাহলে আপনাকে DISTINCT কীওয়ার্ড যোগ করতে হবে।
|_+_|

আউটপুট:

|_+_|

কাউন্ট() ফাংশনটি এমপ্লয়ি সারণিতে প্রকারের সংখ্যা প্রদান করে।

|_+_|

আউটপুট:

|_+_|

এখানে, আমরা CITY কলামে count() ফাংশনের সাথে DISTINCT কীওয়ার্ড ব্যবহার করেছি। এটি স্বতন্ত্র শহরের নামের গণনা ফিরিয়ে দিয়েছে। আপনি count() ফাংশনের সাথে WHERE বাক্যাংশ যোগ করতে পারেন।

|_+_|

আউটপুট:

|_+_|

আমরা এমন কিছু কর্মচারী পেয়েছি যাদের বয়স 40-এর বেশি।

কীওয়ার্ড আপডেট করুন

আপনি যদি টেবিলে উপস্থিত ডেটা পরিবর্তন করতে চান তবে আপনি আপডেট কীওয়ার্ডটি ব্যবহার করতে পারেন। আপডেট কীওয়ার্ডের সাথে, আপনি WHERE কীওয়ার্ড যোগ করতে পারেন। WHERE কীওয়ার্ড ব্যবহার করে, আপনি শুধুমাত্র সেই রেকর্ডগুলি আপডেট করতে পারেন যা আপনি পরিবর্তন করতে চান। আপনি WHERE কীওয়ার্ড যোগ না করলে, সমস্ত রেকর্ড আপডেট করা হবে। আপনি নিম্নলিখিত উপায়ে আপডেট ক্যোয়ারী লিখতে পারেন:

|_+_|

আপনি যদি দুটি বা ততোধিক রেকর্ডে পরিবর্তনগুলি প্রয়োগ করতে চান, আপনি AND এবং OR অপারেটরগুলিতে আবেদন করতে পারেন৷ কর্মচারী টেবিল নিন. আমরা একজন কর্মচারীর বয়স আপডেট করব, যার আইডি 405 থাকবে। আমরা 37 থেকে 40 বছর বয়স নির্ধারণ করব।

|_+_|

আপনি যখন একজন কর্মচারীর বয়স আপডেট করেন, যার ID 405, এই পরিবর্তনটি টেবিলে প্রতিফলিত হবে। আমরা জানতে পারব কিভাবে কর্মচারী টেবিল পরিবর্তনের পরে দেখাবে।

আউটপুট:

|_+_|

এখন ধরুন আপনি আইডি 407 বিশিষ্ট একজন কর্মচারীর বেতন এবং বয়স পরিবর্তন করতে চান। আমরা বেতন নির্ধারণ করব 55,000 এবং বয়স 35।

|_+_|

আউটপুট:

|_+_|

উপরের টেবিলে আপডেট করা তথ্য রয়েছে।

প্রশ্ন মুছুন

আপনি যখন টেবিল থেকে কোনো রেকর্ড মুছে ফেলতে চান, ডিলিট কীওয়ার্ড ব্যবহার করা হয়। আপনি যদি নির্দিষ্ট টিপল বা সারি মুছতে চান তবে শর্তটি নির্দিষ্ট করার জন্য WHERE কীওয়ার্ড যোগ করুন। AND বা OR অপারেটর ব্যবহার করে বেশ কয়েকটি শর্ত একত্রিত করুন। আপনি নীচে দেওয়া হিসাবে মুছে ফেলা প্রশ্ন লিখতে পারেন:

|_+_|

উদাহরণস্বরূপ, কর্মচারী টেবিল নিন। আমরা কর্মচারী আইডি 405 সহ কর্মচারী রেকর্ড মুছে ফেলব।

|_+_|

উপরের ক্যোয়ারীটি কার্যকর করার পরে কর্মচারী আইডি 405 থাকা কর্মচারী রেকর্ডটি টেবিলে অন্তর্ভুক্ত করবে না।

আউটপুট:

|_+_|

আপনি যদি টেবিল থেকে সমস্ত সারি মুছে ফেলতে চান তবে নীচের প্রশ্নটি ব্যবহার করুন,

|_+_|

এই ক্যোয়ারীটি কার্যকর করার পরে, শুধুমাত্র ডেটা মুছে ফেলা হবে, টেবিল স্কিমা নয়।

ধারা দ্বারা আদেশ

আপনি ORDER BY বাক্যাংশ ব্যবহার করে আপনার কলামের ডেটা ক্রমবর্ধমান বা অবরোহী ক্রমে অর্ডার করতে পারেন। ডিফল্টরূপে, কলামের তথ্য ক্রমবর্ধমান ক্রমে সাজানো হয়। ORDER BY বাক্যাংশ লেখার জন্য নিচের বিন্যাসটি অনুসরণ করুন।

|_+_|

কলাম-তালিকায় এমন সমস্ত কলাম থাকা উচিত যা আপনি সাজাতে বা সাজাতে চান। একটি সাধারণ উদাহরণ দিয়ে এই বাক্যাংশটি বোঝার জন্য একই কর্মচারী টেবিল নিন। আমরা কলামের তালিকায় কলামের নাম, NAME এবং SALARY যোগ করব।

|_+_|

সারণী ক্রমানুসারে নাম অনুসারে সাজানো হবে।

আউটপুট:

|_+_|

এখন, আমরা NAME কলাম ব্যবহার করে নিচের ক্রমে টেবিল তৈরি করব।

|_+_|

আউটপুট:

|_+_|

ধারা দ্বারা GROUP

অভিন্ন ডেটা গ্রুপিংয়ের জন্য, GROUP BY ক্লজ ব্যবহার করা হয়। WHERE কীওয়ার্ডটি সর্বদা GROUP BY clause দ্বারা অনুসরণ করা হয় এবং GROUP BY বাক্যাংশটি ORDER BY clause দ্বারা অনুসরণ করা হয়। এটি WHERE ক্লজে শর্ত দ্বারা নির্দিষ্ট গ্রুপে অনুরূপ ডেটা গোষ্ঠীভুক্ত করে। GROUP BY ধারাটি নিম্নরূপ লেখা হয়েছে:

|_+_|

আমরা অন্য টেবিলে GROUP BY বাক্যাংশ প্রয়োগ করব। নীচের সারণী কর্মচারী 1 বিবেচনা করুন.

|_+_|

এখানে, স্টিভ ক্যালিফোর্নিয়ার পাশাপাশি শিকাগোতেও কাজ করে। অতএব, আমরা GROUP BY বাক্যাংশ ব্যবহার করে স্টিভের ডেটা গ্রুপ করতে পারি, যা তার নাম এবং সামগ্রিক বেতন প্রদর্শন করবে।

|_+_|

আউটপুট:

|_+_|

আলাদা কীওয়ার্ড

DISTINCT কীওয়ার্ড টেবিল থেকে সমস্ত ডুপ্লিকেট মান সরিয়ে দেয়। অনেক টেবিলে অপ্রয়োজনীয় বা ডুপ্লিকেট ডেটা থাকতে পারে। এই ধরনের পরিস্থিতিতে, DISTINCT কীওয়ার্ড ব্যবহার করে অনন্য ডেটা পুনরুদ্ধার করতে সাহায্য করবে। আপনি যে কলামগুলি থেকে অনন্য ডেটা আনতে হবে তা নির্দিষ্ট করতে পারেন৷ নিম্নলিখিতটি DISTINCT কীওয়ার্ড লেখার ফর্ম:

|_+_|

DISTINCT কীওয়ার্ড কীভাবে কাজ করে তা বোঝার জন্য, আসুন কর্মচারী টেবিলটি নেওয়া যাক। প্রথমত, আমরা বেতন দ্বারা ঊর্ধ্বক্রম অনুসারে টেবিলটি সাজাব।

|_+_|

আউটপুট:

|_+_|

উপরের ফলাফল সেটে, ডুপ্লিকেট ডেটা রয়েছে, অর্থাৎ, 30,000 দুটি ভিন্ন সারিতে উপস্থিত রয়েছে। যখন আমরা DISTINCT কীওয়ার্ড প্রয়োগ করি, ফলাফলে কোনো ডুপ্লিকেট ডেটা থাকবে না।

|_+_|

আউটপুট:

|_+_|

এসকিউএল যোগদান করুন

এসকিউএল-এ, যোগ দুই বা ততোধিক টেবিলের রেকর্ড একক টেবিলে একত্রিত করে। একটি JOIN হল টেবিলের সাধারণ কলামগুলি ব্যবহার করে টেবিলগুলিকে একত্রিত করার একটি উত্স। আমরা কীভাবে যোগদান করা হয় তা স্বীকার করার একটি উদাহরণ দেখতে পাব।

আমরা দুটি টেবিল নেব এবং তাদের মধ্যে সাধারণ বৈশিষ্ট্যের উপর ভিত্তি করে এই দুটি টেবিলে যোগদান করব। কর্মচারী টেবিল নিন. আমরা আরেকটি টেবিল তৈরি করব, ডিপার্টমেন্ট।

|_+_|

এখন আমাদের দুটি টেবিল আছে। আমরা এই দুটি টেবিলে যোগ দেব এবং ফলাফল সেট প্রদর্শন করব। উভয় টেবিলে একটি সাধারণ বৈশিষ্ট্য রয়েছে, EMP_ID।

|_+_|

নিম্নরূপ ফলাফল:

|_+_|

WHERE ক্লজে, আমরা বেশ কয়েকটি অপারেটর ব্যবহার করে টেবিল বা সম্পর্ক যুক্ত করতে পারি: , =, এর মধ্যে, !, না, ইত্যাদি। যোগদানকে বিভিন্ন প্রকারে ভাগ করা যায়। INNER যোগদান টেবিলে যোগদান করে এবং দুটি সম্পর্কের মধ্যে মেলে এমন ডেটার ফলাফল প্রদান করে। আরেকটি যোগদান হল বাম যোগদান, যা বাম টেবিল থেকে সমস্ত ডেটা প্রদান করে। ডান টেবিলের সাথে বাম টেবিলের কোন মিল না থাকলে NULL লেখা হয়। ডান যোগদান সঠিক টেবিল থেকে সমস্ত ডেটা তৈরি করে। সঠিক টেবিলের জন্য যার মিল পাওয়া যাচ্ছে না, NULL লিখুন।

বাম যোগদান

বাম যোগ দুটি সম্পর্ককে একত্রিত করে যার মধ্যে একটি সাধারণ বৈশিষ্ট্য রয়েছে। আপনি উভয় সম্পর্ক থেকে প্রদর্শনের জন্য কলাম নির্দিষ্ট করতে পারেন। বাম টেবিল থেকে সমস্ত ডেটা ফলাফল সেটে উপস্থিত রয়েছে। ডান টেবিলের ডেটা বাম টেবিলের ডেটার সাথে মেলে না, NULL লেখা হয়। আমরা এমপ্লয়ি এবং ডিপার্টমেন্ট ব্যবহার করে বাম যোগদানের একটি উদাহরণ দেখতে পাব।

|_+_|

বিভাগ

|_+_|

আমরা এখন বাম যোগদান কীওয়ার্ড ব্যবহার করে এই দুটি সম্পর্ক যোগ করার জন্য ক্যোয়ারী লিখব।

|_+_|

ফলাফল:

|_+_|

ডান যোগদান

ডান যোগ দুটি টেবিলের সাথে যোগদান করে। যখন আমরা দুটি সম্পর্কের উপর ডান যোগ প্রয়োগ করি, তখন এটি বাম টেবিলের সাথে মিলে যাওয়া সমস্ত ডান টেবিলের ডেটা প্রদর্শন করবে। ডান টেবিল ডেটার সাথে বাম টেবিলের মিল না থাকার জন্য, NULL লেখা হয়। সঠিক যোগ কীওয়ার্ড বোঝার জন্য আমরা একই দুটি সম্পর্ক, এমপ্লয়ি এবং ডিপার্টমেন্ট নেব।

|_+_|

আউটপুট:

|_+_|

উপসংহার

একটি স্ট্রাকচার্ড কোয়েরি ল্যাঙ্গুয়েজ (SQL) সমস্ত প্রধান ডাটাবেস দ্বারা ব্যবহৃত হয়: MySQL, MS Access, Oracle, ইত্যাদি। এই ভাষাটি ব্যবহারকারীদের ডাটাবেসে টেবিল তৈরি করতে এবং বেশ কয়েকটি ক্লজ, অপারেটর, স্টেটমেন্ট ব্যবহার করে ম্যানিপুলেট করতে সক্ষম করে। এই নিবন্ধটি নতুনদের জন্য SQL দ্রুত রেফারেন্স। নবীন ব্যবহারকারীরা এই টিউটোরিয়াল থেকে সমস্ত SQL বেসিক শিখতে পারে।

এই পোস্টটি হল SQL দ্রুত রেফারেন্স, যা ডাটাবেসের ডেটা ম্যানিপুলেট করার বিষয়ে প্রাথমিক জ্ঞান প্রদান করবে। আমরা DML, DDL, TCL, DQL, DCL কমান্ডের সমস্ত মৌলিক সিনট্যাক্স দেখেছি। পরে, আমরা বিভিন্ন ধারা, ডেটা ইন্টিগ্রিটি, ডেটা টাইপ, অপারেটর এবং এক্সপ্রেশন শিখেছি। পরবর্তী বিভাগে, আমরা ডেটাবেসে ডেটা তৈরি, ম্যানিপুলেট এবং ড্রপ করার উদাহরণ দেখেছি।