Exam-ready answer with definition, syntax, examples, output explanation, comparison table, and conclusion.
SQL এ কিভাবে একটি টেবিলের এট্রিবিউট কে unique key করবে? উদাহরণ দাও। like এবং = অপারেটর এর পার্থক্য উদাহরণ সহযোগে বর্ণনা কর।
SQL-এ database table-এর data সঠিক, নির্ভুল এবং duplicate-free রাখার জন্য বিভিন্ন constraint ব্যবহার করা হয়। এর মধ্যে UNIQUE constraint বা Unique Key একটি গুরুত্বপূর্ণ constraint।
আবার SQL-এ data search করার সময় কখনও exact value match করতে হয়, আবার কখনও pattern অনুযায়ী search করতে হয়। exact matching-এর জন্য = operator এবং pattern matching-এর জন্য LIKE operator ব্যবহার করা হয়।
সহজ ভাষায়: UNIQUE key duplicate value আটকায়, = exact value match করে, আর LIKE pattern অনুযায়ী value খুঁজে বের করে।
Unique Key বা UNIQUE constraint এমন একটি constraint, যা কোনো table-এর একটি column বা একাধিক column-এর value duplicate হতে দেয় না।
অর্থাৎ যদি কোনো column-এ UNIQUE constraint দেওয়া হয়, তাহলে সেই column-এ একই value একাধিক row-তে insert করা যাবে না।
Definition: A UNIQUE constraint ensures that all values in a column or a group of columns are unique.
Unique Key database table-এর duplicate data আটকাতে সাহায্য করে। যেমন student-এর email, employee-এর phone number, product code বা account number সাধারণত unique হওয়া উচিত।
কোনো table তৈরি করার সময় column-এর পাশে UNIQUE keyword লিখে সেই attribute-কে unique করা যায়।
CREATE TABLE table_name (
column1 datatype,
column2 datatype UNIQUE,
column3 datatype
);
CREATE TABLE Student (
Roll_No INT PRIMARY KEY,
Name VARCHAR(50),
Email VARCHAR(100) UNIQUE,
Phone VARCHAR(15)
);
এখানে Email column-এ UNIQUE constraint দেওয়া হয়েছে। তাই একই email দুইজন student-এর জন্য insert করা যাবে না।
INSERT INTO Student (Roll_No, Name, Email, Phone)
VALUES (101, 'Rahul', 'rahul@gmail.com', '9876543210');
INSERT INTO Student (Roll_No, Name, Email, Phone)
VALUES (102, 'Riya', 'riya@gmail.com', '9876543211');
উপরের দুটি query সফলভাবে execute হবে, কারণ Email values আলাদা।
INSERT INTO Student (Roll_No, Name, Email, Phone)
VALUES (103, 'Karim', 'rahul@gmail.com', '9876543212');
এই query error দেবে, কারণ rahul@gmail.com value আগে থেকেই Email column-এ আছে। Email column UNIQUE হওয়ায় duplicate email insert করা যাবে না।
যদি table আগে থেকেই তৈরি থাকে, তাহলে ALTER TABLE command ব্যবহার করে কোনো column-এ UNIQUE constraint add করা যায়।
ALTER TABLE table_name
ADD CONSTRAINT constraint_name UNIQUE (column_name);
ALTER TABLE Student
ADD CONSTRAINT UQ_Student_Email UNIQUE (Email);
এখানে existing Student table-এর Email column-কে unique করা হয়েছে। Constraint-এর নাম রাখা হয়েছে UQ_Student_Email।
কখনও কখনও একটি column নয়, বরং একাধিক column-এর combination unique রাখতে হয়। তখন composite unique constraint ব্যবহার করা হয়।
CREATE TABLE Enrollment (
Enrollment_ID INT PRIMARY KEY,
Student_ID INT,
Course_ID INT,
CONSTRAINT UQ_Student_Course UNIQUE (Student_ID, Course_ID)
);
এখানে একই Student_ID এবং Course_ID combination একাধিকবার insert করা যাবে না। অর্থাৎ একই student একই course-এ duplicate enrollment করতে পারবে না।
| বিষয় | Primary Key | Unique Key |
|---|---|---|
| Purpose | প্রতিটি row uniquely identify করে। | Column value duplicate হওয়া আটকায়। |
| Number per Table | একটি table-এ সাধারণত একটিই primary key থাকে। | একটি table-এ একাধিক unique key থাকতে পারে। |
| NULL | Primary key NULL accept করে না। | NULL handling DBMS অনুযায়ী ভিন্ন হতে পারে। |
| Example | Roll_No | Email, Phone |
LIKE operator SQL-এ pattern matching করার জন্য ব্যবহৃত হয়। যখন exact value জানা থাকে না, কিন্তু value-এর pattern জানা থাকে, তখন LIKE operator ব্যবহার করা হয়।
LIKE operator সাধারণত % এবং _ wildcard-এর সঙ্গে ব্যবহার করা হয়।
Definition: LIKE operator is used to search for a specified pattern in a column.
= operator SQL-এ exact comparison করার জন্য ব্যবহার করা হয়। এটি তখনই true return করে যখন column-এর value সম্পূর্ণভাবে given value-এর সমান হয়।
Definition: The = operator is used to compare exact values in SQL.
| Roll_No | Name | City | |
|---|---|---|---|
| 101 | Rahul | rahul@gmail.com | Kolkata |
| 102 | Riya | riya@yahoo.com | Delhi |
| 103 | Karim | karim@gmail.com | Kolkata |
| 104 | Anita | anita@hotmail.com | Mumbai |
| 105 | Arjun | arjun@gmail.com | Delhi |
যেসব student-এর City ঠিক Kolkata, তাদের বের করতে:
SELECT *
FROM Student
WHERE City = 'Kolkata';
| Roll_No | Name | City | |
|---|---|---|---|
| 101 | Rahul | rahul@gmail.com | Kolkata |
| 103 | Karim | karim@gmail.com | Kolkata |
এখানে City column-এর value ঠিক Kolkata হলে তবেই record result-এ এসেছে।
যেসব student-এর Email gmail.com দিয়ে শেষ হয়েছে, তাদের বের করতে:
SELECT *
FROM Student
WHERE Email LIKE '%gmail.com';
| Roll_No | Name | City | |
|---|---|---|---|
| 101 | Rahul | rahul@gmail.com | Kolkata |
| 103 | Karim | karim@gmail.com | Kolkata |
| 105 | Arjun | arjun@gmail.com | Delhi |
এখানে %gmail.com মানে gmail.com-এর আগে যেকোনো characters থাকতে পারে, কিন্তু শেষে gmail.com থাকতে হবে।
| Pattern | Meaning | SQL Example |
|---|---|---|
| 'A%' | A দিয়ে শুরু হওয়া values | WHERE Name LIKE 'A%' |
| '%a' | a দিয়ে শেষ হওয়া values | WHERE Name LIKE '%a' |
| '%ri%' | মাঝে ri আছে এমন values | WHERE Name LIKE '%ri%' |
| 'R_ya' | R এবং ya-এর মাঝখানে একটি character | WHERE Name LIKE 'R_ya' |
| বিষয় | = Operator | LIKE Operator |
|---|---|---|
| কাজ | Exact value match করে। | Pattern অনুযায়ী value match করে। |
| Wildcard Support | Wildcard support করে না। | % এবং _ wildcard support করে। |
| ব্যবহার | যখন complete value জানা থাকে। | যখন partial value বা pattern জানা থাকে। |
| Example | WHERE City = 'Kolkata' | WHERE Email LIKE '%gmail.com' |
| Result Type | Only exact matching rows। | Pattern matching rows। |
| Common Use | ID, city, exact name, exact status search। | Name starts with, email ends with, contains word search। |
যদি আমরা Delhi city-এর এমন students চাই যাদের email gmail.com দিয়ে শেষ, তাহলে = এবং LIKE একসঙ্গে ব্যবহার করা যায়।
SELECT *
FROM Student
WHERE City = 'Delhi'
AND Email LIKE '%gmail.com';
এখানে City exact match করছে = operator দিয়ে এবং Email pattern match করছে LIKE operator দিয়ে।
| Topic | Main Point | Example |
|---|---|---|
| Unique Key | Duplicate value prevent করে। | Email VARCHAR(100) UNIQUE |
| ALTER TABLE Unique | Existing table-এ unique constraint add করে। | ALTER TABLE Student ADD CONSTRAINT UQ_Email UNIQUE (Email); |
| = Operator | Exact matching করে। | WHERE City = 'Kolkata' |
| LIKE Operator | Pattern matching করে। | WHERE Email LIKE '%gmail.com' |
সুতরাং, SQL-এ কোনো table-এর attribute-কে unique করার জন্য UNIQUE constraint ব্যবহার করা হয়। এটি table-এর নির্দিষ্ট column বা column combination-এ duplicate value insert হতে বাধা দেয়। CREATE TABLE command-এর সময় অথবা ALTER TABLE command ব্যবহার করে UNIQUE constraint add করা যায়।
অন্যদিকে, = operator exact value matching-এর জন্য ব্যবহৃত হয় এবং LIKE operator pattern matching-এর জন্য ব্যবহৃত হয়। LIKE operator-এর সঙ্গে % এবং _ wildcard ব্যবহার করে flexible searching করা যায়।