MySQL 8.0.2+ সংস্করণে RANK() উইন্ডো ফাংশন যোগ হওয়ার সাথে সাথে rank একটি রিজার্ভড কীওয়ার্ড হয়ে গেছে। কলাম নাম হিসেবে ব্যবহার করতে হলে অবশ্যই ব্যাকটিক (`) দিয়ে ঘেরতে হয়।
MySQL ভার্সন চেক
mysql> SELECT VERSION();
+-----------+
| version() |
+-----------+
| 8.0.12 |
+-----------+
❌ ব্যাকটিকস ছাড়া (এরর)
mysql> CREATE TABLE DemoTable1596 (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName VARCHAR(20),
-> rank INT
-> );
ERROR 1064 (42000): You have an error in your SQL syntax near 'rank int' at line 5
✅ ব্যাকটিকস দিয়ে (সফল)
mysql> CREATE TABLE DemoTable1596 (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName VARCHAR(20),
-> `rank` INT
-> );
Query OK, 0 rows affected (0.51 sec)
ডেটা ইনসার্ট ও সিলেক্ট (ব্যাকটিকস সহ)
mysql> INSERT INTO DemoTable1596(StudentName, `rank`) VALUES('Bob', 4567);
mysql> INSERT INTO DemoTable1596(StudentName, `rank`) VALUES('David', 1);
mysql> SELECT * FROM DemoTable1596;
আউটপুট:
+----+-------------+------+
| Id | StudentName | rank |
+----+-------------+------+
| 1 | Bob | 4567 |
| 2 | David | 1 |
+----+-------------+------+
MySQL 8.0 এর অন্যান্য নতুন রিজার্ভড ওয়ার্ড: GROUPS, EXCLUDE, FOLLOWING, PRECEDING, RANK, ROW_NUMBER, NTILE, LEAD, LAG, FIRST_VALUE, LAST_VALUE, NTH_VALUE, ... (মূলত উইন্ডো ফাংশন সংক্রান্ত)।
সেরা অনুশীলন: রিজার্ভড ওয়ার্ড কলাম/টেবিল নাম হিসেবে এড়ান। আবশ্যক হলে সব জায়গায় ব্যাকটিক (`) ব্যবহার করুন। SHOW RESERVED WORDS; দিয়ে তালিকা দেখুন।