आइए MySQL और स्टैंडर्ड SQL के बीच के अंतर को समझते हैं। MySQL कुछ मामलों में कई ऑपरेशन्स अलग तरह से करता है:
विशेषाधिकार (Privileges)
उपयोगकर्ता को दिए गए विशेषाधिकारों के संबंध में MySQL और स्टैंडर्ड SQL के बीच कई अंतर हैं। MySQL में, जब कोई टेबल डिलीट की जाती है तो उसके लिए विशेषाधिकार स्वचालित रूप से रद्द नहीं होते। टेबल के विशेषाधिकारों को रद्द करने के लिए REVOKE स्टेटमेंट को स्पष्ट रूप से जारी करना पड़ता है।
विदेशी कुंजी कंस्ट्रेंट्स
विदेशी कुंजी कंस्ट्रेंट्स का MySQL कार्यान्वयन SQL स्टैंडर्ड से अलग है। यदि पैरेंट टेबल में कई रो हैं जिनमें समान रेफरेंस्ड की वैल्यू है, तो InnoDB इंजन विदेशी कुंजी जांच इस तरह करता है जैसे अन्य पैरेंट रो जिनमें समान की वैल्यू है, मौजूद नहीं हैं।
उदाहरण के लिए, यदि RESTRICT प्रकार का कंस्ट्रेंट परिभाषित है, और कई पैरेंट रो के साथ एक चाइल्ड रो है, तो InnoDB पैरेंट रो को डिलीट करने की अनुमति नहीं देगा।
एक SQL स्टेटमेंट में जो कई रो पर इन्सर्ट, डिलीट, या अपडेट का उपयोग करता है, विदेशी कुंजी कंस्ट्रेंट्स (जैसे यूनिक कंस्ट्रेंट्स) की जांच रो-दर-रो की जाती है। जब विदेशी कुंजी जांच की जाती है, तो InnoDB चाइल्ड या पैरेंट रिकॉर्ड्स पर शेयर्ड रो-लेवल लॉक सेट करता है जिनकी जांच की जानी है।
MySQL यह अनिवार्य करता है कि परफॉरमेंस कारणों से रेफरेंस्ड कॉलम इंडेक्स्ड होने चाहिए। लेकिन MySQL इस बात को लागू नहीं करता कि रेफरेंस्ड कॉलम UNIQUE होने चाहिए या NOT NULL घोषित होने चाहिए।
कमेंट्स
स्टैंडर्ड SQL कमेंट दिखाने के लिए C सिंटैक्स /* यह एक कमेंट है */ का उपयोग करता है। MySQL सर्वर भी इस सिंटैक्स का समर्थन करता है। स्टैंडर्ड SQL '--' को स्टार्ट-कमेंट सीक्वेंस के रूप में उपयोग करता है। MySQL सर्वर '#' को स्टार्ट कमेंट कैरेक्टर के रूप में उपयोग करता है।