কম্পিউটার টিউটোরিয়াল

MySQL-এ NOT NULL ঘোষিত কলামে খালি স্ট্রিং ইনসার্ট করলে ডেটা টাইপের ভূমিকা কী?


NOT NULL ঘোষিত একটি MySQL কলামে খালি স্ট্রিং ইনসার্ট করলে ফলাফলে এর রিপ্রেজেন্টেশন ডেটা টাইপের ওপর নির্ভর করে। আমরা জানি, খালি স্ট্রিং ইনসার্ট মানে আমরা MySQL-কে একটি মান দিচ্ছি যার ইন্টিজার রিপ্রেজেন্টেশন INT 0।

যদি কলামটি INTEGER ডেটা টাইপের হয়, তবে MySQL ফলাফলে 0 দেখাবে, কারণ খালি স্ট্রিং ইন্টিজার 0-এ ম্যাপ হয়েছে।

উদাহরণ

mysql> create table test(id int NOT NULL, Name Varchar(10)); 
Query OK, 0 rows affected (0.19 sec)
mysql> Insert into test(id, name) values('1', 'Gaurav'),('0','Rahul'),('','Aarav'); 
Query OK, 3 rows affected, 1 warning (0.08 sec)
Records: 3 Duplicates: 0 Warnings: 1
mysql> Select * from test; 
+----+--------+
| id | Name   |
+----+--------+
|  1 | Gaurav |
|  0 | Rahul  |
|  0 | Aarav  |
+----+--------+
3 rows in set (0.00 sec)

কিন্তু যদি কলামটি VARCHAR বা অন্য কোনো ডেটা টাইপের হয়, তবে MySQL ফলাফলে খালি স্ট্রিং দেখাবে।

mysql> create table test123(id Varchar(10) NOT NULL, Name Varchar(10)); 
Query OK, 0 rows affected (0.19 sec)
mysql> Insert into test123(id, name) values('1', 'Gaurav'),('0','Rahul'),('','Aarav'); 
Query OK, 3 rows affected, 1 warning (0.08 sec)
Records: 3 Duplicates: 0 Warnings: 1
mysql> Select * from test123; 
+----+--------+
| id | Name   |
+----+--------+
|  1 | Gaurav |
|  0 | Rahul  |
|    | Aarav  |
+----+--------+
3 rows in set (0.00 sec)

উপরের উদাহরণগুলো থেকে দেখা যায় যে, NOT NULL কলামে খালি স্ট্রিং ইনসার্ট করলে ডেটা টাইপ কীভাবে ফলাফল নির্ধারণ করে।


  1. MySQL-এ char(2) টাইপের ফিল্ডে NULL ভ্যালু ইনসার্ট করা

  2. MySQL-এ AUTO_INCREMENT কলাম ইনসার্টের সময় স্কিপ করা (NULL দিয়ে)

  3. MySQL-এ কলামকে NOT NULL ডিফাইন করা যাতে সেটি খালি (NULL) না থাকে

  4. MySQL-এ LEFT JOIN ব্যবহার করে টেবিল A-র ডেটা টেবিল B-এ না থাকলে টেবিল C-তে ইনসার্ট করা