UPDATE টেবিলের ভেতরের ডেটা বদলায়। কিন্তু টেবিলের গঠন, অর্থাৎ কলাম যোগ করা, বাদ দেওয়া বা নাম বদলানোর জন্য ALTER TABLE ব্যবহার করি। ডেটাবেজ ম্যানেজমেন্ট পাঠে দেখেছি, গঠনের কাজগুলো DDL এর অংশ।
এই পাঠের নিয়ম
এই পাঠের কমান্ডগুলো টেবিলের ডেটা স্থায়ীভাবে বদলে দেয়।
প্রতিটি উদাহরণ মূল ডেটা থেকে শুরু হয়েছে। একটি উদাহরণের পরিবর্তন পরের উদাহরণে নেই।
SQL Playground এ চর্চা করলে প্রতিটি উদাহরণের পরে Reset করে আবার মূল টেবিল তৈরি করো। তাহলে ফলাফল এই পাতার সাথে মিলবে।
ALTER TABLE এর কাজ
কাজ
লেখার ধরন
নতুন কলাম যোগ
ALTER TABLE student ADD email VARCHAR(50);
কলাম বাদ
ALTER TABLE contact DROP COLUMN mobile_no;
কলামের নাম বদল
ALTER TABLE contact RENAME COLUMN mobile_no TO phone;
টেবিলের নাম বদল
ALTER TABLE contact RENAME TO student_contact;
সিনট্যাক্স
SQL Syntax Rule
ALTER TABLE [টেবিলের নাম] ADD [কলামের নাম][ডেটাটাইপ];ALTER TABLE [টেবিলের নাম] DROP COLUMN [কলামের নাম];ALTER TABLE [টেবিলের নাম] RENAME COLUMN [পুরনো নাম] TO [নতুন নাম];
উদাহরণ ১: নতুন কলাম যোগ
student টেবিলে শিক্ষার্থীর email রাখার জন্য একটি কলাম যোগ করি।
ALTER TABLE student ADD email VARCHAR(50);
ব্যাখ্যা
ALTER TABLE student→student টেবিলের গঠন বদলাবে
ADD email→email নামে নতুন কলাম
VARCHAR(50)→সর্বোচ্চ ৫০ অক্ষরের লেখা রাখবে
আগে৫টি সারি
roll
name
class
section
group_name
1
Rudra
11
A
Science
2
Habib
12
A
Commerce
3
Pappu
11
B
Arts
4
Anik
12
B
Science
5
Priya
11
A
Commerce
↓ পরিবর্তনের পরে
পরে৫টি সারি
roll
name
class
section
group_name
email
1
Rudra
11
A
Science
NULL
2
Habib
12
A
Commerce
NULL
3
Pappu
11
B
Arts
NULL
4
Anik
12
B
Science
NULL
5
Priya
11
A
Commerce
NULL
নতুন কলামে আগের সারিগুলোর কোনো মান নেই। কোনো মান না থাকাকে NULL বলে। NULL মানে শূন্য নয়, ফাঁকা লেখাও নয়, মান অজানা।
উদাহরণ ২: নতুন কলামে মান বসানো
কলাম যোগ করার পরে UPDATE দিয়ে মান বসাই।
ALTER TABLE student ADD email VARCHAR(50);
UPDATE student SET email = 'rudra@mail.com' WHERE roll = 1;
student (পরে)৫টি সারি
roll
name
class
section
group_name
email
1
Rudra
11
A
Science
rudra@mail.com
2
Habib
12
A
Commerce
NULL
3
Pappu
11
B
Arts
NULL
4
Anik
12
B
Science
NULL
5
Priya
11
A
Commerce
NULL
উদাহরণ ৩: কলাম বাদ দেওয়া
contact টেবিল থেকে mobile_no কলামটি বাদ দিই। কলামের সব ডেটাও চলে যাবে।
ALTER TABLE contact DROP COLUMN mobile_no;
আগে৫টি সারি
contact_id
roll
address
mobile_no
101
1
Gopalganj
01711111111
102
2
Narayanganj
01822222222
103
3
Barisal
01933333333
104
4
Dhaka
01644444444
105
5
Khulna
01555555555
↓ পরিবর্তনের পরে
পরে৫টি সারি
contact_id
roll
address
101
1
Gopalganj
102
2
Narayanganj
103
3
Barisal
104
4
Dhaka
105
5
Khulna
আরও একটি উদাহরণ: কলামের নাম বদল
contact টেবিলের mobile_no কলামের নাম phone করি। ডেটা একই থাকবে, শুধু নাম বদলাবে।
ALTER TABLE contact RENAME COLUMN mobile_no TO phone;
আগে৫টি সারি
contact_id
roll
address
mobile_no
101
1
Gopalganj
01711111111
102
2
Narayanganj
01822222222
103
3
Barisal
01933333333
104
4
Dhaka
01644444444
105
5
Khulna
01555555555
↓ পরিবর্তনের পরে
পরে৫টি সারি
contact_id
roll
address
phone
101
1
Gopalganj
01711111111
102
2
Narayanganj
01822222222
103
3
Barisal
01933333333
104
4
Dhaka
01644444444
105
5
Khulna
01555555555
মনে রাখো
ALTER TABLE গঠন বদলায় (DDL)। UPDATE ডেটা বদলায় (DML)।
নতুন কলাম যোগ করলে আগের সারিগুলোতে তার মান NULL থাকে।
কলাম বাদ দিলে সেই কলামের সব ডেটা হারিয়ে যায়।
RENAME COLUMN চলে MySQL 8.0 ও SQLite 3.25 থেকে, আর SQLite এ DROP COLUMN চলে 3.35 থেকে। পুরনো MySQL এ নাম বদলাতে CHANGE লিখতে হয়।
ফরেন কী বা প্রাইমারি কী এর কলাম (যেমন roll) বাদ দেওয়া বা নাম বদলানোর আগে সাবধান। অন্য টেবিল এর উপর নির্ভর করে।
অনুশীলন
প্রতিটি প্রশ্নের Query নিজে লেখো। চাইলে SQL Playground এ টেবিল তৈরি করে চালিয়ে দেখো। তারপর উত্তর মিলিয়ে নাও।
১
subject টেবিলে full_marks নামে INT ধরনের একটি কলাম যোগ করো।
উত্তর দেখো
ALTER TABLE subject ADD full_marks INT;
পরিবর্তনের পরে৬টি সারি
subject_code
subject_name
group_name
full_marks
101
Bangla
Common
NULL
275
ICT
Common
NULL
174
Physics
Science
NULL
253
Accounting
Commerce
NULL
109
Economics
Commerce
NULL
304
History
Arts
NULL
২
full_marks কলাম যোগ করে সব বিষয়ের full_marks 100 বসাও।
উত্তর দেখো
ALTER TABLE subject ADD full_marks INT;
UPDATE subject SET full_marks = 100;
পরিবর্তনের পরে৬টি সারি
subject_code
subject_name
group_name
full_marks
101
Bangla
Common
100
275
ICT
Common
100
174
Physics
Science
100
253
Accounting
Commerce
100
109
Economics
Commerce
100
304
History
Arts
100
৩
contact টেবিলের address কলামের নাম বদলে city করো।
উত্তর দেখো
ALTER TABLE contact RENAME COLUMN address TO city;