2010-01-25 5 views
14

mysql 5.x में क्या अंतर है कि अगर मैं कुछ इस तरह करते हैं:स्पष्ट डिफ़ॉल्ट वर्ण सेट के साथ mysql तालिका बनाना, अगर मैं नहीं करता?

CREATE TABLE aTable (
    id      BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    aNumber   bigint(20) DEFAULT NULL 
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8; 
इस के साथ

:

CREATE TABLE aTable (
    id      BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    aNumber   bigint(20) DEFAULT NULL 
) ENGINE=InnoDB CHARACTER SET=utf8; 

सूचना मैं चरित्र पहले एक में डिफ़ॉल्ट रूप से सेट निर्दिष्ट नहीं कर रहा हूँ। मुझे mysql दस्तावेज़ों में कुछ भी नहीं मिला।

+4

कृपया ध्यान दें कि MySQL का 'utf8' वर्ण सेट टूटा हुआ है। [यदि आप पूर्ण यूनिकोड समर्थन चाहते हैं तो MySQL 'utf8mb4' का उपयोग करें] (https://stijndewitt.wordpress.com/2015/06/15/use-mysql-utf8mb4-if-you-want-full-unicode-support/)। –

उत्तर

19

शब्द DEFAULT शब्द वैकल्पिक है - इसलिए दोनों समकक्ष हैं, यानी वे तालिका के लिए डिफ़ॉल्ट वर्ण सेट सेट करते हैं।

CREATE TABLE के लिए MySQL दस्तावेज़ देखें। यहां प्रासंगिक बिट है:

table_option: 
    ENGINE [=] engine_name 
    ... other options ... 
    | [DEFAULT] CHARACTER SET [=] charset_name 
    ... more options ... 

आप SHOW CREATE TABLE कमांड का उपयोग करके इसकी पुष्टि कर सकते हैं।

9

MySQL: सर्वर, डेटाबेस, तालिका, और कॉलम में डिफ़ॉल्ट सेटिंग्स के 4 स्तर हैं। निचले स्तर के डिफ़ॉल्ट का उपयोग करके, आप उच्च लीवर डिफ़ॉल्ट को ओवरराइड कर सकते हैं।

यदि आप एक तालिका को बदलते हैं जिसमें डिफ़ॉल्ट वर्णसेट डेटाबेस सेट के अलावा किसी अन्य चीज़ पर सेट होता है, तो तालिका डिफ़ॉल्ट डिफ़ॉल्ट डीबी डिफ़ॉल्ट को ओवरराइड कर देगा।

+0

चार स्तरों के स्पष्टीकरण के लिए उपरोक्त। मेरे पास डेटाबेस और कॉलम सेट था, लेकिन टेबल नहीं। धन्यवाद! – HoldOffHunger