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

MySQL টেবিল থেকে ইউনিকনেস কনস্ট্রেইন্ট (UNIQUE) সরানো

MySQL-এ কম্পোজিট বা সিঙ্গেল কলামের ওপর থেকে UNIQUE কনস্ট্রেইন্ট সরাতে ALTER TABLE ... DROP INDEX ব্যবহার করুন।

সিনট্যাক্স

ALTER TABLE table_name DROP INDEX index_name;

দ্রষ্টব্য: MySQL-এ UNIQUE কনস্ট্রেইন্ট আন্ডারলেয়িংলি একটি UNIQUE INDEX হিসেবে ইমপ্লিমেন্টেড। তাই ইন্ডেক্সের নাম দিয়ে ড্রপ করতে হয়।

উদাহরণ

CREATE TABLE remove_unique_demo (
    id INT,
    name VARCHAR(100),
    age INT,
    is_greater_than_18 BOOL,
    UNIQUE KEY uniq_id_age (id, is_greater_than_18)
);

কনস্ট্রেইন্ট যাচাই

SHOW CREATE TABLE remove_unique_demo;

আউটপুট (আংশিক)

CREATE TABLE `remove_unique_demo` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(100) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `is_greater_than_18` tinyint(1) DEFAULT NULL,
  UNIQUE KEY `uniq_id_age` (`id`,`is_greater_than_18`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

ইন্ডেক্স নাম জানা

ইন্ডেক্সের নাম জানতে SHOW INDEX FROM table_name বা SHOW CREATE TABLE ব্যবহার করুন। উপরের উদাহরণে ইন্ডেক্সের নাম uniq_id_age (MySQL অটো জেনারেটেড)।

ইউনিক কনস্ট্রেইন্ট সরানো

ALTER TABLE remove_unique_demo DROP INDEX uniq_id_age;

পরিবর্তন যাচাই

SHOW CREATE TABLE remove_unique_demo;

ফলাফল — UNIQUE KEY অনুপস্থিত

CREATE TABLE `remove_unique_demo` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(100) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `is_greater_than_18` tinyint(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

PRIMARY KEY সরানো (সতর্কতা: নন-নাল কলাম লাগবে)

ALTER TABLE table_name DROP PRIMARY KEY;

সাধারণ ভুল

-- ভুল: ALTER TABLE t DROP UNIQUE (col1, col2);  -- MySQL-এ এই সিনট্যাক্স সাপোর্টেড নয়
-- সঠিক: ALTER TABLE t DROP INDEX index_name;

ইন্ডেক্সের নাম জানতে: SHOW INDEX FROM table_name WHERE Non_unique = 0;

  1. MySQL-এ VIEW থেকে টেবিল তৈরি করা (CREATE TABLE ... SELECT)

  2. MySQL-এ LEFT JOIN ব্যবহার করে ডুপ্লিকেট রেকর্ড মুছে ফেলা (রखতে চাই প্রথম রো)

  3. MySQL টেবিল থেকে ইন্ডেক্স সরানো

  4. MySQL-এ SHOW TABLES ব্যবহার করে ডাটাবেসের সব টেবিল নাম দেখুন