DELETE Archives - To Learn Team https://tolearnteam.com/tag/delete/ Learn about Everything Online Sat, 08 Aug 2026 04:58:32 +0000 en-US hourly 1 https://wordpress.org/?v=7.1.2 https://tolearnteam.com/wp-content/uploads/2026/07/cropped-Logo-32x32.png DELETE Archives - To Learn Team https://tolearnteam.com/tag/delete/ 32 32 SQLite Subqueries – SELECT, INSERT, UPDATE, DELETE-এ সাবকোয়েরি ব্যবহার (বাংলা টিউটোরিয়াল) https://tolearnteam.com/sqlite-subqueries-bangla/ Sat, 08 Aug 2026 02:56:51 +0000 http://tolearnteam.com/?p=2222 একটি কোয়েরির ভেতর আরেকটি কোয়েরি – এটাই হলো সাবকোয়েরি (Subquery) বা ইনার কোয়েরি বা নেস্টেড কোয়েরি। সাবকোয়েরি সাধারণত WHERE ক্লজের মধ্যে বসে এবং মূল কোয়েরির জন্য প্রয়োজনীয় ডেটা সরবরাহ করে। এর মাধ্যমে আমরা জটিল…

The post SQLite Subqueries – SELECT, INSERT, UPDATE, DELETE-এ সাবকোয়েরি ব্যবহার (বাংলা টিউটোরিয়াল) appeared first on To Learn Team.

]]>
একটি কোয়েরির ভেতর আরেকটি কোয়েরি – এটাই হলো সাবকোয়েরি (Subquery) বা ইনার কোয়েরি বা নেস্টেড কোয়েরি। সাবকোয়েরি সাধারণত WHERE ক্লজের মধ্যে বসে এবং মূল কোয়েরির জন্য প্রয়োজনীয় ডেটা সরবরাহ করে। এর মাধ্যমে আমরা জটিল যুক্তি একটি সহজবোধ্য উপায়ে প্রকাশ করতে পারি। সাবকোয়েরি SELECT, INSERT, UPDATE, DELETE – সব ধরনের DML অপারেশনের সাথেই ব্যবহার করা যায়। আজ আমরা সাবকোয়েরির নিয়মকানুন, প্রতিটি স্টেটমেন্টে ব্যবহার ও বাস্তব উদাহরণ শিখব।


পূর্বপ্রস্তুতি

  • SQLite ইন্সটল থাকতে হবে (সিরিজের ৩য় পর্ব দেখুন)।
  • আমরা subquery_demo.db নামে ডাটাবেস তৈরি করব, যেখানে COMPANY ও তার ব্যাকআপ COMPANY_BKP টেবিল থাকবে।

টার্মিনাল:

bash

sqlite3 subquery_demo.db

sql

-- COMPANY টেবিল
CREATE TABLE COMPANY(
   ID INT PRIMARY KEY NOT NULL,
   NAME TEXT NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR(50),
   SALARY REAL
);

INSERT INTO COMPANY VALUES (1, 'Paul', 32, 'California', 20000.00);
INSERT INTO COMPANY VALUES (2, 'Allen', 25, 'Texas', 15000.00);
INSERT INTO COMPANY VALUES (3, 'Teddy', 23, 'Norway', 20000.00);
INSERT INTO COMPANY VALUES (4, 'Mark', 25, 'Rich-Mond', 65000.00);
INSERT INTO COMPANY VALUES (5, 'David', 27, 'Texas', 85000.00);
INSERT INTO COMPANY VALUES (6, 'Kim', 22, 'South-Hall', 45000.00);
INSERT INTO COMPANY VALUES (7, 'James', 24, 'Houston', 10000.00);

-- COMPANY_BKP টেবিল (একই কাঠামো, ব্যাকআপ হিসেবে)
CREATE TABLE COMPANY_BKP(
   ID INT PRIMARY KEY NOT NULL,
   NAME TEXT NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR(50),
   SALARY REAL
);

INSERT INTO COMPANY_BKP SELECT * FROM COMPANY;
  • আউটপুট ফরম্যাট: .header on, .mode column।

১. সাবকোয়েরি কী ও নিয়মাবলী

সাবকোয়েরি হলো প্যারেন্থেসিস ()-র মধ্যে আবদ্ধ একটি SELECT স্টেটমেন্ট, যা মূল SQL স্টেটমেন্টের একটি অংশ হিসেবে কাজ করে। এটি প্রথমে সম্পাদিত হয়, তারপর তার ফলাফল মূল কোয়েরিতে ব্যবহৃত হয়।

প্রধান নিয়ম:

  • সাবকোয়েরি অবশ্যই প্রথম বন্ধনীর (parentheses) মধ্যে থাকতে হবে।
  • সাবকোয়েরির SELECT ক্লজে সাধারণত একটি মাত্র কলাম থাকা উচিত, যদি না মূল কোয়েরি একাধিক কলামের সাথে তুলনা করে (এক্ষেত্রে জোড়ায় জোড়ায় মিলাতে হবে)।
  • সাবকোয়েরিতে ORDER BY ব্যবহার করা যায় না (মূল কোয়েরিতে ব্যবহার করতে হবে)। তবে GROUP BY ব্যবহার করে একই ধরনের কাজ চালানো যায়।
  • যদি সাবকোয়েরি একাধিক সারি ফেরত দেয়, তবে শুধুমাত্র IN, ANY, ALL-র মতো মাল্টি-ভ্যালু অপারেটর ব্যবহার করতে হবে। = একক মানের জন্য।
  • BETWEEN অপারেটর সরাসরি সাবকোয়েরির সাথে ব্যবহার করা যায় না, তবে সাবকোয়েরির ভেতরে BETWEEN ব্যবহার করা যায়।

২. SELECT-এ সাবকোয়েরি

সবচেয়ে সাধারণ প্রয়োগ। একটি উদাহরণ: যেসব কর্মীর বেতন ৪৫,০০০-এর বেশি, তাদের আইডি সাবকোয়েরি দিয়ে বের করে সেই আইডিগুলো মূল টেবিল থেকে দেখানো।

sql

SELECT *
FROM COMPANY
WHERE ID IN (SELECT ID
             FROM COMPANY
             WHERE SALARY > 45000);

ফলাফল:

text

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

এখানে সাবকোয়েরি (SELECT ID FROM COMPANY WHERE SALARY > 45000) প্রথমে ID 4 এবং 5 ফেরত দেয়, তারপর মূল SELECT তাদের সম্পূর্ণ তথ্য নিয়ে আসে।

সাবকোয়েরির সাথে =: যদি নিশ্চিত যে সাবকোয়েরি একটিমাত্র সারি ফেরত দেবে, তাহলে = ব্যবহার করা যায়। যেমন:

sql

SELECT * FROM COMPANY
WHERE SALARY = (SELECT MAX(SALARY) FROM COMPANY);

এটি সর্বোচ্চ বেতনধারী কর্মীকে দেখাবে। MAX একটি একক মান দেয়, তাই = ব্যবহার করা নিরাপদ।


৩. INSERT-এ সাবকোয়েরি

সাবকোয়েরি ব্যবহার করে আপনি এক টেবিল থেকে ডেটা এনে আরেক টেবিলে ইনসার্ট করতে পারেন। এটি INSERT INTO ... SELECT স্টেটমেন্টের মাধ্যমে করা হয়।

সিনট্যাক্স:

sql

INSERT INTO target_table (column_list)
SELECT column_list
FROM source_table
WHERE condition;

উদাহরণ: COMPANY টেবিল থেকে সব রেকর্ড COMPANY_BKP-তে কপি করা (ইতিমধ্যে করেছি, কিন্তু আবার দেখানো যাক):

sql

INSERT INTO COMPANY_BKP
SELECT * FROM COMPANY
WHERE ID IN (SELECT ID FROM COMPANY);

অথবা আরও ফিল্টার করে: শুধুমাত্র যাদের বয়স ২৫-এর বেশি তাদের ব্যাকআপ নিতে:

sql

INSERT INTO COMPANY_BKP
SELECT * FROM COMPANY
WHERE AGE IN (SELECT AGE FROM COMPANY WHERE AGE > 25);

৪. UPDATE-এ সাবকোয়েরি

আপডেটের WHERE ক্লজে সাবকোয়েরি ব্যবহার করে আপনি নির্দিষ্ট শর্তসাপেক্ষে রেকর্ড আপডেট করতে পারেন। আবার SET-এও সাবকোয়েরি ব্যবহার করা যায়।

উদাহরণ: COMPANY টেবিলে যেসব কর্মীর বয়স ২৭ বা তার বেশি, তাদের বেতন অর্ধেক করে দেওয়া। আমরা COMPANY_BKP থেকে সেই বয়সের তালিকা নিচ্ছি (একই টেবিল থেকেও নেওয়া যায়)।

sql

UPDATE COMPANY
SET SALARY = SALARY * 0.50
WHERE AGE IN (SELECT AGE FROM COMPANY_BKP
              WHERE AGE >= 27);

ফলাফল: Paul (AGE 32) ও David (AGE 27) আপডেট হবে।

text

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  10000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       42500.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

৫. DELETE-এ সাবকোয়েরি

ডিলিটের WHERE ক্লজে সাবকোয়েরি ব্যবহার করে নির্দিষ্ট শর্তের ভিত্তিতে রেকর্ড মুছে ফেলা যায়।

উদাহরণ: COMPANY টেবিল থেকে তাদের মুছে ফেলি, যাদের বয়স ২৭-এর বেশি (অর্থাৎ ২৮ বা তার বেশি, বা বড়) – COMPANY_BKP থেকে সেই শর্তে বয়স বের করে।

sql

DELETE FROM COMPANY
WHERE AGE IN (SELECT AGE FROM COMPANY_BKP
              WHERE AGE > 27);

ফলাফল: Paul (AGE 32) ডিলিট হবে। David (AGE 27) থাকবে, কারণ > 27 তে সে আসে না।

text

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       42500.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

৬. সাবকোয়েরির প্রকারভেদ (সংক্ষেপ)

  • স্কেলার সাবকোয়েরি: একটি মাত্র মান (এক কলাম, এক সারি) ফেরত দেয়। = অপারেটরের সাথে ব্যবহার হয়।
  • রো সাবকোয়েরি: একাধিক কলাম ফেরত দেয়, তুলনার সময় কলাম সংখ্যা মিলাতে হয়।
  • টেবিল সাবকোয়েরি: একাধিক কলাম ও সারি ফেরত দেয়, IN, EXISTS, ANY, ALL-র সাথে ব্যবহার হয়।

৭. ডিরেক্টরি স্ট্রাকচার ও প্যাকেজ

ডাটাবেস ফাইল: subquery_demo.db। কোনো অতিরিক্ত প্যাকেজ ইন্সটল করতে হবে না।

text

project-folder/
└── subquery_demo.db

৮. গুরুত্বপূর্ণ টিপস

  • সাবকোয়েরি সর্বদা বন্ধনীতে রাখুন।
  • পারফরম্যান্স বিবেচনা: কখনো কখনো সাবকোয়েরির বদলে JOIN ব্যবহার করলে দ্রুত ফলাফল পাওয়া যায়। জটিল সাবকোয়েরির বদলে JOIN বিবেচনা করুন।
  • একাধিক সারি পেলে = নয়: যদি সাবকোয়েরি একাধিক সারি ফেরত দেয়, তাহলে = ব্যবহার করলে এরর আসবে। IN ব্যবহার করুন।
  • সাবকোয়েরিতে ORDER BY নেই: সাজানোর প্রয়োজন হলে মূল কোয়েরিতে ORDER BY ব্যবহার করুন।
  • EXISTS অপারেটর: সাবকোয়েরির সারি আছে কিনা তা চেক করতে EXISTS ব্যবহার করা যায়, যা অনেক সময় IN-এর চেয়ে দ্রুত কাজ করে।

৯. সম্পূর্ণ অনুশীলন সেশন

sql

.headers on
.mode column

-- প্রাথমিক টেবিল দেখি
SELECT * FROM COMPANY;
SELECT * FROM COMPANY_BKP;

-- SELECT-এ সাবকোয়েরি: সবার বেতন থেকে বেশি বেতন যাদের
SELECT * FROM COMPANY WHERE SALARY > (SELECT AVG(SALARY) FROM COMPANY);

-- INSERT-এ সাবকোয়েরি: যাদের বয়স 30 এর নিচে, তাদের ব্যাকআপে কপি
INSERT INTO COMPANY_BKP SELECT * FROM COMPANY WHERE AGE IN (SELECT AGE FROM COMPANY WHERE AGE < 30);

-- UPDATE-এ সাবকোয়েরি: যাদের বয়স Mark-এর সমান তাদের বেতন 10% বাড়ান
UPDATE COMPANY SET SALARY = SALARY * 1.10 WHERE AGE = (SELECT AGE FROM COMPANY WHERE NAME = 'Mark');

-- DELETE-এ সাবকোয়েরি: যাদের বেতন গড় বেতনের নিচে তাদের মুছে ফেলি (পরীক্ষা করে দেখতে পারেন, তবে আগে ব্যাকআপ নিন)
-- DELETE FROM COMPANY WHERE SALARY < (SELECT AVG(SALARY) FROM COMPANY);

পরবর্তী পর্বে

আমরা শিখব SQLite AUTOINCREMENT – স্বয়ংক্রিয়ভাবে প্রাইমারি কি মান বৃদ্ধির কৌশল।

লেখকের কথা: সাবকোয়েরি SQL-এর জাদু! এটি আপনার ডেটাবেস প্রশ্নকে শক্তিশালী করে তোলে। বাংলায় এই টিউটোরিয়াল সিরিজ আপনার শেখার সঙ্গী হয়ে উঠুক। পোস্টটি ভালো লাগলে শেয়ার করুন, এবং সিরিজের সব আপডেট পেতে ToLearnTeam.com সাবস্ক্রাইব করুন। আপনার মতামত আমাদের অনুপ্রাণিত করে – কমেন্ট করতে ভুলবেন না!



SQLite Full Course

  1. SQLite পরিচিতি ও ইন্সটলেশন গাইড – বাংলায় প্রথম ডাটাবেস তৈরি
  2. SQLite কী এবং কেন শিখবেন? সম্পূর্ণ ওভারভিউ ও কমান্ড ক্লাসিফিকেশন (DDL, DML, DQL)
  3. SQLite ইন্সটলেশন গাইড – Windows, Linux ও Mac-এ ধাপে ধাপে সেটআপ
  4. SQLite ডট কমান্ড (Dot Commands) – সম্পূর্ণ গাইড, আউটপুট ফরম্যাট ও sqlite_master
  5. SQLite সিনট্যাক্স (Syntax) – কেস সেনসিটিভিটি, কমেন্ট, সব কমান্ডের গঠন ও উদাহরণ
  6. SQLite ডেটা টাইপ (Data Type) – স্টোরেজ ক্লাস, টাইপ অ্যাফিনিটি, বুলিয়ান ও ডেট-টাইম
  7. SQLite ডেটাবেস তৈরি (Create Database) – ধাপে ধাপে গাইড, .dump এক্সপোর্ট ও রিস্টোর
  8. SQLite ATTACH DATABASE – একাধিক ডাটাবেস সংযুক্ত করার সম্পূর্ণ গাইড (বাংলা)
  9. SQLite DETACH DATABASE – সংযুক্ত ডাটাবেস বিচ্ছিন্ন করার পূর্ণাঙ্গ গাইড
  10. SQLite CREATE TABLE স্টেটমেন্ট – টেবিল তৈরি করার পূর্ণাঙ্গ গাইড (বাংলা)
  11. SQLite DROP TABLE স্টেটমেন্ট – টেবিল ডিলিট করার সম্পূর্ণ গাইড (বাংলা)
  12. SQLite INSERT INTO স্টেটমেন্ট – ডেটা ইনসার্ট করার সম্পূর্ণ গাইড (বাংলা)
  13. SQLite SELECT স্টেটমেন্ট – টেবিল থেকে ডেটা ফেচ করার সম্পূর্ণ গাইড (বাংলা)
  14. SQLite অপারেটর (Operators) – Arithmetic, Comparison, Logical, Bitwise (বাংলা টিউটোরিয়াল)
  15. SQLite এক্সপ্রেশন (Expressions) – বুলিয়ান, নিউমেরিক ও ডেট এক্সপ্রেশন (বাংলা টিউটোরিয়াল)
  16. SQLite AND ও OR অপারেটর – একাধিক শর্ত দিয়ে ডেটা ফিল্টার (বাংলা টিউটোরিয়াল)
  17. SQLite UPDATE Query – টেবিলের ডেটা পরিবর্তন করার সম্পূর্ণ গাইড (বাংলা)
  18. SQLite DELETE Query – টেবিল থেকে ডেটা মুছে ফেলার সম্পূর্ণ গাইড (বাংলা)
  19. SQLite LIKE Operator – প্যাটার্ন মিলিয়ে ডেটা খোঁজার সম্পূর্ণ গাইড (বাংলা)
  20. SQLite GLOB Operator – কেস-সেনসিটিভ প্যাটার্ন মিলিয়ে ডেটা খোঁজা (বাংলা)
  21. SQLite LIMIT Clause – ডেটা সীমিত করে আনার সম্পূর্ণ গাইড (বাংলা)
  22. SQLite ORDER BY ক্লজ – ডেটা সাজানোর সম্পূর্ণ গাইড (বাংলা)
  23. SQLite GROUP BY ক্লজ – ডেটা গ্রুপ করে বিশ্লেষণ করার সম্পূর্ণ গাইড (বাংলা)
  24. SQLite HAVING ক্লজ – গ্রুপের উপর শর্ত দিয়ে ডেটা ফিল্টার (বাংলা টিউটোরিয়াল)
  25. SQLite DISTINCT Keyword – ডুপ্লিকেট ডেটা বাদ দিয়ে ইউনিক ভ্যালু পাওয়া (বাংলা)
  26. SQLite PRAGMA কমান্ড – ডাটাবেস কনফিগারেশন ও সেটিংস (বাংলা টিউটোরিয়াল)
  27. SQLite Constraints – NOT NULL, DEFAULT, UNIQUE, PRIMARY KEY, CHECK (বাংলা টিউটোরিয়াল)
  28. SQLite JOINS – CROSS JOIN, INNER JOIN, LEFT OUTER JOIN (বাংলা টিউটোরিয়াল)
  29. SQLite UNION ও UNION ALL – একাধিক SELECT একত্রিত করার সম্পূর্ণ গাইড (বাংলা)
  30. SQLite NULL Values – NULL কী, IS NULL, IS NOT NULL (বাংলা টিউটোরিয়াল)
  31. SQLite ALIAS Syntax – টেবিল ও কলামের অস্থায়ী নাম (বাংলা টিউটোরিয়াল)
  32. SQLite Triggers – স্বয়ংক্রিয় ট্রিগার তৈরি, ব্যবহার ও মুছে ফেলা (বাংলা টিউটোরিয়াল)
  33. SQLite Indexes – CREATE, UNIQUE, COMPOSITE, DROP INDEX (বাংলা টিউটোরিয়াল)
  34. SQLite INDEXED BY Clause – নির্দিষ্ট ইনডেক্স ব্যবহার ও NOT INDEXED (বাংলা)
  35. SQLite ALTER TABLE Command – টেবিলের গঠন পরিবর্তন (বাংলা টিউটোরিয়াল)
  36. SQLite TRUNCATE TABLE Command – DELETE ও DROP দিয়ে টেবিল খালি করা (বাংলা)
  37. SQLite Views – ভার্চুয়াল টেবিল তৈরি, ব্যবহার ও ডিলিট (বাংলা টিউটোরিয়াল)
  38. SQLite Transactions – BEGIN, COMMIT, ROLLBACK ও ACID প্রপার্টি (বাংলা)
  39. SQLite Subqueries – SELECT, INSERT, UPDATE, DELETE-এ সাবকোয়েরি ব্যবহার (বাংলা টিউটোরিয়াল)
  40. SQLite AUTOINCREMENT – স্বয়ংক্রিয়ভাবে প্রাইমারি কি মান বৃদ্ধি (বাংলা টিউটোরিয়াল)
  41. SQLite SQL Injection – কী, কেন বিপজ্জনক ও প্রতিরোধের উপায় (বাংলা টিউটোরিয়াল)
  42. SQLite EXPLAIN ও EXPLAIN QUERY PLAN – কোয়েরি বিশ্লেষণ (বাংলা টিউটোরিয়াল)
  43. SQLite VACUUM – ডাটাবেস পরিষ্কার, স্পেস রিক্লেইম ও অটো-ভ্যাকুয়াম (বাংলা টিউটোরিয়াল)
  44. SQLite Date & Time ফাংশন – date(), time(), datetime(), julianday(), strftime() (বাংলা টিউটোরিয়াল)
  45. SQLite Useful Functions – COUNT, MAX, MIN, AVG, SUM, RANDOM, ABS, UPPER, LOWER, LENGTH (বাংলা টিউটোরিয়াল)
  46. SQLite C/C++ প্রোগ্রামিং – sqlite3_open, exec, close, callback (বাংলা টিউটোরিয়াল)
  47. SQLite PHP প্রোগ্রামিং – PHP-তে SQLite ডাটাবেস ব্যবহার (বাংলা টিউটোরিয়াল)
  48. SQLite Perl প্রোগ্রামিং – DBI/DBD::SQLite দিয়ে ডাটাবেস অপারেশন (বাংলা)
  49. SQLite Python প্রোগ্রামিং – sqlite3 মডিউল দিয়ে CRUD অপারেশন (বাংলা টিউটোরিয়াল)
  50. SQLite Quick Guide – বাংলায় পূর্ণাঙ্গ সংক্ষিপ্ত টিউটোরিয়াল (শেখার সহজ গাইড)

The post SQLite Subqueries – SELECT, INSERT, UPDATE, DELETE-এ সাবকোয়েরি ব্যবহার (বাংলা টিউটোরিয়াল) appeared first on To Learn Team.

]]>
SQLite TRUNCATE TABLE Command – DELETE ও DROP দিয়ে টেবিল খালি করা (বাংলা) https://tolearnteam.com/sqlite-truncate-table-bangla/ Sat, 08 Aug 2026 02:40:16 +0000 http://tolearnteam.com/?p=2213 যেসব ডাটাবেস ম্যানেজমেন্ট সিস্টেমে (যেমন MySQL, PostgreSQL) TRUNCATE TABLE কমান্ড ব্যবহার করে টেবিলের সমস্ত ডেটা দ্রুত মুছে ফেলা যায়, SQLite-তে এমন কোনো কমান্ড সরাসরি নেই। তবে চিন্তার কিছু নেই – SQLite আমাদের…

The post SQLite TRUNCATE TABLE Command – DELETE ও DROP দিয়ে টেবিল খালি করা (বাংলা) appeared first on To Learn Team.

]]>
যেসব ডাটাবেস ম্যানেজমেন্ট সিস্টেমে (যেমন MySQL, PostgreSQL) TRUNCATE TABLE কমান্ড ব্যবহার করে টেবিলের সমস্ত ডেটা দ্রুত মুছে ফেলা যায়, SQLite-তে এমন কোনো কমান্ড সরাসরি নেই। তবে চিন্তার কিছু নেই – SQLite আমাদের শক্তিশালী DELETE ও DROP TABLE কমান্ড দিয়েছে, যা একই কাজ করতে পারে, কিছু অতিরিক্ত কৌশল সহ। আজকের পর্বে আমরা শিখব কীভাবে SQLite-তে টেবিল সম্পূর্ণ খালি করা যায়, কোন পদ্ধতি কখন ব্যবহার করা উচিত, এবং VACUUM কেন প্রয়োজন।


পূর্বপ্রস্তুতি

  • SQLite ইন্সটল থাকতে হবে (সিরিজের ৩য় পর্ব দেখুন)।
  • আমরা COMPANY টেবিল ব্যবহার করব। truncate_demo.db নামে ডাটাবেস প্রস্তুত করি।

টার্মিনাল:

bash

sqlite3 truncate_demo.db

sql

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY NOT NULL,
   NAME TEXT NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR(50),
   SALARY REAL
);

INSERT INTO COMPANY VALUES (1, 'Paul', 32, 'California', 20000.00);
INSERT INTO COMPANY VALUES (2, 'Allen', 25, 'Texas', 15000.00);
INSERT INTO COMPANY VALUES (3, 'Teddy', 23, 'Norway', 20000.00);
INSERT INTO COMPANY VALUES (4, 'Mark', 25, 'Rich-Mond', 65000.00);
INSERT INTO COMPANY VALUES (5, 'David', 27, 'Texas', 85000.00);
INSERT INTO COMPANY VALUES (6, 'Kim', 22, 'South-Hall', 45000.00);
INSERT INTO COMPANY VALUES (7, 'James', 24, 'Houston', 10000.00);
  • আউটপুট সুন্দর করতে: .header on, .mode column।

১. কেন SQLite-তে TRUNCATE TABLE নেই?

TRUNCATE TABLE সাধারণত টেবিলের সমস্ত সারি খুব দ্রুত মুছে ফেলে, কারণ এটি প্রতিটি সারি ডিলিট না করে পুরো ডেটা পেজ রিলিজ করে। SQLite-তে ডিজাইন এমন যে, DELETE দিয়েও পুরো টেবিল সাফ করা যায়, তবে এটি প্রতিটি সারি একটিভাবে ডিলিট করে। তবে বিকল্প হিসেবে DROP TABLE + পুনরায় CREATE TABLE আরও দ্রুত এবং কার্যকর।

SQLite ডেভেলপাররা একটি সুস্পষ্ট TRUNCATE কমান্ড যোগ করেননি; বরং ব্যবহারকারীদের পরিস্থিতি অনুযায়ী DELETE অথবা DROP + CREATE ব্যবহারের স্বাধীনতা দিয়েছেন।


২. পদ্ধতি ১: DELETE FROM table_name (সব রেকর্ড মুছুন)

সবচেয়ে সরাসরি পদ্ধতি হলো WHERE ক্লজ ছাড়া DELETE ব্যবহার করা।

sql

DELETE FROM COMPANY;

এটি COMPANY টেবিলের প্রতিটি সারি মুছে ফেলবে, কিন্তু টেবিলের গঠন (schema) অক্ষত থাকবে। পরবর্তীতে নতুন রেকর্ড ইনসার্ট করতে কোনো বাধা নেই।

পরীক্ষা:

sql

SELECT * FROM COMPANY;
-- কোনো সারি নেই

সুবিধা:

  • টেবিল টিকে থাকে, কোনো রি-ক্রিয়েশন দরকার নেই।
  • টেবিলের সাথে যুক্ত ইনডেক্স, ট্রিগার, ভিউ অপরিবর্তিত থাকে।

অসুবিধা:

  • বড় টেবিলে এটি ধীরগতির হতে পারে, কারণ প্রতিটি সারি ডিলিট হয় এবং জার্নালে রেকর্ড হয়।
  • ডিলিট করার পর ডিস্ক স্পেস পুরোপুরি খালি হয় না; ডাটাবেস ফাইল আকার অপরিবর্তিত থাকতে পারে।

স্পেস খালি করতে VACUUM:
DELETE করার পর অপ্রয়োজনীয় স্থান পুনরুদ্ধার করতে VACUUM কমান্ড চালানো উচিত।

sql

VACUUM;

এটি ডাটাবেস ফাইলকে পুনর্গঠন করে ফাঁকা জায়গা রিলিজ করে।


৩. পদ্ধতি ২: DROP TABLE + CREATE TABLE (টেবিল রি-ক্রিয়েট)

সবচেয়ে দ্রুত এবং নিশ্চিত পদ্ধতি হলো টেবিলটি ড্রপ করে পুনরায় তৈরি করা।

sql

DROP TABLE COMPANY;
CREATE TABLE COMPANY(
   ID INT PRIMARY KEY NOT NULL,
   NAME TEXT NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR(50),
   SALARY REAL
);

এখন COMPANY টেবিল একেবারে নতুন ও খালি।

সুবিধা:

  • অত্যন্ত দ্রুত, বিশেষ করে বড় টেবিলের জন্য।
  • ডাটাবেস ফাইলের সাইজ সঙ্গে সঙ্গে অপ্টিমাইজ হয় (যদি টেবিলটি প্রধান ডেটা ধারণ করত)।
  • কোনো অতিরিক্ত VACUUM দরকার নেই।

অসুবিধা:

  • টেবিলের সাথে যুক্ত ইনডেক্স, ট্রিগার, ভিউ হারিয়ে যায় (যদি না পুনরায় তৈরি করেন)।
  • টেবিলের স্কিমা আবার লিখতে হয়; ভুল হলে সমস্যা হতে পারে।

এই পদ্ধতি তখনই বেছে নেবেন যখন টেবিলের স্কিমা আপনার ভালোভাবে জানা এবং সংশ্লিষ্ট অন্যান্য ডাটাবেস অবজেক্ট (ইনডেক্স, ট্রিগার) পুনর্নির্মাণ করতে প্রস্তুত থাকেন।


৪. VACUUM-এর ভূমিকা

উভয় পদ্ধতির পরেও ডাটাবেস ফাইলের আকার কমানোর জন্য VACUUM প্রয়োজন হতে পারে, বিশেষ করে DELETE ব্যবহার করলে। VACUUM পুরো ডাটাবেসকে একটি নতুন ফাইলে কপি করে, অব্যবহৃত স্থান বাদ দিয়ে। এটি কিছুটা সময়সাপেক্ষ এবং অপারেশন চলাকালে ডাটাবেসে এক্সক্লুসিভ লক নেয়।

sql

VACUUM;

আপনি PRAGMA auto_vacuum = FULL সেট করলে ভবিষ্যতে ডিলিট স্বয়ংক্রিয়ভাবে স্থান খালি করতে পারে, কিন্তু বিদ্যমান ডেটার জন্য ম্যানুয়াল VACUUM-ই ভরসা।


৫. কখন কোন পদ্ধতি ব্যবহার করবেন?

  • ছোট টেবিল, সরল চাহিদা: DELETE FROM table; VACUUM; ব্যবহার করুন।
  • বড় টেবিল, স্কিমা অপরিবর্তিত থাকবে: DROP + CREATE দ্রুততর। তবে আগে থেকে টেবিলের CREATE স্টেটমেন্ট সংরক্ষণ করে রাখুন (.schema table_name দিয়ে দেখা)।
  • যদি ফরেন কি সম্পর্কিত টেবিল থাকে: DELETE ব্যবহার করাই নিরাপদ, কারণ DROP করলে সম্পর্কিত টেবিলের কনস্ট্রেইন্ট ভায়োলেশন হতে পারে (অথবা PRAGMA foreign_keys = OFF করতে হতে পারে)।

৬. ডিরেক্টরি স্ট্রাকচার ও প্যাকেজ

শুধুমাত্র truncate_demo.db ফাইলটি ব্যবহৃত হচ্ছে। VACUUM অস্থায়ীভাবে একটি কপি তৈরি করতে পারে (যেমন truncate_demo.db-vacuum), কিন্তু কাজ শেষে মূল ফাইলটি রিপ্লেস হয়। কোনো অতিরিক্ত প্যাকেজ লাগবে না।


৭. গুরুত্বপূর্ণ টিপস

  • ব্যাকআপ নিতে ভুলবেন না: পুরো টেবিল খালি করার আগে .backup বা .dump দিয়ে ব্যাকআপ নিন।
  • ট্রানজ্যাকশন ব্যবহার: BEGIN; DELETE FROM COMPANY; – তারপর ভুল হলে ROLLBACK করতে পারবেন। DROP + CREATE বেলায় এটি কাজ করবে না, কারণ DROP অটো-কমিট হয়।
  • sqlite_sequence রিসেট: যদি AUTOINCREMENT ব্যবহার করেন, DELETE করলে sqlite_sequence টেবিলের মান রিসেট হয় না। সম্পূর্ণ রিসেট চাইলে DELETE FROM sqlite_sequence WHERE name='COMPANY'; চালান, অথবা DROP + CREATE করুন যা স্বয়ংক্রিয়ভাবে রিসেট হয়।
  • VACUUM নিয়মিত করবেন না: VACUUM সময়সাপেক্ষ, প্রয়োজনেই করুন।

৮. সম্পূর্ণ অনুশীলন সেশন

টার্মিনালে নিচের ধাপগুলো চালান:

sql

.headers on
.mode column

-- বর্তমান রেকর্ড দেখি
SELECT * FROM COMPANY;

-- পদ্ধতি ১: DELETE + VACUUM
DELETE FROM COMPANY;
SELECT COUNT(*) FROM COMPANY; -- 0
VACUUM;

-- আবার ডেটা ইনসার্ট করি (ঐচ্ছিক)
INSERT INTO COMPANY VALUES (1, 'Paul', 32, 'California', 20000.00);
INSERT INTO COMPANY VALUES (2, 'Allen', 25, 'Texas', 15000.00);

-- পদ্ধতি ২: DROP + CREATE (দ্রুত)
DROP TABLE COMPANY;
CREATE TABLE COMPANY(
   ID INT PRIMARY KEY NOT NULL,
   NAME TEXT NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR(50),
   SALARY REAL
);
SELECT * FROM COMPANY; -- খালি

পরবর্তী পর্বে

আমরা শিখব SQLite Views – ভার্চুয়াল টেবিল তৈরি ও ব্যবহার করে ডেটা উপস্থাপনের কৌশল।

লেখকের কথা: TRUNCATE না থাকলেও SQLite আপনাকে পুরো টেবিল সাফ করার সব হাতিয়ার দিয়েছে। সঠিক পদ্ধতি বেছে নিন এবং নিরাপদে কাজ করুন। বাংলায় এই টিউটোরিয়াল সিরিজ আপনার ডাটাবেস দক্ষতা বাড়াতে বদ্ধপরিকর। ভালো লাগলে শেয়ার করুন এবং ToLearnTeam.com সাবস্ক্রাইব করতে ভুলবেন না। আপনার কোনো প্রশ্ন থাকলে কমেন্টে জানান – আমরা উত্তর দিতে মুখিয়ে আছি!



SQLite Full Course

  1. SQLite পরিচিতি ও ইন্সটলেশন গাইড – বাংলায় প্রথম ডাটাবেস তৈরি
  2. SQLite কী এবং কেন শিখবেন? সম্পূর্ণ ওভারভিউ ও কমান্ড ক্লাসিফিকেশন (DDL, DML, DQL)
  3. SQLite ইন্সটলেশন গাইড – Windows, Linux ও Mac-এ ধাপে ধাপে সেটআপ
  4. SQLite ডট কমান্ড (Dot Commands) – সম্পূর্ণ গাইড, আউটপুট ফরম্যাট ও sqlite_master
  5. SQLite সিনট্যাক্স (Syntax) – কেস সেনসিটিভিটি, কমেন্ট, সব কমান্ডের গঠন ও উদাহরণ
  6. SQLite ডেটা টাইপ (Data Type) – স্টোরেজ ক্লাস, টাইপ অ্যাফিনিটি, বুলিয়ান ও ডেট-টাইম
  7. SQLite ডেটাবেস তৈরি (Create Database) – ধাপে ধাপে গাইড, .dump এক্সপোর্ট ও রিস্টোর
  8. SQLite ATTACH DATABASE – একাধিক ডাটাবেস সংযুক্ত করার সম্পূর্ণ গাইড (বাংলা)
  9. SQLite DETACH DATABASE – সংযুক্ত ডাটাবেস বিচ্ছিন্ন করার পূর্ণাঙ্গ গাইড
  10. SQLite CREATE TABLE স্টেটমেন্ট – টেবিল তৈরি করার পূর্ণাঙ্গ গাইড (বাংলা)
  11. SQLite DROP TABLE স্টেটমেন্ট – টেবিল ডিলিট করার সম্পূর্ণ গাইড (বাংলা)
  12. SQLite INSERT INTO স্টেটমেন্ট – ডেটা ইনসার্ট করার সম্পূর্ণ গাইড (বাংলা)
  13. SQLite SELECT স্টেটমেন্ট – টেবিল থেকে ডেটা ফেচ করার সম্পূর্ণ গাইড (বাংলা)
  14. SQLite অপারেটর (Operators) – Arithmetic, Comparison, Logical, Bitwise (বাংলা টিউটোরিয়াল)
  15. SQLite এক্সপ্রেশন (Expressions) – বুলিয়ান, নিউমেরিক ও ডেট এক্সপ্রেশন (বাংলা টিউটোরিয়াল)
  16. SQLite AND ও OR অপারেটর – একাধিক শর্ত দিয়ে ডেটা ফিল্টার (বাংলা টিউটোরিয়াল)
  17. SQLite UPDATE Query – টেবিলের ডেটা পরিবর্তন করার সম্পূর্ণ গাইড (বাংলা)
  18. SQLite DELETE Query – টেবিল থেকে ডেটা মুছে ফেলার সম্পূর্ণ গাইড (বাংলা)
  19. SQLite LIKE Operator – প্যাটার্ন মিলিয়ে ডেটা খোঁজার সম্পূর্ণ গাইড (বাংলা)
  20. SQLite GLOB Operator – কেস-সেনসিটিভ প্যাটার্ন মিলিয়ে ডেটা খোঁজা (বাংলা)
  21. SQLite LIMIT Clause – ডেটা সীমিত করে আনার সম্পূর্ণ গাইড (বাংলা)
  22. SQLite ORDER BY ক্লজ – ডেটা সাজানোর সম্পূর্ণ গাইড (বাংলা)
  23. SQLite GROUP BY ক্লজ – ডেটা গ্রুপ করে বিশ্লেষণ করার সম্পূর্ণ গাইড (বাংলা)
  24. SQLite HAVING ক্লজ – গ্রুপের উপর শর্ত দিয়ে ডেটা ফিল্টার (বাংলা টিউটোরিয়াল)
  25. SQLite DISTINCT Keyword – ডুপ্লিকেট ডেটা বাদ দিয়ে ইউনিক ভ্যালু পাওয়া (বাংলা)
  26. SQLite PRAGMA কমান্ড – ডাটাবেস কনফিগারেশন ও সেটিংস (বাংলা টিউটোরিয়াল)
  27. SQLite Constraints – NOT NULL, DEFAULT, UNIQUE, PRIMARY KEY, CHECK (বাংলা টিউটোরিয়াল)
  28. SQLite JOINS – CROSS JOIN, INNER JOIN, LEFT OUTER JOIN (বাংলা টিউটোরিয়াল)
  29. SQLite UNION ও UNION ALL – একাধিক SELECT একত্রিত করার সম্পূর্ণ গাইড (বাংলা)
  30. SQLite NULL Values – NULL কী, IS NULL, IS NOT NULL (বাংলা টিউটোরিয়াল)
  31. SQLite ALIAS Syntax – টেবিল ও কলামের অস্থায়ী নাম (বাংলা টিউটোরিয়াল)
  32. SQLite Triggers – স্বয়ংক্রিয় ট্রিগার তৈরি, ব্যবহার ও মুছে ফেলা (বাংলা টিউটোরিয়াল)
  33. SQLite Indexes – CREATE, UNIQUE, COMPOSITE, DROP INDEX (বাংলা টিউটোরিয়াল)
  34. SQLite INDEXED BY Clause – নির্দিষ্ট ইনডেক্স ব্যবহার ও NOT INDEXED (বাংলা)
  35. SQLite ALTER TABLE Command – টেবিলের গঠন পরিবর্তন (বাংলা টিউটোরিয়াল)
  36. SQLite TRUNCATE TABLE Command – DELETE ও DROP দিয়ে টেবিল খালি করা (বাংলা)
  37. SQLite Views – ভার্চুয়াল টেবিল তৈরি, ব্যবহার ও ডিলিট (বাংলা টিউটোরিয়াল)
  38. SQLite Transactions – BEGIN, COMMIT, ROLLBACK ও ACID প্রপার্টি (বাংলা)
  39. SQLite Subqueries – SELECT, INSERT, UPDATE, DELETE-এ সাবকোয়েরি ব্যবহার (বাংলা টিউটোরিয়াল)
  40. SQLite AUTOINCREMENT – স্বয়ংক্রিয়ভাবে প্রাইমারি কি মান বৃদ্ধি (বাংলা টিউটোরিয়াল)
  41. SQLite SQL Injection – কী, কেন বিপজ্জনক ও প্রতিরোধের উপায় (বাংলা টিউটোরিয়াল)
  42. SQLite EXPLAIN ও EXPLAIN QUERY PLAN – কোয়েরি বিশ্লেষণ (বাংলা টিউটোরিয়াল)
  43. SQLite VACUUM – ডাটাবেস পরিষ্কার, স্পেস রিক্লেইম ও অটো-ভ্যাকুয়াম (বাংলা টিউটোরিয়াল)
  44. SQLite Date & Time ফাংশন – date(), time(), datetime(), julianday(), strftime() (বাংলা টিউটোরিয়াল)
  45. SQLite Useful Functions – COUNT, MAX, MIN, AVG, SUM, RANDOM, ABS, UPPER, LOWER, LENGTH (বাংলা টিউটোরিয়াল)
  46. SQLite C/C++ প্রোগ্রামিং – sqlite3_open, exec, close, callback (বাংলা টিউটোরিয়াল)
  47. SQLite PHP প্রোগ্রামিং – PHP-তে SQLite ডাটাবেস ব্যবহার (বাংলা টিউটোরিয়াল)
  48. SQLite Perl প্রোগ্রামিং – DBI/DBD::SQLite দিয়ে ডাটাবেস অপারেশন (বাংলা)
  49. SQLite Python প্রোগ্রামিং – sqlite3 মডিউল দিয়ে CRUD অপারেশন (বাংলা টিউটোরিয়াল)
  50. SQLite Quick Guide – বাংলায় পূর্ণাঙ্গ সংক্ষিপ্ত টিউটোরিয়াল (শেখার সহজ গাইড)

The post SQLite TRUNCATE TABLE Command – DELETE ও DROP দিয়ে টেবিল খালি করা (বাংলা) appeared first on To Learn Team.

]]>
SQLite DELETE Query – টেবিল থেকে ডেটা মুছে ফেলার সম্পূর্ণ গাইড (বাংলা) https://tolearnteam.com/sqlite-delete-query-bangla/ Fri, 07 Aug 2026 13:44:39 +0000 http://tolearnteam.com/?p=2157 টেবিলের অপ্রয়োজনীয় বা ভুল রেকর্ড সরিয়ে ফেলার জন্য SQLite-তে DELETE স্টেটমেন্ট ব্যবহার করা হয়। এটি DML (Data Manipulation Language) কমান্ড। UPDATE-এর মতোই, এখানেও WHERE ক্লজ ব্যবহার করে নির্দিষ্ট সারি চিহ্নিত করা হয়। যদি WHERE…

The post SQLite DELETE Query – টেবিল থেকে ডেটা মুছে ফেলার সম্পূর্ণ গাইড (বাংলা) appeared first on To Learn Team.

]]>
টেবিলের অপ্রয়োজনীয় বা ভুল রেকর্ড সরিয়ে ফেলার জন্য SQLite-তে DELETE স্টেটমেন্ট ব্যবহার করা হয়। এটি DML (Data Manipulation Language) কমান্ড। UPDATE-এর মতোই, এখানেও WHERE ক্লজ ব্যবহার করে নির্দিষ্ট সারি চিহ্নিত করা হয়। যদি WHERE ব্যবহার না করা হয়, তাহলে টেবিলের সকল রেকর্ড মুছে যাবে, কিন্তু টেবিলের গঠন (schema) অক্ষত থাকবে। এটি DROP TABLE থেকে ভিন্ন – DROP টেবিলসহ পুরো গঠনই সরিয়ে দেয়, DELETE শুধু ডেটা সরায়। আজকের পর্বে আমরা DELETE-এর সঠিক ব্যবহার, সতর্কতা ও বাস্তব উদাহরণ শিখব।


পূর্বপ্রস্তুতি

  • SQLite ইন্সটল থাকতে হবে (সিরিজের ৩য় পর্ব দেখুন)।
  • company.db ডাটাবেসে COMPANY টেবিল। না থাকলে নিচের ধাপে তৈরি করুন:

bash

sqlite3 company.db

sql

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY NOT NULL,
   NAME TEXT NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR(50),
   SALARY REAL
);

INSERT INTO COMPANY VALUES (1, 'Paul', 32, 'California', 20000.00);
INSERT INTO COMPANY VALUES (2, 'Allen', 25, 'Texas', 15000.00);
INSERT INTO COMPANY VALUES (3, 'Teddy', 23, 'Norway', 20000.00);
INSERT INTO COMPANY VALUES (4, 'Mark', 25, 'Rich-Mond', 65000.00);
INSERT INTO COMPANY VALUES (5, 'David', 27, 'Texas', 85000.00);
INSERT INTO COMPANY VALUES (6, 'Kim', 22, 'South-Hall', 45000.00);
INSERT INTO COMPANY VALUES (7, 'James', 24, 'Houston', 10000.00);
  • আউটপুট সুন্দর করতে: .header on এবং .mode column।

১. DELETE-এর সিনট্যাক্স

মৌলিক গঠন:

sql

DELETE FROM table_name
WHERE condition;
  • table_name – যে টেবিল থেকে রেকর্ড মুছবেন।
  • WHERE condition – ঐচ্ছিক কিন্তু অত্যন্ত গুরুত্বপূর্ণ। এই শর্তে নির্দিষ্ট সারি(গুলো) মুছে যাবে।

যদি WHERE না দেন: টেবিলের সব রেকর্ড ডিলিট হবে, টেবিল ফাঁকা (empty) হয়ে যাবে।


২. নির্দিষ্ট রেকর্ড ডিলিট করা (WHERE সহ)

উদাহরণ ১: ID 7 (James) কে মুছে ফেলা।

sql

DELETE FROM COMPANY WHERE ID = 7;

এখন পুরো টেবিল দেখলে:

sql

SELECT * FROM COMPANY;

ফলাফল:

text

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0

James (ID 7) আর নেই।

উদাহরণ ২: AND/OR দিয়ে একাধিক শর্তে ডিলিট।

sql

DELETE FROM COMPANY
WHERE AGE < 25 AND SALARY <= 20000;

এটি Kim (AGE 22, SALARY 45000) ডিলিট করবে না, কিন্তু Teddy (23, 20000) ডিলিট হবে। পরীক্ষা করে দেখুন।

উদাহরণ ৩: IN ব্যবহার করে একাধিক ID ডিলিট।

sql

DELETE FROM COMPANY WHERE ID IN (2, 4);

এক কমান্ডে Allen ও Mark ডিলিট হবে।


৩. সব রেকর্ড ডিলিট (WHERE ছাড়া)

এটি অত্যন্ত সতর্কতার সাথে ব্যবহার করুন। কমান্ড:

sql

DELETE FROM COMPANY;

এটি COMPANY টেবিলের সমস্ত সারি মুছে ফেলবে, কিন্তু টেবিলের গঠন (CREATE TABLE স্ট্রাকচার) থেকে যাবে। টেবিলটি আবার নতুন রেকর্ড ইনসার্টের জন্য প্রস্তুত।

পার্থক্য DROP TABLE: DROP TABLE COMPANY; করলে টেবিলের অস্তিত্বই শেষ। তারপর আবার CREATE করতে হবে। DELETE করলে টেবিল থাকে, শুধু খালি হয়।

ব্যবহারিক পরীক্ষা:

sql

SELECT COUNT(*) FROM COMPANY;  -- 7 (অথবা যাই ছিল)
DELETE FROM COMPANY;
SELECT COUNT(*) FROM COMPANY;  -- 0

৪. DELETE এবং ট্রানজ্যাকশন

ভুলবশত সমস্ত ডেটা ডিলিট এড়াতে আপনি ট্রানজ্যাকশনের ভেতর DELETE চালাতে পারেন:

sql

BEGIN;
DELETE FROM COMPANY WHERE AGE > 100; -- উদাহরণ, এমন কেউ নেই
-- যদি ভুলও করি, সাথে সাথে ROLLBACK
ROLLBACK;

তাহলে ডেটা অক্ষত থাকবে। নিশ্চিত হলে COMMIT করুন।


৫. ডিরেক্টরি স্ট্রাকচার ও প্যাকেজ

আমাদের পুরো কাজ জুড়ে শুধুমাত্র company.db ফাইলটি ব্যবহৃত হচ্ছে। DELETE কোনো অতিরিক্ত ফাইল তৈরি করে না। তবে ডিলিট করার পর ডাটাবেস ফাইল আকার ছোট নাও হতে পারে; খালি জায়গা রিক্লেইম করতে VACUUM কমান্ড প্রয়োজন (পরে আলোচিত হবে)।

কোনো বিশেষ প্যাকেজ ইন্সটল করতে হবে না।


৬. গুরুত্বপূর্ণ টিপস ও সতর্কতা

  • সর্বদা WHERE ব্যবহার করুন, যতক্ষণ না পুরো টেবিল খালি করাই লক্ষ্য।
  • ডিলিটের আগে SELECT করে নিন – একই WHERE শর্ত দিয়ে SELECT * FROM COMPANY WHERE ... চালিয়ে দেখুন কোন রেকর্ডগুলো ডিলিট হবে।
  • ব্যাকআপ নিন – গুরুত্বপূর্ণ ডাটাবেসে .backup বা .dump দিয়ে কপি রেখে তারপর DELETE করুন।
  • ফরেন কি সম্পর্ক: যদি অন্য টেবিল থেকে এই টেবিলের প্রাইমারি কি ব্যবহৃত হয়, তাহলে ডিলিট করলে সম্পর্কিত রেকর্ডও নষ্ট হতে পারে অথবা অরফান রেকর্ড তৈরি হবে। তখন CASCADE ইত্যাদি ব্যবহার করা লাগে (পরে আলোচিত হবে)।
  • LIMIT: SQLite 3.35+ ভার্সনে DELETE FROM table WHERE condition LIMIT n সমর্থিত, যা নির্দিষ্ট সংখ্যক সারি ডিলিট করতে পারে।
  • সঠিক শর্ত না মানলে: WHERE-এ কলামের নাম ভুল বা এমন শর্ত দিন যার কোনো মিল নেই, তবে কিছুই ডিলিট হবে না – নিরাপদ।

৭. কমপ্লিট অনুশীলন সেশন

নিচের ধাপগুলো টার্মিনালে চালিয়ে দক্ষতা বাড়ান:

bash

sqlite3 company.db

sql

.headers on
.mode column

-- প্রাথমিক রেকর্ড দেখি
SELECT * FROM COMPANY;

-- নির্দিষ্ট ডিলিট
DELETE FROM COMPANY WHERE NAME = 'Teddy';

-- শর্তযোগে ডিলিট
DELETE FROM COMPANY WHERE AGE >= 27 AND SALARY > 80000;

-- অবশিষ্ট দেখি
SELECT * FROM COMPANY;

-- পুরো টেবিল সাফ করার আগে ব্যাকআপ নিই
.backup company_backup.db
DELETE FROM COMPANY;
SELECT * FROM COMPANY; -- ফাঁকা

-- ব্যাকআপ থেকে ফিরিয়ে আনা (পরের পর্বের জন্য রেখে দিচ্ছি)
.restore company_backup.db

পরবর্তী পর্বে

আমরা SQLite-তে SELECT এর সাথে LIKE, GLOB, LIMIT, ORDER BY ক্লজের বিস্তারিত ব্যবহার শিখব।

লেখকের কথা: DELETE কমান্ড সহজ কিন্তু বিপজ্জনক। সতর্কতা অবলম্বন করলে আপনার ডেটা নিরাপদ থাকবে। বাংলায় এই টিউটোরিয়াল সিরিজ চলমান রাখতে আপনাদের উৎসাহই বড় শক্তি। পোস্টটি ভালো লাগলে শেয়ার করুন, এবং সব পর্বের আপডেট পেতে ToLearnTeam.com ব্লগ সাবস্ক্রাইব করুন। কোনো প্রশ্ন বা মতামত কমেন্টে জানান – আমরা উত্তর দিতে প্রস্তুত!



SQLite Full Course

  1. SQLite পরিচিতি ও ইন্সটলেশন গাইড – বাংলায় প্রথম ডাটাবেস তৈরি
  2. SQLite কী এবং কেন শিখবেন? সম্পূর্ণ ওভারভিউ ও কমান্ড ক্লাসিফিকেশন (DDL, DML, DQL)
  3. SQLite ইন্সটলেশন গাইড – Windows, Linux ও Mac-এ ধাপে ধাপে সেটআপ
  4. SQLite ডট কমান্ড (Dot Commands) – সম্পূর্ণ গাইড, আউটপুট ফরম্যাট ও sqlite_master
  5. SQLite সিনট্যাক্স (Syntax) – কেস সেনসিটিভিটি, কমেন্ট, সব কমান্ডের গঠন ও উদাহরণ
  6. SQLite ডেটা টাইপ (Data Type) – স্টোরেজ ক্লাস, টাইপ অ্যাফিনিটি, বুলিয়ান ও ডেট-টাইম
  7. SQLite ডেটাবেস তৈরি (Create Database) – ধাপে ধাপে গাইড, .dump এক্সপোর্ট ও রিস্টোর
  8. SQLite ATTACH DATABASE – একাধিক ডাটাবেস সংযুক্ত করার সম্পূর্ণ গাইড (বাংলা)
  9. SQLite DETACH DATABASE – সংযুক্ত ডাটাবেস বিচ্ছিন্ন করার পূর্ণাঙ্গ গাইড
  10. SQLite CREATE TABLE স্টেটমেন্ট – টেবিল তৈরি করার পূর্ণাঙ্গ গাইড (বাংলা)
  11. SQLite DROP TABLE স্টেটমেন্ট – টেবিল ডিলিট করার সম্পূর্ণ গাইড (বাংলা)
  12. SQLite INSERT INTO স্টেটমেন্ট – ডেটা ইনসার্ট করার সম্পূর্ণ গাইড (বাংলা)
  13. SQLite SELECT স্টেটমেন্ট – টেবিল থেকে ডেটা ফেচ করার সম্পূর্ণ গাইড (বাংলা)
  14. SQLite অপারেটর (Operators) – Arithmetic, Comparison, Logical, Bitwise (বাংলা টিউটোরিয়াল)
  15. SQLite এক্সপ্রেশন (Expressions) – বুলিয়ান, নিউমেরিক ও ডেট এক্সপ্রেশন (বাংলা টিউটোরিয়াল)
  16. SQLite AND ও OR অপারেটর – একাধিক শর্ত দিয়ে ডেটা ফিল্টার (বাংলা টিউটোরিয়াল)
  17. SQLite UPDATE Query – টেবিলের ডেটা পরিবর্তন করার সম্পূর্ণ গাইড (বাংলা)
  18. SQLite DELETE Query – টেবিল থেকে ডেটা মুছে ফেলার সম্পূর্ণ গাইড (বাংলা)
  19. SQLite LIKE Operator – প্যাটার্ন মিলিয়ে ডেটা খোঁজার সম্পূর্ণ গাইড (বাংলা)
  20. SQLite GLOB Operator – কেস-সেনসিটিভ প্যাটার্ন মিলিয়ে ডেটা খোঁজা (বাংলা)
  21. SQLite LIMIT Clause – ডেটা সীমিত করে আনার সম্পূর্ণ গাইড (বাংলা)
  22. SQLite ORDER BY ক্লজ – ডেটা সাজানোর সম্পূর্ণ গাইড (বাংলা)
  23. SQLite GROUP BY ক্লজ – ডেটা গ্রুপ করে বিশ্লেষণ করার সম্পূর্ণ গাইড (বাংলা)
  24. SQLite HAVING ক্লজ – গ্রুপের উপর শর্ত দিয়ে ডেটা ফিল্টার (বাংলা টিউটোরিয়াল)
  25. SQLite DISTINCT Keyword – ডুপ্লিকেট ডেটা বাদ দিয়ে ইউনিক ভ্যালু পাওয়া (বাংলা)
  26. SQLite PRAGMA কমান্ড – ডাটাবেস কনফিগারেশন ও সেটিংস (বাংলা টিউটোরিয়াল)
  27. SQLite Constraints – NOT NULL, DEFAULT, UNIQUE, PRIMARY KEY, CHECK (বাংলা টিউটোরিয়াল)
  28. SQLite JOINS – CROSS JOIN, INNER JOIN, LEFT OUTER JOIN (বাংলা টিউটোরিয়াল)
  29. SQLite UNION ও UNION ALL – একাধিক SELECT একত্রিত করার সম্পূর্ণ গাইড (বাংলা)
  30. SQLite NULL Values – NULL কী, IS NULL, IS NOT NULL (বাংলা টিউটোরিয়াল)
  31. SQLite ALIAS Syntax – টেবিল ও কলামের অস্থায়ী নাম (বাংলা টিউটোরিয়াল)
  32. SQLite Triggers – স্বয়ংক্রিয় ট্রিগার তৈরি, ব্যবহার ও মুছে ফেলা (বাংলা টিউটোরিয়াল)
  33. SQLite Indexes – CREATE, UNIQUE, COMPOSITE, DROP INDEX (বাংলা টিউটোরিয়াল)
  34. SQLite INDEXED BY Clause – নির্দিষ্ট ইনডেক্স ব্যবহার ও NOT INDEXED (বাংলা)
  35. SQLite ALTER TABLE Command – টেবিলের গঠন পরিবর্তন (বাংলা টিউটোরিয়াল)
  36. SQLite TRUNCATE TABLE Command – DELETE ও DROP দিয়ে টেবিল খালি করা (বাংলা)
  37. SQLite Views – ভার্চুয়াল টেবিল তৈরি, ব্যবহার ও ডিলিট (বাংলা টিউটোরিয়াল)
  38. SQLite Transactions – BEGIN, COMMIT, ROLLBACK ও ACID প্রপার্টি (বাংলা)
  39. SQLite Subqueries – SELECT, INSERT, UPDATE, DELETE-এ সাবকোয়েরি ব্যবহার (বাংলা টিউটোরিয়াল)
  40. SQLite AUTOINCREMENT – স্বয়ংক্রিয়ভাবে প্রাইমারি কি মান বৃদ্ধি (বাংলা টিউটোরিয়াল)
  41. SQLite SQL Injection – কী, কেন বিপজ্জনক ও প্রতিরোধের উপায় (বাংলা টিউটোরিয়াল)
  42. SQLite EXPLAIN ও EXPLAIN QUERY PLAN – কোয়েরি বিশ্লেষণ (বাংলা টিউটোরিয়াল)
  43. SQLite VACUUM – ডাটাবেস পরিষ্কার, স্পেস রিক্লেইম ও অটো-ভ্যাকুয়াম (বাংলা টিউটোরিয়াল)
  44. SQLite Date & Time ফাংশন – date(), time(), datetime(), julianday(), strftime() (বাংলা টিউটোরিয়াল)
  45. SQLite Useful Functions – COUNT, MAX, MIN, AVG, SUM, RANDOM, ABS, UPPER, LOWER, LENGTH (বাংলা টিউটোরিয়াল)
  46. SQLite C/C++ প্রোগ্রামিং – sqlite3_open, exec, close, callback (বাংলা টিউটোরিয়াল)
  47. SQLite PHP প্রোগ্রামিং – PHP-তে SQLite ডাটাবেস ব্যবহার (বাংলা টিউটোরিয়াল)
  48. SQLite Perl প্রোগ্রামিং – DBI/DBD::SQLite দিয়ে ডাটাবেস অপারেশন (বাংলা)
  49. SQLite Python প্রোগ্রামিং – sqlite3 মডিউল দিয়ে CRUD অপারেশন (বাংলা টিউটোরিয়াল)
  50. SQLite Quick Guide – বাংলায় পূর্ণাঙ্গ সংক্ষিপ্ত টিউটোরিয়াল (শেখার সহজ গাইড)

The post SQLite DELETE Query – টেবিল থেকে ডেটা মুছে ফেলার সম্পূর্ণ গাইড (বাংলা) appeared first on To Learn Team.

]]>