Di MySQL, setiap jenis kolom memiliki "default implisit " nilai .
Jika kolom NOT NULL ditambahkan ke tabel , dan tidak ada DEFAULT eksplisit yang ditentukan, nilai default implisit digunakan untuk mengisi data kolom baru. Aturan serupa berlaku saat nilai DEFAULT ditentukan.
Dengan demikian, DDL asli menghasilkan hasil yang sama seperti:
-- After this, data will be the same, but schema has an EXPLICIT DEFAULT
ALTER TABLE t ADD c varchar(10) NOT NULL DEFAULT ''
-- Now we're back to the IMPLICIT DEFAULT (MySQL stores NULL internally)
ALTER TABLE t ALTER c DROP DEFAULT
Setelan mode "ketat" memengaruhi pernyataan DML yang mengandalkan nilai default, tetapi tidak memengaruhi penggunaan default implisit saat kolom ditambahkan.
Ini sebuah "bukti" sqlfiddle bahwa mode ketat tidak berlaku untuk pernyataan ALTER TABLE .. ADD.
Ini adalah fitur MySQL. Mesin lain, seperti SQL Server, memerlukan batasan DEFAULT (atau kolom NULL) eksplisit untuk perubahan skema tersebut.