Numeric Types
| Type | Range | ব্যবহার |
| TINYINT | -128 to 127 | flag, status |
| INT | ±2.1B | ID, count ⭐ |
| BIGINT | ±9.2×10^18 | বিশাল সংখ্যা |
| DECIMAL(10,2) | exact | টাকা/money ⭐ |
| FLOAT/DOUBLE | approximate | বৈজ্ঞানিক |
-- UNSIGNED (শুধু ধনাত্মক, range দ্বিগুণ)
age TINYINT UNSIGNED -- 0-255
user_id INT UNSIGNED NOT NULL
-- টাকা সবসময় DECIMAL (FLOAT নয়!)
price DECIMAL(10, 2) -- 99999999.99 পর্যন্ত
String Types
| Type | Size | ব্যবহার |
| CHAR(n) | fixed n | code (BD, M/F) |
| VARCHAR(n) | 0-65535 | name, email ⭐ |
| TEXT | 64 KB | description |
| LONGTEXT | 4 GB | article body |
| ENUM | - | fixed options |
| JSON | - | JSON data |
name VARCHAR(100) NOT NULL
email VARCHAR(150) UNIQUE
bio TEXT
role ENUM('admin', 'user') DEFAULT 'user'
settings JSON
country_code CHAR(2)
Date & Time
| Type | ফরম্যাট |
| DATE | YYYY-MM-DD |
| TIME | HH:MM:SS |
| DATETIME | YYYY-MM-DD HH:MM:SS |
| TIMESTAMP | 1970-2038 UTC ⭐ |
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
birth_date DATE
Boolean
MySQL-এ আলাদা BOOLEAN নেই। TINYINT(1) ব্যবহৃত হয়।
is_active TINYINT(1) DEFAULT 1
is_verified BOOLEAN DEFAULT FALSE
Constraint
NOT NULL -- NULL থাকতে পারবে না
DEFAULT value -- ডিফল্ট মান
AUTO_INCREMENT -- স্বয়ংক্রিয় বাড়ে
UNIQUE -- অনন্য
UNSIGNED -- শুধু ধনাত্মক
সম্পূর্ণ উদাহরণ
CREATE TABLE users (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(150) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
age TINYINT UNSIGNED,
balance DECIMAL(10,2) DEFAULT 0.00,
role ENUM('admin','user') DEFAULT 'user',
is_active TINYINT(1) DEFAULT 1,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
💡 বাংলা/ইমোজি সাপোর্টের জন্য utf8mb4 ব্যবহার করুন।