SQL ALTER TABLE স্টেটমেন্ট একটি টেবিলে কলাম যোগ করে, পরিবর্তন করে, বা মুছে ফেলে। এই স্টেটমেন্ট আপনাকে একটি টেবিল তৈরি হওয়ার পরেও পরিবর্তন করতে দেয়, এমনকি যদি টেবিলে রেকর্ড থাকে।
আপনি সিদ্ধান্ত নিতে পারেন আপনার একটি SQL টেবিলে পরিবর্তন আনতে। উদাহরণস্বরূপ, আপনি একটি কলামের নাম পরিবর্তন করতে চাইতে পারেন বা টেবিলে একটি নতুন কলাম যোগ করতে চাইতে পারেন। এই সব পরিবর্তন SQL ALTER TABLE কমান্ড দিয়ে সম্ভব।
SQL ALTER TABLE
ALTER TABLE কমান্ড আপনাকে একটি বিদ্যমান টেবিল পরিবর্তন করতে দেয়:
- একটি কলাম যোগ করে।
- একটি কনস্ট্রেইন্ট যোগ করে।
- একটি কলাম মুছে ফেলে।
- ডেটা টাইপ পরিবর্তন করে।
- একটি কলামের নাম পরিবর্তন করে।
এই টিউটোরিয়াল উদাহরণসহ আলোচনা করবে কীভাবে SQL ALTER TABLE কমান্ড ব্যবহার করে একটি টেবিল পরিবর্তন করতে হয়।
একটি টেবিল সেট আপ করা
এই টিউটোরিয়ালের জন্য, আমরা একটি ব্যবসার ডেটাবেস টেবিল পরিবর্তন করব। এই ডেটাবেস ব্যবসার জন্য কাজ করা প্রতিটি কর্মীর তথ্য সংরক্ষণ করে। আমাদের টেবিলের নাম "employees" এবং এতে নিচের মানগুলো আছে:
টেবিল তৈরি করার পর, আমরা বুঝলাম আমরা এর কাঠামো পরিবর্তন করতে চাই। আমরা SQL ALTER TABLE কমান্ড ব্যবহার করে এটি করতে পারি।
টেবিল কীভাবে তৈরি করতে হয় সেটি জানতে আমাদের SQL CREATE TABLE গাইড দেখুন।
SQL ALTER TABLE: একটি টেবিলে কলাম যোগ করা
আপনি ALTER TABLE কমান্ড ব্যবহার করে একটি SQL টেবিলে কলাম যোগ করতে পারেন। একটি বিদ্যমান টেবিলে নতুন কলাম যোগ করার সিনট্যাক্স নিচের মতো:
ALTER TABLE table_name ADD column_name data_type constraints;
ধরুন আমরা আমাদের "employees" টেবিলে একটি নতুন কলাম যোগ করতে চাই যা প্রতিটি কর্মীর ফোন নম্বর সংরক্ষণ করবে। এই কলামের নাম হবে "phone_number"। কলামটি VARCHAR() ডেটা টাইপ ব্যবহার করবে—যা আমাদের একটি নির্দিষ্ট ম্যাক্সিমাম লেন্থ পর্যন্ত স্ট্রিং সংরক্ষণ করতে দেবে—এবং কোনো কনস্ট্রেইন্ট থাকবে না।
আমরা নিচের স্টেটমেন্ট ব্যবহার করে এই কলাম তৈরি করতে পারি:
ALTER TABLE employees ADD phone_number VARCHAR(60);
এই কমান্ড একটি "employees" ডেটাবেসের একটি টেবিলে একটি নতুন কলাম যোগ করে। এখন, যখন আমরা আমাদের ডেটাবেসের কাঠামো দেখব, তবে আমাদের একটি নতুন কলাম "phone_number" দেখতে পাব:
| Field | Type | Default |
| name | varchar(60) | NULL |
| title | varchar(60) | NULL |
| department | varchar(60) | NULL |
| employee_number | varchar(60) | NULL |
| phone_number | varchar(60) |
যদি আপনি SQL-এ ডেটাবেসে কলাম যোগ করার বিষয়ে আরও জানতে আগ্রহী হন, তবে আমাদের SQL add column গাইড দেখুন।
SQL ALTER TABLE: একটি টেবিলে কনস্ট্রেইন্ট যোগ করা
গত বিভাগে, আমরা আমাদের টেবিলে একটি নতুন কলাম যোগ করেছি: phone_number। কিন্তু, আমরা টেবিলে কোনো কনস্ট্রেইন্ট যোগ করতে ভুলে গেছি।
এই উদাহরণে, এর মানে আমাদের ডেটাবেস একাধিক কর্মীর জন্য একই ফোন নম্বর সংরক্ষণ করতে পারে, যা ব্যবহারিক নয়।
এটি সমাধান করতে, আমরা আমাদের টেবিলের "phone_number" কলামে একটি UNIQUE কনস্ট্রেইন্ট যোগ করতে পারি। SQL-এ একটি কলামে কনস্ট্রেইন্ট যোগ করার সিনট্যাক্স নিচের মতো:
ALTER TABLE table_name ADD UNIQUE (column_name);
এই কমান্ড আমাদের "phone_number" কলামে একটি কনস্ট্রেইন্ট যোগ করে:
ALTER TABLE employees ADD UNIQUE (phone_number);
যদি আমরা আরেকটি কনস্ট্রেইন্ট যোগ করতে চাই, তবে "UNIQUE"-এর বদলে অন্য একটি SQL কনস্ট্রেইন্ট বসিয়ে দিয়ে করতে পারি।
SQL ALTER TABLE: একটি টেবিল থেকে কলাম মুছে ফেলা
আপনি ALTER TABLE কমান্ড ব্যবহার করে একটি টেবিল থেকে কলাম মুছে ফেলতে পারেন। এই অপারেশন পারফর্ম করার সিনট্যাক্স নিচের মতো:
ALTER TABLE table_name DROP COLUMN column_name;
ধরুন আমরা আমাদের টেবিল থেকে "department" কলামটি মুছে ফেলতে চাই। আমরা ভবিষ্যতে একটি নতুন কলাম তৈরি করব যা কর্মীর ডিপার্টমেন্ট অন্য একটি টেবিলের সাথে লিঙ্ক করবে। আমরা নিচের কমান্ড ব্যবহার করে এই কলাম মুছে ফেলতে পারি:
ALTER TABLE employees DROP COLUMN department;
এই কমান্ড এক্সিকিউট হলে আমাদের টেবিল থেকে "department" কলামটি ড্রপ হয়ে যাবে। সুতরাং, আমাদের টেবিলের কাঠামো এখন নিচের মতো দেখাবে:
| Field | Type | Default |
| name | varchar(60) | NULL |
| title | varchar(60) | NULL |
| employee_number | varchar(60) | NULL |
| phone_number | varchar(60) |
SQL ALTER TABLE: একটি কলামের ডেটা টাইপ পরিবর্তন করা
আপনি ALTER TABLE কমান্ড ব্যবহার করে একটি কলামের ডেটা টাইপ পরিবর্তন করতে পারেন। একটি কলামের ডেটা টাইপ পরিবর্তন করার সিনট্যাক্স:
ALTER TABLE table_name ALTER COLUMN column_name new_data_type;
এই কমান্ডের MySQL এবং Oracle (প্রি-১০G) এর জন্য দুটি অ্যাল্টারনেটিভ ভার্সন আছে, এবং Oracle 10G এবং তার পরের ভার্সনের জন্য। সেগুলো হলো:
ALTER TABLE table_name MODIFY COLUMN column_name new_data_type; (MySQL, Oracle pre-10G) ALTER TABLE table_name MODIFY column_name new_data_type; (Oracle 10G+ and later)
যখন আমরা আমাদের প্রাথমিক "employees" টেবিল তৈরি করেছিলাম, আমরা ভুলে "employee_number" ফিল্ডকে VARCHAR() বনায় দিয়েছিলাম নম্বর বদলে। এই ভুল सुधার করতে আমরা নিচের কমান্ড ব্যবহার করতে পারি:
ALTER TABLE employees ALTER COLUMN employee_number INT;
এই কমান্ড আমাদের "employee_number" কলামের টাইপ INT-এ পরিবর্তন করে। সুতরাং, আমাদের ডেটাবেসের নতুন কাঠামো নিচের মতো:
| Field | Type | Default |
| name | varchar(60) | NULL |
| title | varchar(60) | NULL |
| employee_number | varchar(60) | NULL |
| phone_number | int |
SQL ALTER TABLE: একটি টেবিলের নাম পরিবর্তন করা
ALTER TABLE কমান্ড আপনাকে একটি SQL টেবিলের নাম পরিবর্তন করতে দেয়। একটি টেবিলের নাম পরিবর্তন করার সিনট্যাক্স:
ALTER TABLE current_table RENAME new_table;
ধরুন আমরা আমাদের টেবিল "employees" কে "old_employees_2019" রিনেম করতে চাই। আমরা নিচের কমান্ড ব্যবহার করে এটি করতে পারি:
ALTER TABLE employees RENAME old_employees_2019;
আপনি MySQL-এ ALTER TABLE কমান্ড ব্যবহার করে একটি টেবিল রিনেম করতে পারবেন না। MySQL-এ, ALTER TABLE-এর বদলে আপনি RENAME table কমান্ড ব্যবহার করতে পারেন।
আমরা MySQL-এ আমাদের টেবিল রিনেম করতে নিচের কমান্ড ব্যবহার করব:
RENAME TABLE employees TO old_employees_2019;
উপসংহার
SQL ALTER TABLE কমান্ড আপনাকে SQL-এ একটি টেবিলের কাঠামো পরিবর্তন করতে দেয়। আপনি একটি ডেটাবেসে টেবিল যোগ করতে, মুছে ফেলতে, বা পরিবর্তন করতে পারেন। আপনি পাশাপাশি টেবিলের সাথে জড়িত কনস্ট্রেইন্টগুলোও মডিফাই করতে পারেন, যেমন UNIQUE বা NOT NULL।
আপনি কি SQL সম্পর্কে আরও জানতে চান? আমাদের How to Learn SQL গাইড পড়ুন। আপনি SQL শিখতে শীর্ষ টিপস পাবেন। আপনি এক্সপার্ট-কারেন্টেড লার্নিং রিসোর্সের তালিকাও পাবেন যা আপনার জ্ঞান গড়ে তুলতে সাহায্য করবে।