Setiap (tipe string karakter) kolom memiliki sendiri kumpulan karakter dan metadata susunan.
Jika, saat kolom tipe data 's ditentukan (yaitu ketika terakhir kali dibuat atau diubah), tidak ada set karakter/penyusunan yang diberikan secara eksplisit, maka set karakter dan susunan default tabel akan digunakan untuk kolom.
Jika, saat tabel ditentukan, tidak ada kumpulan karakter/kolasi default yang diberikan secara eksplisit, maka kumpulan karakter default dan koleksi database akan digunakan untuk default tabel.
Perintah yang Anda kutip dalam pertanyaan Anda hanya mengubah set/kolasi karakter default untuk database dan tabel masing-masing. Dengan kata lain, mereka hanya akan memengaruhi tabel dan kolom yang dibuat setelahnya—mereka tidak mempengaruhi kolom (atau data) yang ada.
Untuk memperbarui data yang ada, Anda harus terlebih dahulu membaca Mengubah Kumpulan Karakter
bagian halaman manual pada ALTER TABLE
:
Untuk mengubah hanya default set karakter untuk tabel, gunakan pernyataan ini:
ALTER TABLE tbl_name DEFAULT CHARACTER SET charset_name;
Kata DEFAULT
adalah opsional. Kumpulan karakter default adalah kumpulan karakter yang digunakan jika Anda tidak menentukan kumpulan karakter untuk kolom yang Anda tambahkan ke tabel nanti (misalnya, dengan ALTER TABLE ... ADD column
).
Saat foreign_key_checks
variabel sistem diaktifkan, yang merupakan pengaturan default, konversi kumpulan karakter tidak diizinkan pada tabel yang menyertakan kolom string karakter yang digunakan dalam batasan kunci asing. Solusinya adalah menonaktifkan foreign_key_checks
sebelum melakukan konversi set karakter. Anda harus melakukan konversi pada kedua tabel yang terlibat dalam batasan kunci asing sebelum mengaktifkan kembali foreign_key_checks
. Jika Anda mengaktifkan kembali foreign_key_checks
setelah mengonversi hanya satu tabel, ON DELETE CASCADE
atau ON UPDATE CASCADE
operasi dapat merusak data dalam tabel referensi karena konversi implisit yang terjadi selama operasi ini (Bug #45290, Bug #74816).