समस्या:
आप MySQL में किसी तालिका में बाधाओं के डिफ़ॉल्ट नाम जानना चाहते हैं।
उदाहरण:
हमारे डेटाबेस में, हम दो टेबल बनाते हैं, country
और student
, निम्नलिखित बाधाओं के साथ:PRIMARY KEY
(तालिकाओं में कॉलम आईडी country
और student
), FOREIGN KEY
(स्तंभ country_id
तालिका में student
), DEFAULT
(तालिका में कॉलम का नाम student
), UNIQUE
(स्तंभ name
तालिका में country
और कॉलम personal_number
तालिका में student
), और CHECK
(स्तंभ age
तालिका में student
)।
समाधान:
CREATE TABLE country ( id int NOT NULL primary key, name varchar(100) UNIQUE ); CREATE TABLE student ( id int NOT NULL primary key, name varchar(100) NOT NULL DEFAULT 'unknown', personal_number varchar(100) UNIQUE, age int CHECK(age>15), country_id int, FOREIGN KEY(country_id) REFERENCES country(id) );
आइए प्रदर्शित करें कि MySQL डिफ़ॉल्ट रूप से इन तालिकाओं की बाधाओं को कैसे नाम देता है। उन्हें देखने के लिए इस क्वेरी का उपयोग करें:
SELECT TABLE_NAME, CONSTRAINT_TYPE, CONSTRAINT_NAME FROM information_schema.table_constraints WHERE table_name='country' OR table_name='student';
ये रहा परिणाम:
TABLE_NAME | CONSTRAINT_TYPE | CONSTRAINT_NAME |
---|---|---|
देश | प्राथमिक कुंजी | प्राथमिक |
देश | अद्वितीय | नाम |
विद्यार्थी | प्राथमिक कुंजी | प्राथमिक |
विद्यार्थी | अद्वितीय | व्यक्तिगत_संख्या |
विद्यार्थी | विदेशी कुंजी | student_ibfk_1 |
विद्यार्थी | जांच करें | student_chk_1 |
चर्चा:
जब हम अपनी तालिकाएँ बनाते हैं, तो हम कुछ स्तंभों के लिए बाधाएँ निर्धारित करते हैं। हालाँकि, हम इन बाधाओं के लिए नाम निर्दिष्ट नहीं करते हैं, इसलिए उन्हें MySQL में डिफ़ॉल्ट रूप से नाम दिया गया है। MySQL में, डिफ़ॉल्ट बाधा प्रकार हैं PRIMARY KEY
, FOREIGN KEY
, UNIQUE
, और CHECK
. बाधाओं के लिए डिफ़ॉल्ट नाम कैसे उत्पन्न होते हैं?
PRIMARY KEY constraint
बस नाम दिया गया है PRIMARY
, क्योंकि तालिका में हमेशा एक प्राथमिक कुंजी होती है। PRIMARY
. नाम की दो बाधाएं हैं उपरोक्त परिणाम में, लेकिन वे तालिकाएँ जिनसे वे संबंधित हैं, भिन्न हैं।
FOREIGN KEY
के लिए , नाम सम्मेलन का अनुसरण करता है:तालिका का नाम, एक अंडरस्कोर ('_
'), 'ibfk
', एक और अंडरस्कोर ('_
'), और एक संख्या। हमारे उदाहरण के लिए, यह student_ibfk_1
है तालिका में student
।
CHECK
. के लिए डिफॉल्ट नाम बाधा विदेशी कुंजी के समान है। यह तालिका के नाम से शुरू होता है, एक अंडरस्कोर ('_
'), 'chk
', एक और अंडरस्कोर ('
_
'), और एक संख्या। हमारे उदाहरण के लिए, यह student_chk_1
है तालिका में student
।
UNIQUE
. का डिफ़ॉल्ट नाम बाधा स्तंभ का नाम ही है। हमारे उदाहरण के लिए, यह personal_number
. है तालिका में student
. जब UNIQUE
. के साथ कई कॉलम हों बाधा, यह बाधा की परिभाषा में पहले स्तंभ के नाम का उपयोग करता है।