MySQL Data Types

লেসন ১৭ / ৩৯

Numeric Types

TypeRangeব্যবহার
TINYINT-128 to 127flag, status
INT±2.1BID, count ⭐
BIGINT±9.2×10^18বিশাল সংখ্যা
DECIMAL(10,2)exactটাকা/money ⭐
FLOAT/DOUBLEapproximateবৈজ্ঞানিক
-- UNSIGNED (শুধু ধনাত্মক, range দ্বিগুণ)
age TINYINT UNSIGNED             -- 0-255
user_id INT UNSIGNED NOT NULL

-- টাকা সবসময় DECIMAL (FLOAT নয়!)
price DECIMAL(10, 2)              -- 99999999.99 পর্যন্ত

String Types

TypeSizeব্যবহার
CHAR(n)fixed ncode (BD, M/F)
VARCHAR(n)0-65535name, email ⭐
TEXT64 KBdescription
LONGTEXT4 GBarticle 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ফরম্যাট
DATEYYYY-MM-DD
TIMEHH:MM:SS
DATETIMEYYYY-MM-DD HH:MM:SS
TIMESTAMP1970-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 ব্যবহার করুন।