SQLite ALTER TABLE Command – টেবিলের গঠন পরিবর্তন (বাংলা টিউটোরিয়াল)

Blog / SQLite ALTER TABLE Command – টেবিলের গঠন পরিবর্তন (বাংলা টিউটোরিয়াল)

SQLite ALTER TABLE Command – টেবিলের গঠন পরিবর্তন (বাংলা টিউটোরিয়াল) Detail Page

SQLite ALTER TABLE Command – টেবিলের গঠন পরিবর্তন (বাংলা টিউটোরিয়াল)

SQLite ALTER TABLE কমান্ড দিয়ে টেবিল রিনেম ও নতুন কলাম যোগ করার বাংলা টিউটোরিয়াল

ডাটাবেসের চাহিদা সময়ের সাথে পাল্টায়। অনেক সময় টেবিল তৈরি করার পর দেখা যায় তার নাম বদলানো দরকার, কিংবা একটি নতুন কলাম সংযুক্ত করতে হবে। SQLite-তে এই কাজটি করার জন্য ALTER TABLE কমান্ড ব্যবহৃত হয়। তবে গুরুত্বপূর্ণ বিষয় হলো, SQLite-র ALTER TABLE শুধুমাত্র দুটি কাজ সমর্থন করে: টেবিলের নাম পরিবর্তন (RENAME TO) এবং নতুন কলাম যোগ করা (ADD COLUMN)। কলাম মুছে ফেলা, কলামের ডেটা টাইপ পরিবর্তন, বা কনস্ট্রেইন্ট যোগ/মুছার কোনো সরাসরি সুবিধা নেই। এই পর্বে আমরা ALTER TABLE-এর সম্পূর্ণ ব্যবহার, সীমাবদ্ধতা ও বিকল্প উপায় উদাহরণসহ শিখব।


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

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

টার্মিনাল:

bash

sqlite3 alter_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

১. ALTER TABLE-এর সাধারণ সিনট্যাক্স

SQLite-তে ALTER TABLE-এর দুটি রূপ:

টেবিলের নাম পরিবর্তন:

sql

ALTER TABLE database_name.table_name RENAME TO new_table_name;

নতুন কলাম যোগ করা:

sql

ALTER TABLE database_name.table_name ADD COLUMN column_def...;

database_name. ঐচ্ছিক। মূল ডাটাবেসের জন্য না দিলেও চলে। column_def-এ কলামের নাম, ডেটা টাইপ ও প্রয়োজনীয় কনস্ট্রেইন্ট (যেমন DEFAULT, NOT NULL ইত্যাদি) দেওয়া যায়। তবে কিছু সীমাবদ্ধতা আছে: নতুন কলামে NOT NULL দিতে গেলে অবশ্যই DEFAULT মান উল্লেখ করতে হবে, নয়তো এরর আসবে, কারণ বিদ্যমান সারিগুলোর জন্য NULL মান বসবে। আর UNIQUE বা PRIMARY KEY কনস্ট্রেইন্ট ADD COLUMN-এর সাথে দেওয়া যায় না।


২. টেবিলের নাম পরিবর্তন (RENAME TO)

COMPANY টেবিলের নাম বদলে OLD_COMPANY রাখি:

sql

ALTER TABLE COMPANY RENAME TO OLD_COMPANY;

এখন .tables কমান্ড দিয়ে দেখি:

sql

.tables
-- আউটপুট: OLD_COMPANY

SELECT * FROM OLD_COMPANY; চালালে আগের সব ডেটা অক্ষত আছে। টেবিলের নাম পরিবর্তন করলে ডেটার কোনো ক্ষতি হয় না, এবং টেবিলের সাথে সম্পর্কিত ইনডেক্স ও ট্রিগারও স্বয়ংক্রিয়ভাবে নতুন নামের সাথে আপডেট হয়ে যায়।


৩. নতুন কলাম যোগ করা (ADD COLUMN)

OLD_COMPANY টেবিলে SEX নামে একটি কলাম যোগ করি, যেখানে লিঙ্গ সংরক্ষণ করা হবে (এক অক্ষর)।

sql

ALTER TABLE OLD_COMPANY ADD COLUMN SEX char(1);

এখন SELECT * FROM OLD_COMPANY; দিলে আউটপুট:

text

ID          NAME        AGE         ADDRESS     SALARY      SEX
----------  ----------  ----------  ----------  ----------  ----------
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
7           James       24          Houston     10000.0

লক্ষ্য করুন, SEX কলামের সব সারিতে NULL বসেছে। এটি ডিফল্ট আচরণ। আপনি চাইলে ডিফল্ট মান দিতে পারেন:

sql

ALTER TABLE OLD_COMPANY ADD COLUMN STATUS TEXT DEFAULT 'Active';

তাহলে বিদ্যমান সব সারির জন্য STATUS-এ ‘Active’ বসবে। আবার NOT NULL চাইলে অবশ্যই DEFAULT দিতে হবে:

sql

ALTER TABLE OLD_COMPANY ADD COLUMN COUNTRY TEXT NOT NULL DEFAULT 'USA';

৪. SQLite-তে ALTER TABLE-এর সীমাবদ্ধতা

SQLite-র ALTER TABLE কেবল উপরের দুটি অপারেশন সমর্থন করে। আপনি পারবেন না:

  • কোনো কলাম মুছে ফেলতে (DROP COLUMN)।
  • কলামের নাম বা ডেটা টাইপ পরিবর্তন করতে (ALTER COLUMN)।
  • নতুন কনস্ট্রেইন্ট (UNIQUE, CHECK, FOREIGN KEY) যোগ বা মুছতে।

তাহলে কী করবেন? যদি জটিল পরিবর্তন দরকার হয়, তাহলে এই ধাপ অনুসরণ করুন:

  1. কাঙ্খিত গঠনসহ একটি নতুন টেবিল তৈরি করুন।
  2. পুরনো টেবিল থেকে ডেটা কপি করে নতুন টেবিলে ইনসার্ট করুন (INSERT INTO new_table SELECT ... FROM old_table)।
  3. পুরনো টেবিল ড্রপ করুন (DROP TABLE old_table)।
  4. নতুন টেবিলের নাম পরিবর্তন করে পুরনো নাম দিন (ALTER TABLE new_table RENAME TO old_table)।

উদাহরণ: ধরুন, আমরা SEX কলামটি বাদ দিতে চাই। নতুন টেবিল COMPANY_NEW:

sql

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

INSERT INTO COMPANY_NEW (ID, NAME, AGE, ADDRESS, SALARY)
SELECT ID, NAME, AGE, ADDRESS, SALARY FROM OLD_COMPANY;

DROP TABLE OLD_COMPANY;
ALTER TABLE COMPANY_NEW RENAME TO COMPANY;

এখন COMPANY টেবিলে SEX কলাম নেই।


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

শুধুমাত্র alter_demo.db ফাইলটি ব্যবহৃত হচ্ছে। কোনো অতিরিক্ত প্যাকেজ ইন্সটল করতে হবে না।

text

project-folder/
└── alter_demo.db

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

  • RENAME-এর সময় সতর্কতা: টেবিলের নাম বদলালে সেই টেবিলের উপর নির্ভরশীল ভিউ বা ট্রিগার আপডেট হয়, কিন্তু প্রোগ্রাম কোডে হার্ডকোডেড নাম থাকলে ম্যানুয়ালি পরিবর্তন করতে হবে।
  • ADD COLUMN-এ DEFAULT: বিদ্যমান ডেটার জন্য নতুন কলামে ডিফল্ট মান দেওয়া সবসময় ভালো প্র্যাকটিস, যাতে অপ্রত্যাশিত NULL এড়ানো যায়।
  • ADD COLUMN-এ UNIQUE নয়: নতুন কলামে সরাসরি UNIQUE বা PRIMARY KEY দেওয়া যাবে না। প্রয়োজনে আলাদা করে UNIQUE INDEX তৈরি করতে পারেন পরে।
  • কলামের অবস্থান: SQLite-তে নতুন কলাম সবসময় টেবিলের শেষে যোগ হয়। কলামের ক্রম পরিবর্তনের কোনো উপায় নেই (সেটা চাইলে নতুন টেবিল তৈরি পদ্ধতি ব্যবহার করতে হবে)।

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

টার্মিনালে নিচের কমান্ডগুলো চালান:

sql

.headers on
.mode column

-- বর্তমান টেবিল দেখি
.tables
SELECT * FROM COMPANY;

-- ১. টেবিল রিনেম
ALTER TABLE COMPANY RENAME TO STAFF;
.tables

-- ২. নতুন কলাম যোগ
ALTER TABLE STAFF ADD COLUMN EMAIL TEXT;
SELECT * FROM STAFF;

-- ৩. ডিফল্ট সহ নতুন কলাম
ALTER TABLE STAFF ADD COLUMN ACTIVE INTEGER DEFAULT 1;
SELECT * FROM STAFF;

-- পুনরায় আগের নামে ফেরত
ALTER TABLE STAFF RENAME TO COMPANY;

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

আমরা শিখব SQLite Views – কিভাবে এক বা একাধিক টেবিলের উপর ভিত্তি করে ভার্চুয়াল টেবিল তৈরি করতে হয় এবং এর ব্যবহারিক প্রয়োগ।

লেখকের কথা: ALTER TABLE ছোট পরিসরে কাজ করলেও টেবিল রক্ষণাবেক্ষণে খুবই দরকারি। বাংলায় প্রযুক্তি শেখার এই ধারা অব্যাহত রাখতে আপনার শেয়ার ও উৎসাহ আমাদের বড় প্রেরণা। পোস্টটি ভালো লাগলে বন্ধুদের জানাতে ভুলবেন না! সম্পূর্ণ সিরিজের আপডেট পেতে 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 – বাংলায় পূর্ণাঙ্গ সংক্ষিপ্ত টিউটোরিয়াল (শেখার সহজ গাইড)

Leave a Reply

Welcome to To Learn Team, a dynamic educational platform where knowledge meets collaboration. Designed for students, educators, and lifelong learners, we provide a curated hub of interactive study groups, expert tutorials, and comprehensive resources across diverse subjects. We believe that learning is most powerful when done together. By uniting a global community, we transform curiosity into confidence and individual aspirations into shared achievements. Join the To Learn Team today—elevate your intellect and grow with us!

Get In Touch

Address

Dhaka, Bangladesh

Email

abir43tee@gmail.com

Phone

+880 1711427737

Quick Search