Mọi (kiểu chuỗi ký tự) cột có riêng bộ ký tự và siêu dữ liệu đối chiếu.
Nếu, khi cột Kiểu dữ liệu của đã được chỉ định (tức là khi nó được tạo hoặc thay đổi lần cuối), không có bộ ký tự / đối chiếu nào được đưa ra rõ ràng, khi đó bộ ký tự và đối chiếu mặc định của bảng sẽ được sử dụng cho cột.
Nếu, khi bảng đã được chỉ định, không có bộ ký tự / đối chiếu mặc định nào được đưa ra rõ ràng, khi đó bộ ký tự và đối chiếu mặc định của cơ sở dữ liệu sẽ được sử dụng cho mặc định của bảng.
Các lệnh mà bạn trích dẫn trong câu hỏi của mình chỉ thay đổi các bộ ký tự / đối chiếu mặc định như vậy cho cơ sở dữ liệu và bảng tương ứng. Nói cách khác, chúng sẽ chỉ ảnh hưởng đến các bảng và cột được tạo sau đó — chúng sẽ không ảnh hưởng đến các cột (hoặc dữ liệu) hiện có.
Để cập nhật dữ liệu hiện có, trước tiên bạn nên đọc Thay đổi Bộ ký tự
phần của trang thủ công trên ALTER TABLE
:
Để chỉ thay đổi mặc định bộ ký tự cho một bảng, sử dụng câu lệnh sau:
ALTER TABLE tbl_name DEFAULT CHARACTER SET charset_name;
Từ DEFAULT
Là tùy chọn. Bộ ký tự mặc định là bộ ký tự được sử dụng nếu bạn không chỉ định bộ ký tự cho các cột mà bạn thêm vào bảng sau này (ví dụ:với ALTER TABLE ... ADD column
).
Khi foreign_key_checks
biến hệ thống được bật, đây là cài đặt mặc định, không cho phép chuyển đổi bộ ký tự trên các bảng có cột chuỗi ký tự được sử dụng trong ràng buộc khóa ngoại. Cách giải quyết là tắt foreign_key_checks
trước khi thực hiện chuyển đổi bộ ký tự. Bạn phải thực hiện chuyển đổi trên cả hai bảng có liên quan đến ràng buộc khóa ngoại trước khi bật lại foreign_key_checks
. Nếu bạn bật lại foreign_key_checks
sau khi chuyển đổi chỉ một trong các bảng, một ON DELETE CASCADE
hoặc ON UPDATE CASCADE
hoạt động có thể làm hỏng dữ liệu trong bảng tham chiếu do chuyển đổi ngầm xảy ra trong các hoạt động này (Lỗi # 45290, Lỗi # 74816).