মারিয়াডিবিতে অস্থায়ী টেবিলগুলি কীভাবে কাজ করে তা অন্বেষণ করা যাক। প্রথমত, আমাদের সার্ভারের সাথে সংযোগ করতে হবে। উদাহরণস্বরূপ (আপনার নিজস্ব সংযোগের বিবরণ ব্যবহার করুন):
mariadb -h 127.0.0.1 -u root -p"RootPassword!" --database demo
এখন, শুধুমাত্র কিছু নির্দেশ করার জন্য, আসুন একটি স্ট্যান্ডার্ড (স্থায়ী) টেবিল তৈরি করি। এখানে কিভাবে:
CREATE TABLE t ( c INT );
এই টেবিল, t
, আমরা ক্লায়েন্ট থেকে প্রস্থান করার পরেও ডাটাবেসে টিকে থাকবে:
exit
যখন আমরা পুনঃসংযোগ করি এবং বিদ্যমান টেবিলগুলি SHOW TABLES;
, টেবিল t
এখনও তালিকাভুক্ত করা হবে:
mariadb -h 127.0.0.1 -u root -p"RootPassword!" --database demo
SHOW TABLES;
+----------------+ | Tables_in_demo | +----------------+ | t | +----------------+
এই সব বেশ সুস্পষ্ট, কিন্তু এখন, আসুন এই টেবিলটি পুনরায় তৈরি করি এবং কিছু ভিন্ন চেষ্টা করি:
CREATE OR REPLACE TEMPORARY TABLE t ( c INT );
TEMPORARY
কীওয়ার্ডটি লক্ষ্য করুন। এই টেবিলটি তৈরি করার পর, আমরা যদি SHOW TABLES;
, এটি তালিকায় প্রদর্শিত হবে। আমরা এটিতে ডেটা সন্নিবেশ করতে পারি, এটি অনুসন্ধান করতে পারি এবং অন্যান্য টেবিলের সাথে যোগ দিতে পারি। এটি বর্তমান সেশনের সময় একটি সাধারণ টেবিলের মতো আচরণ করে। যাইহোক, যদি আমরা ক্লায়েন্ট থেকে প্রস্থান করি, তাহলে পুনরায় সংযোগ করুন এবং একটি SHOW TABLES;
আবার, অস্থায়ী টেবিল t
তালিকাভুক্ত করা হবে না।
একটি অস্থায়ী টেবিল শুধুমাত্র সেশনের সময়কালের জন্য বিদ্যমান থাকে যেখানে এটি তৈরি করা হয়েছিল এবং অন্যান্য সেশনগুলি এটি দেখতে সক্ষম হবে না।
ক্ষণস্থায়ী ডেটা অপারেশনের জন্য অস্থায়ী টেবিলগুলি বেশ কার্যকর। উদাহরণস্বরূপ, আমাদের ডাটাবেসে products
নামক একটি টেবিল বিবেচনা করুন:
CREATE TABLE products ( id INT NOT NULL AUTO_INCREMENT, code VARCHAR(100) NOT NULL, name VARCHAR(250) NOT NULL, description TEXT DEFAULT NULL, PRIMARY KEY (id), UNIQUE KEY code (code) )
আমরা একটি অস্থায়ী টেবিল তৈরি করতে পারি যা products
গঠন অনুকরণ করে:
CREATE TEMPORARY TABLE t LIKE products;
আমরা এটি চালিয়ে নিশ্চিত করতে পারি:
DESCRIBE t;
+-------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | code | varchar(100) | NO | UNI | NULL | | | name | varchar(250) | NO | | NULL | | | description | text | YES | | NULL | | +-------------+--------------+------+-----+---------+----------------+
প্রাথমিকভাবে, t
খালি হবে। যাইহোক, ধরুন আমরা products
থেকে t
এ কিছু ডেটা স্থানান্তর করতে চাই। ধরা যাক আমরা শুধুমাত্র সেই পণ্যগুলিকে অন্তর্ভুক্ত করতে চাই যেগুলির কোডে 0 নম্বর রয়েছে:
INSERT INTO t SELECT * FROM products WHERE code LIKE '%0%';
এই কমান্ডটি চালানোর পরে, যদি আমরা অস্থায়ী টেবিলটি জিজ্ঞাসা করি t
:
SELECT * FROM t;
+----+--------+------------------+---------------------------------------------------+ | id | code | name | description | +----+--------+------------------+---------------------------------------------------+ | 1 | BG2024 | BugBlaster | Eradicates software bugs with a single scan. | | 3 | FW001 | FireWhale | An oversized, comprehensive firewall solution. | | 4 | CLD404 | CloudNine Finder | Find your way back from cloud outages and errors. | +----+--------+------------------+---------------------------------------------------+
আমরা ফিল্টার করা ডেটা দেখতে পাই।
অস্থায়ী টেবিলগুলি অবিরাম ডেটা স্টোরকে প্রভাবিত না করে অস্থায়ী প্রক্রিয়াকরণের জন্য ডেটা পরিচালনা করার একটি শক্তিশালী উপায় অফার করে। এগুলি এমন পরিস্থিতিতে বিশেষভাবে কার্যকর যেখানে ডেটা সাময়িকভাবে ম্যানিপুলেট করা বা রূপান্তরিত করা প্রয়োজন। আপনি এই ধরনের ডেটা ম্যানিপুলেশনের জন্য স্থায়ী টেবিল ব্যবহার করতে পারেন কিন্তু আপনার যখন স্বয়ংক্রিয় পরিচ্ছন্নতা, নামকরণের দ্বন্দ্বের ঝুঁকি হ্রাস, বিচ্ছিন্নতা এবং নিরাপত্তা, এবং অনুসন্ধান কর্মক্ষমতার জন্য সম্পদ ব্যবস্থাপনার প্রয়োজন হয় তখন অস্থায়ী টেবিলগুলি দরকারী।