SET Data Type
In this page:
column_name SET('value1', 'value2', 'value3')
SET को समझना
SET एक single column को एक predefined list में से एक साथ zero, एक, या कई values रखने देता है, ENUM के उलट जो सिर्फ एक की अनुमति देता है — किसी row पर tags या permissions की list जैसी चीज़ के लिए उपयोगी।
उदाहरण: Understanding SET
CREATE TABLE users (permissions SET('read', 'write', 'admin'));
INSERT INTO users VALUES ('read,write');
SET Elements Query करना
क्योंकि एक SET column एक साथ कई values रख सकता है, एक plain equality check अक्सर आपकी उम्मीद से match नहीं होगा; FIND_IN_SET() function यह test करने का सही तरीका है कि एक specific value मौजूद है या नहीं।
उदाहरण: Querying SET Elements
CREATE TABLE users (permissions SET('read', 'write', 'admin'));
INSERT INTO users VALUES ('read,write');
SELECT * FROM users WHERE FIND_IN_SET('write', permissions);
SET का Binary Representation
Internally, MySQL एक SET को एक bitmap की तरह store करता है जहाँ हर defined option एक bit occupy करता है (1, 2, 4, 8, वगैरह), जो कई values combine या test करना इतना storage-efficient बनाता है।
उदाहरण: Binary representation of SET
-- 'read'=1, 'write'=2, 'admin'=4 -- combined values sum their bits
CREATE TABLE users (permissions SET('read', 'write', 'admin'));
INSERT INTO users VALUES ('read,admin'); -- stored internally as 1 + 4 = 5
SET Columns Update करना
आप string functions या direct bitwise operations इस्तेमाल करके एक SET column की current value से individual options add या remove कर सकते हैं, बिना पहले से stored हर दूसरी value जाने या दोबारा type किए।
उदाहरण: Updating SET Columns
CREATE TABLE users (id INT, permissions SET('read', 'write', 'admin'));
INSERT INTO users VALUES (1, 'read');
UPDATE users SET permissions = CONCAT(permissions, ',write') WHERE id = 1;
Invalid SET Values
ENUM की तरह, SET की defined list का हिस्सा न होने वाली एक value insert करना strict SQL mode के तहत पूरी तरह fail होगा, column को चुपचाप typos या invalid tags जमा होने से protect करते हुए।
उदाहरण: Invalid SET Values
CREATE TABLE users (permissions SET('read', 'write', 'admin'));
INSERT INTO users VALUES ('delete'); -- rejected in strict SQL mode
- किसी
SETcolumn को=से search करना, जैसेWHERE permissions = read, जो'read,write'वाली rows से match नहीं करता (FIND_IN_SETइस्तेमाल करें)। - value में spaces add करना, जैसे
'read, write', जो defined options से match नहीं करता। - flexible संख्या में values चाहिए होने वाले या बहुत query होने वाले data के लिए
SETइस्तेमाल करना, जब एक अलग table बेहतर हो।
Chapter Quiz — Complete all 8 topics to unlock
0/8 topics done
Complete these topics first: