MySQL-এ কলাম বা টেবিল নেমে স্পেস, সংরক্ষিত শব্দ বা স্পেশাল ক্যারেক্টার থাকলে ব্যাকটিক (`` ` ``) দিয়ে কোটেশন করতে হয়।
সিনট্যাক্স
CREATE TABLE table_name (
`column name with spaces` DATA_TYPE,
`another column` DATA_TYPE
);
উদাহরণ
CREATE TABLE blank_spaces_demo (
`Student Id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`Student Full Name` VARCHAR(100)
);
ইনসার্ট (ব্যাকটিক বাধ্যতামূলক)
INSERT INTO blank_spaces_demo (`Student Full Name`) VALUES ('John Smith');
INSERT INTO blank_spaces_demo (`Student Full Name`) VALUES ('Carol Taylor');
INSERT INTO blank_spaces_demo (`Student Full Name`) VALUES ('David Miller');
সিলেক্ট (ব্যাকটিক বাধ্যতামূলক)
SELECT `Student Id`, `Student Full Name` FROM blank_spaces_demo;
ফলাফল
+------------+--------------------+
| Student Id | Student Full Name |
+------------+--------------------+
| 1 | John Smith |
| 2 | Carol Taylor |
| 3 | David Miller |
+------------+--------------------+
অন্যান্য ডেলিমিটার (ANSI SQL মোডে)
SET SESSION sql_mode = 'ANSI_QUOTES'; সেট করলে ডবল কোটেশন "column name" কাজ করে, কিন্তু স্ট্রিং লিটারেলের জন্য সিঙ্গেল কোট 'value' ব্যবহার করতে হয়। সুপারিশ: সবসময় ব্যাকটিক ব্যবহার করুন।
কখন ব্যাকটিক বাধ্যতামূলক
- নেমে স্পেস থাকলে:
`first name` - সংরক্ষিত শব্দ:
`select`,`order`,`group`,`key` - স্পেশাল ক্যারেক্টার:
`col-name`,`col$name` - নেম্বার দিয়ে শুরু:
`123col`
সেরা অনুশীলন
- সব আইডেন্টিফায়ারকে ব্যাকটিক দিয়ে কোট করুন — কনসিস্টেন্সি ও ভুল এড়াতে
- ORM/ক্যোয়ারি বিল্ডারগুলো সাধারণত অটো করে
- নেমিং কনভেনশন:
snake_caseব্যবহার করুন (student_id,student_full_name) — স্পেস দরকার নেই
ALTER TABLE-এও ব্যাকটিক
ALTER TABLE `blank_spaces_demo`
CHANGE `Student Full Name` `Student_Full_Name` VARCHAR(150);