आप MariaDB में विभिन्न स्तरों पर वर्ण सेट और संयोजन निर्दिष्ट कर सकते हैं। आप उन्हें कनेक्शन स्तर, सर्वर स्तर, डेटाबेस स्तर, तालिका स्तर और यहां तक कि स्तंभ स्तर पर निर्दिष्ट कर सकते हैं।
आप अपने प्रश्नों में एक कोलाज भी निर्दिष्ट कर सकते हैं ताकि यह किसी भी ऐसे कोलाजेशन को ओवरराइड कर सके जिसे पहले उपरोक्त स्तरों पर निर्दिष्ट किया गया है।
तालिका स्तर पर वर्ण सेट और संयोजन सेट करने के लिए, CREATE TABLE
का उपयोग करें स्टेटमेंट या ALTER TABLE
स्टेटमेंट (इस पर निर्भर करता है कि आप टेबल बना रहे हैं या उसमें बदलाव कर रहे हैं)।
तालिका बनाते समय
तालिका बनाते समय संयोजन और वर्ण सेट सेट करने का एक उदाहरण यहां दिया गया है:
CREATE TABLE Products (
ProductId CHAR(10),
ProductName VARCHAR(255) NOT NULL,
PRIMARY KEY (ProductId))
CHARACTER SET latin1
COLLATE latin1_general_ci;
यह Products
. नामक एक तालिका बनाता है एक latin1
. के साथ वर्ण सेट, और latin1_general_ci
. का एक संयोजन ।
मौजूदा तालिका बदलें
मौजूदा टेबल पर सेट कोलेशन और कैरेक्टर को बदलने का एक उदाहरण यहां दिया गया है:
ALTER TABLE Products
CONVERT TO CHARACTER SET utf8 COLLATE utf8_spanish_ci;
यह अब नए संयोजन और वर्ण सेट का उपयोग करता है।
CONVERT TO
. को छोड़ना भी संभव है भाग:
ALTER TABLE Products
CHARACTER SET utf8
COLLATE utf8_spanish_ci;
संरेखण वर्ण सेट के लिए मान्य होना चाहिए
कोलेशन और कैरेक्टर सेट दोनों को सेट करते समय, आपको यह सुनिश्चित करना होगा कि कोलेशन चुने गए कैरेक्टर सेट के लिए मान्य है और इसके विपरीत। यदि नहीं, तो एक त्रुटि लौटा दी जाती है।
निर्दिष्ट वर्ण सेट के लिए अमान्य संयोजन का उपयोग करने का एक उदाहरण यहां दिया गया है:
ALTER TABLE Products
CHARACTER SET latin1
COLLATE utf8_spanish_ci;
परिणाम:
ERROR 1253 (42000): COLLATION 'utf8_spanish_ci' is not valid for CHARACTER SET 'latin1'
यह हमें बताता है कि हमारा चुना हुआ संयोजन हमारे चुने हुए निर्दिष्ट वर्ण सेट के लिए मान्य नहीं है।
मिलान कोलाज और कैरेक्टर सेट की सूची के लिए मारियाडीबी द्वारा समर्थित कोलाज की पूरी सूची या मारियाडीबी द्वारा समर्थित कैरेक्टर सेट की पूरी सूची देखें।
केवल संयोजन या वर्ण सेट निर्दिष्ट करना
केवल संयोजन या केवल वर्ण सेट (या न तो) निर्दिष्ट करना ठीक है:
- यदि केवल वर्ण सेट प्रदान किया जाता है, तो उस वर्ण सेट के लिए डिफ़ॉल्ट संयोजन का उपयोग किया जाएगा।
- यदि केवल संयोजन प्रदान किया जाता है, तो संबंधित वर्ण सेट का उपयोग किया जाएगा।
- यदि न तो संयोजन और न ही वर्ण सेट प्रदान किया जाता है, तो तालिका डिफ़ॉल्ट का उपयोग किया जाता है।
ऐसे कैरेक्टर सेट में कनवर्ट करना जिसके लिए अधिक बाइट्स की आवश्यकता होती है
VARCHAR
. के लिए या TEXT
कॉलम, CONVERT TO CHARACTER SET
यदि आवश्यक हो तो डेटा प्रकार बदलता है ताकि यह सुनिश्चित हो सके कि नया कॉलम मूल कॉलम के रूप में कई वर्णों को संग्रहीत करने के लिए पर्याप्त लंबा है।
उदाहरण के लिए, एक ascii TEXT
कॉलम में प्रति वर्ण एक बाइट की आवश्यकता होती है, इसलिए कॉलम में 65,535 वर्ण तक हो सकते हैं। यदि कॉलम को utf8 में बदल दिया जाता है, तो प्रत्येक वर्ण के लिए 3 बाइट्स की आवश्यकता हो सकती है, इसलिए कॉलम को MEDIUMTEXT
में बदल दिया जाएगा। (जिसकी अधिकतम लंबाई 16,777,215 है) ताकि वह उतने ही वर्णों को धारण कर सके।
यदि आप नहीं चाहते कि इस तरह के डेटा प्रकार में परिवर्तन हो, तो MODIFY
. का उपयोग करें इसके बजाय अलग-अलग कॉलम पर।
उदाहरण के लिए:
ALTER TABLE Products
MODIFY ProductName VARCHAR(255)
CHARACTER SET utf8;
बाइनरी में कनवर्ट करना
CONVERT TO CHARACTER SET binary
CHAR
में कनवर्ट करेगा , VARCHAR
और TEXT
BINARY
. के लिए कॉलम , VARBINARY
और BLOB
क्रमश।
एक बार यह हो जाने के बाद, ऐसे स्तंभों में वर्ण सेट नहीं रहेगा। साथ ही, वे अब भविष्य के CONVERT TO CHARACTER SET
. से प्रभावित नहीं होंगे बयान।
MariaDB में कोलेशन और कैरेक्टर सेट की जाँच करना
आप जिस स्तर की जांच कर रहे हैं (सर्वर, डेटाबेस, टेबल, कॉलम, कनेक्शन, आदि) के आधार पर, मारियाडीबी में संयोजन और चरित्र सेट की जांच करने के कई तरीके हैं। उदाहरण के लिए मारियाडीबी में कोलेशन दिखाएँ देखें।