มาทำความเข้าใจความแตกต่างระหว่าง MySQL และ Standard SQL MySQL ทำงานแตกต่างในหลายกรณี:
Privileges (สิทธิ์การเข้าถึง)
มีความแตกต่างมากระหว่าง MySQL และ standard SQL เกี่ยวกับ privileges ใน MySQL privileges สำหรับตารางจะไม่ถูก revoke อัตโนมัติเมื่อลบตาราง ต้องใช้คำสั่ง REVOKE อย่างชัดเจนเพื่อเพิกถอน privileges
Foreign Key Constraints
การ implement foreign key constraints ของ MySQL แตกต่างจาก SQL standard หากมีหลายแถวใน parent table ที่มี referenced key value เดียวกัน InnoDB จะทำ foreign key check เหมือนว่า parent rows อื่นๆ ที่มี key value เดียวกันไม่ได้มีอยู่
ตัวอย่าง: หากกำหนด constraint แบบ RESTRICT และมี child row ที่มีหลาย parent rows InnoDB จะไม่อนุญาตให้ลบ parent rows
ใน SQL statement ที่ใช้ insert, delete, หรือ update หลายแถว foreign key constraints (เช่น unique constraints) จะถูกตรวจสอบทีละแถว เมื่อทำ foreign key checks InnoDB จะตั้ง shared row-level locks บน child หรือ parent records ที่ต้องตรวจสอบ
MySQL กำหนดให้ referenced columns ต้องมี index เพื่อ performance แต่ MySQL ไม่บังคับให้ referenced columns ต้องเป็น UNIQUE หรือ NOT NULL
Comments (ความคิดเห็น)
Standard SQL ใช้ syntax C แบบ /* this is a comment */ MySQL รองรับ syntax นี้ด้วย Standard SQL ใช้ '--' เป็น start-comment sequence ส่วน MySQL ใช้ '#' เป็น start comment character