যদি পোস্টগ্রেসেলে মানগুলি ইতিমধ্যে বিদ্যমান না থাকে তবে সারি সন্নিবেশ করান

Insert Row If Values Don T Already Exist Postgresl



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

বাক্য গঠন

>> সন্নিবেশ করান INTOTABLENAME(কলাম 1,কলাম) মান ('মান 1', 'মান 2');

এখানে, একটি কলাম হল টেবিলের বৈশিষ্ট্য। মান লিখতে কীওয়ার্ড VALUE ব্যবহার করা হয়। 'মান' হল টেবিলের ডেটা যা প্রবেশ করতে হবে।







PostgreSQL শেল (psql) এ সারি ফাংশন োকানো

Postgresql সফলভাবে ইনস্টল করার পর, আমরা ডাটাবেসের নাম, পোর্ট নম্বর এবং পাসওয়ার্ড লিখব। Psql চালু করা হবে। তারপর আমরা যথাক্রমে প্রশ্ন সম্পাদন করব।





উদাহরণ 1: টেবিলে নতুন রেকর্ড যোগ করতে INSERT ব্যবহার করা
সিনট্যাক্স অনুসরণ করে, আমরা নিম্নলিখিত প্রশ্ন তৈরি করব। টেবিলে একটি সারি সন্নিবেশ করানোর জন্য, আমরা গ্রাহক নামের একটি টেবিল তৈরি করব। সংশ্লিষ্ট টেবিলে 3 টি কলাম রয়েছে। নির্দিষ্ট কলামের ডেটা-টাইপ উল্লেখ করতে হবে সেই কলামে ডেটা প্রবেশ করতে এবং অপ্রয়োজনীয়তা এড়াতে। একটি টেবিল তৈরি করার প্রশ্ন হল:





>> সৃষ্টি টেবিলক্রেতা(আইডিint,নাম varchar (40), দেশvarchar (40));

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



>> সন্নিবেশ করান মধ্যেক্রেতা(আইডি,নাম, দেশ) মান ('1','আলিয়া', 'পাকিস্তান');

প্রতিটি সফল সন্নিবেশের পরে, আউটপুট হবে 0 1, যার মানে হল যে 1 সারি একবারে োকানো হয়। আগে উল্লিখিত ক্যোয়ারীতে, আমরা 4 বার ডেটা সন্নিবেশ করেছি। ফলাফল দেখতে, আমরা নিম্নলিখিত প্রশ্নটি ব্যবহার করব:

>> নির্বাচন করুন*থেকেক্রেতা;

উদাহরণ 2: একক প্রশ্নে একাধিক সারি যোগ করার জন্য INSERT বিবৃতি ব্যবহার করা
একই পদ্ধতি ডেটা inোকাতে ব্যবহৃত হয় কিন্তু অনেকবার সন্নিবেশ বিবৃতি প্রবর্তন করে না। আমরা একটি নির্দিষ্ট প্রশ্ন ব্যবহার করে একবারে ডেটা প্রবেশ করাব; একটি সারির সমস্ত মান নিম্নলিখিত ক্যোয়ারী ব্যবহার করে আলাদা করা হয়, আমরা প্রয়োজনীয় আউটপুট অর্জন করব

উদাহরণ 3: অন্য টেবিলে সংখ্যার উপর ভিত্তি করে একটি টেবিলে একাধিক সারি সন্নিবেশ করান
এই উদাহরণটি একটি টেবিল থেকে অন্য টেবিলে তথ্য সন্নিবেশের সাথে সম্পর্কিত। দুটি টেবিল, a এবং b বিবেচনা করুন। টেবিল এ এর ​​2 টি গুণ আছে, যেমন, নাম এবং শ্রেণী। একটি CREATE ক্যোয়ারী প্রয়োগ করে, আমরা একটি টেবিল চালু করব। টেবিল তৈরির পরে, একটি সন্নিবেশ ক্যোয়ারী ব্যবহার করে ডেটা প্রবেশ করা হবে।

>> সৃষ্টি টেবিলপ্রতি(নাম varchar (30),শ্রেণী varchar (40));
>> Insোকান মধ্যেপ্রতিমান ('আমনা',),('ভীষ্ম', '2'),('জাভেদ', '3'),('নিচে',4');

অত্যাধিক তত্ত্ব ব্যবহার করে টেবিলে চারটি মান সন্নিবেশিত করা হয়। আমরা নির্বাচিত বিবৃতি ব্যবহার করে পরীক্ষা করতে পারি।

একইভাবে, আমরা সব নাম এবং বিষয়ের গুণাবলী সম্বলিত টেবিল বি তৈরি করব। 2োকাতে এবং সংশ্লিষ্ট টেবিল থেকে রেকর্ড আনতে একই 2 টি প্রশ্ন প্রয়োগ করা হবে।

>> সৃষ্টি টেবিল(সব নাম varchar(30), বিষয় varchar(70));

নির্বাচিত তত্ত্ব দ্বারা রেকর্ডটি পান।

>> নির্বাচন করুন*থেকেখ;

টেবিলের মান সন্নিবেশ করা টেবিলে, আমরা নিম্নলিখিত প্রশ্নটি ব্যবহার করব। এই প্রশ্নটি এমনভাবে কাজ করবে যাতে টেবিলের সমস্ত নাম টেবিলে ertedোকানো হবে প্রতি সংখ্যার গণনার সাথে যা সারণির সংশ্লিষ্ট কলামে একটি নির্দিষ্ট সংখ্যার ঘটনার সংখ্যা দেখায় । b.allnames টেবিল নির্দিষ্ট করার জন্য অবজেক্ট ফাংশনকে প্রতিনিধিত্ব করে। গণনা (b.allnames) ফাংশন মোট ঘটনা গণনা করতে কাজ করে। যেহেতু প্রতিটি নাম একবারে ঘটেছে, ফলে কলামে 1 নম্বর থাকবে।

>> Insোকান মধ্যেপ্রতি(নাম,শ্রেণী) নির্বাচন করুনb.allnames, count(b.allnames) থেকেগ্রুপ দ্বারাb.allnames;

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

>> সন্নিবেশ করান মধ্যে(সব নাম, বিষয়) নির্বাচন করুন*থেকে (নির্বাচন করুন'কিনজা'হিসাবেসব নাম, 'ইসলামী'হিসাবেবিষয়) হিসাবেtmpকোথায় না বিদ্যমান ( নির্বাচন করুনসব নামথেকেকোথায়সব নাম='সুন্দাস'সীমা );

উদাহরণ 5: INSERT স্টেটমেন্ট ব্যবহার করে PostgreSQL Upsert
এই ফাংশনের দুটি জাত রয়েছে:

  • আপডেট: যদি কোন দ্বন্দ্ব ঘটে, যদি রেকর্ডটি টেবিলে বিদ্যমান ডেটার সাথে মিলে যায়, এটি নতুন ডেটা দিয়ে আপডেট করা হয়।
  • যদি দ্বন্দ্ব হয়, কিছুই করবেন না : যদি কোনো রেকর্ড টেবিলে বিদ্যমান ডেটার সাথে মিলে যায়, তাহলে সে রেকর্ড এড়িয়ে যায়, অথবা যদি কোনো ত্রুটি প্রতিষ্ঠিত হয়, তাও উপেক্ষা করা হয়।

প্রাথমিকভাবে, আমরা কিছু নমুনা ডেটা সহ একটি টেবিল তৈরি করব।

>> সৃষ্টি টেবিলtbl2(আইডিআইএনটি প্রাথমিক চাবি,নাম অক্ষর পরিবর্তন);

টেবিল তৈরির পর আমরা ক্যোয়ারী ব্যবহার করে tbl2- এ ডেটা ertোকাবো:

>> সন্নিবেশ করান INTOtbl2মান (,'উজমা'),(2,'আবদুল'),(3,'হামনা'),(4,'ফাতিমা'),(5,'শিজা'),(6,'জাভেরিয়া');

যদি কোন বিরোধ দেখা দেয়, আপডেট করুন:

>>সন্নিবেশ করান INTOtbl2মান (8,'রাইড') চালুকনফ্লিক্ট(আইডি) ডিও হালনাগাদ সেট করুন নাম=ছাঁটা.নাম;

প্রথমে, আমরা আইডি 8 এবং রিদা নামটির দ্বন্দ্ব প্রশ্নটি ব্যবহার করে ডেটা প্রবেশ করাব। একই আইডি অনুসরণ করে একই প্রশ্ন ব্যবহার করা হবে; নাম পরিবর্তন করা হবে। এখন আপনি লক্ষ্য করবেন কিভাবে টেবিলের একই আইডিতে নাম পরিবর্তন করা হবে।

>> সন্নিবেশ করান INTOtbl2মান (8,'কাজ') চালুকনফ্লিক্ট(আইডি) ডিও হালনাগাদ সেট করুন নাম =ছাঁটা.নাম;

আমরা দেখেছি যে আইডি 8 এ একটি বিরোধ ছিল, তাই নির্দিষ্ট সারিটি আপডেট করা হয়েছে।

যদি দ্বন্দ্ব হয়, কিছুই করবেন না

>> সন্নিবেশ করান INTOtbl2মান (9,'হীরা') চালুকনফ্লিক্ট(আইডি) ডিও কিছুই না;

এই প্রশ্নটি ব্যবহার করে, একটি নতুন সারি োকানো হয়েছে। এর পরে, আমরা যদি একই প্রশ্নটি সংঘটিত সংঘর্ষ দেখতে দেখতে ব্যবহার করি।

>>সন্নিবেশ করান INTOtbl2মান (9,'হীরা') চালুকনফ্লিক্ট(আইডি) ডিও কিছুই না;

উপরের চিত্র অনুসারে, আপনি দেখতে পাবেন যে INSERT 0 0 ক্যোয়ারী কার্যকর করার পরে দেখায় কোন ডেটা প্রবেশ করা হয়নি।

উপসংহার

আমরা ডাটাবেস সম্পর্কের ক্ষেত্রে অপ্রয়োজনীয়তা কমাতে টেবিলে সারি সন্নিবেশ করানোর বোঝার ধারণার এক ঝলক দেখেছি যেখানে ডেটা নেই, অথবা সন্নিবেশ সম্পন্ন হয়নি, যদি কোনও রেকর্ড পাওয়া যায়।