आप MariaDB में विभिन्न स्तरों पर वर्ण सेट और संयोजन निर्दिष्ट कर सकते हैं। आप उन्हें कनेक्शन स्तर, सर्वर स्तर, डेटाबेस स्तर, तालिका स्तर और यहां तक कि स्तंभ स्तर पर निर्दिष्ट कर सकते हैं।
आप अपने प्रश्नों में एक कोलाज भी निर्दिष्ट कर सकते हैं ताकि यह किसी भी ऐसे कोलाजेशन को ओवरराइड कर सके जिसे पहले उपरोक्त स्तरों पर निर्दिष्ट किया गया है।
स्तंभ स्तर पर वर्ण सेट और संयोजन सेट करने के लिए, CREATE TABLE
का उपयोग करें स्टेटमेंट या ALTER TABLE
स्टेटमेंट (इस पर निर्भर करता है कि आप टेबल बना रहे हैं या उसमें बदलाव कर रहे हैं)।
तालिका बनाते समय
तालिका बनाते समय कॉलम पर सेट कोलेशन और कैरेक्टर सेट करने का एक उदाहरण यहां दिया गया है:
CREATE TABLE Events (
EventId INT AUTO_INCREMENT NOT NULL,
EventName VARCHAR(255)
CHARACTER SET utf8
COLLATE utf8_spanish_ci,
PRIMARY KEY (EventId)
);
यहां, मैंने कॉलम स्तर पर वर्ण सेट और संयोजन निर्दिष्ट किया है। उन्हें तालिका स्तर पर सेट करना भी संभव है।
मौजूदा कॉलम में बदलाव करें
मौजूदा कॉलम पर सेट कोलेशन और कैरेक्टर को बदलने का एक उदाहरण यहां दिया गया है:
ALTER TABLE Events
MODIFY EventName VARCHAR(255)
CHARACTER SET latin5 COLLATE latin5_turkish_ci;
EventName
कॉलम अब नए संयोजन और वर्ण सेट का उपयोग करता है।
कॉलम की जांच करें
किसी स्तंभ के मिलान और वर्ण सेट की जाँच करने के कई तरीके हैं। यहाँ एक है:
SELECT
column_name,
character_set_name,
collation_name
FROM information_schema.columns
WHERE table_name = 'Events'
AND column_name = 'EventName';
परिणाम:
+-------------+--------------------+-------------------+ | column_name | character_set_name | collation_name | +-------------+--------------------+-------------------+ | EventName | latin5 | latin5_turkish_ci | +-------------+--------------------+-------------------+
संरेखण वर्ण सेट के लिए मान्य होना चाहिए
कोलेशन और कैरेक्टर सेट दोनों को सेट करते समय, आपको यह सुनिश्चित करना होगा कि कोलेशन चुने गए कैरेक्टर सेट के लिए मान्य है और इसके विपरीत। यदि नहीं, तो एक त्रुटि लौटा दी जाती है।
निर्दिष्ट वर्ण सेट के लिए अमान्य संयोजन का उपयोग करने का एक उदाहरण यहां दिया गया है:
ALTER TABLE Events
MODIFY EventName VARCHAR(255)
CHARACTER SET utf16 COLLATE latin5_turkish_ci;
परिणाम:
ERROR 1253 (42000): COLLATION 'latin5_turkish_ci' is not valid for CHARACTER SET 'utf16'
यह हमें बताता है कि हमारा चुना हुआ संयोजन हमारे चुने हुए निर्दिष्ट वर्ण सेट के लिए मान्य नहीं है।
मिलान कोलाज और कैरेक्टर सेट की सूची के लिए मारियाडीबी द्वारा समर्थित कोलाज की पूरी सूची या मारियाडीबी द्वारा समर्थित कैरेक्टर सेट की पूरी सूची देखें।
केवल संयोजन या वर्ण सेट निर्दिष्ट करना
केवल संयोजन या केवल वर्ण सेट (या न तो) निर्दिष्ट करना ठीक है:
- यदि केवल वर्ण सेट प्रदान किया जाता है, तो उस वर्ण सेट के लिए डिफ़ॉल्ट संयोजन का उपयोग किया जाएगा।
- यदि केवल संयोजन प्रदान किया जाता है, तो संबंधित वर्ण सेट का उपयोग किया जाएगा।
- यदि न तो संयोजन और न ही वर्ण सेट प्रदान किया जाता है, तो तालिका डिफ़ॉल्ट का उपयोग किया जाता है।
ऐसे कैरेक्टर सेट में कनवर्ट करना जिसके लिए अधिक बाइट्स की आवश्यकता होती है
तालिका स्तर पर वर्ण सेट को परिवर्तित करना भी संभव है। तालिका स्तर पर वर्ण सेट को परिवर्तित करते समय, एक मौका है कि मारियाडीबी स्वचालित रूप से डेटा प्रकार को एक में परिवर्तित कर सकता है जो नए वर्ण सेट को संभालने में बेहतर है।
हालाँकि, जब हम MODIFY
. का उपयोग करते हैं अलग-अलग कॉलम पर और स्पष्ट रूप से डेटा प्रकार निर्दिष्ट करें (जैसे हमने पिछले उदाहरणों में किया था), हम मारियाडीबी को डेटा प्रकार को परिवर्तित करने से रोकते हैं।
बाइनरी में कनवर्ट करना
CONVERT TO CHARACTER SET binary
CHAR
में कनवर्ट करेगा , VARCHAR
और TEXT
BINARY
. के लिए कॉलम , VARBINARY
और BLOB
क्रमश।
एक बार यह हो जाने के बाद, ऐसे स्तंभों में वर्ण सेट नहीं रहेगा। साथ ही, वे अब भविष्य के CONVERT TO CHARACTER SET
. से प्रभावित नहीं होंगे बयान।
MariaDB में कोलेशन और कैरेक्टर सेट की जाँच करना
आप जिस स्तर की जांच कर रहे हैं (सर्वर, डेटाबेस, टेबल, कॉलम, कनेक्शन, आदि) के आधार पर, मारियाडीबी में संयोजन और चरित्र सेट की जांच करने के कई तरीके हैं। उदाहरण के लिए मारियाडीबी में कोलेशन दिखाएँ देखें।