Trong MySQL, mỗi loại cột có một " mặc định ngầm "giá trị .
Nếu cột KHÔNG ĐẦY ĐỦ thì được thêm vào bảng và không có DEFAULT rõ ràng nào được chỉ định, giá trị mặc định ngầm định được sử dụng để điền dữ liệu cột mới. Các quy tắc tương tự áp dụng khi giá trị DEFAULT được chỉ định.
Do đó, DDL ban đầu tạo ra các kết quả tương tự như:
-- 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
Cài đặt chế độ "nghiêm ngặt" ảnh hưởng đến các câu lệnh DML dựa trên các giá trị mặc định, nhưng không ảnh hưởng đến việc sử dụng mặc định ngầm khi cột được thêm vào.
Đây là một "bằng chứng" sqlfiddle chế độ nghiêm ngặt đó không áp dụng cho câu lệnh ALTER TABLE .. ADD.
Đây là một tính năng của MySQL. Các công cụ khác, như SQL Server, yêu cầu ràng buộc DEFAULT (hoặc cột NULL) rõ ràng cho những thay đổi giản đồ như vậy.