Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ตรวจสอบ Charset ของฐานข้อมูลและตารางใน MySQL

บทนำ

การรู้ Charset และ Collation ของฐานข้อมูล/ตาราง สำคัญสำหรับการจัดการภาษา, การเรียงลำดับ, และการเก็บข้อมูล Unicode (Emoji, ภาษาไทย, ฯลฯ)

ตรวจสอบ Charset ของฐานข้อมูล

mysql> SHOW CREATE DATABASE web;

ผลลัพธ์

+----------+-----------------------------------------------------------------------------------------+
| Database | Create Database                                                                         |
+----------+-----------------------------------------------------------------------------------------+
| web      | CREATE DATABASE `web` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */    |
+----------+-----------------------------------------------------------------------------------------+
1 row in set (0.03 sec)

ฐานข้อมูล web ใช้ utf8 กับ utf8_unicode_ci

ตรวจสอบ Charset ของตาราง

mysql> SHOW CREATE TABLE web.DemoTable;

ผลลัพธ์

+--------------+----------------------------------------------------------------------------------------------------------------------------------+
| Table        | Create Table                                                                                                                   |
+--------------+----------------------------------------------------------------------------------------------------------------------------------+
| DemoTable    | CREATE TABLE `DemoTable` (`Value` int(11) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci            |
+--------------+----------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

คำสั่งสรุป Charset ทุกตารางในฐานข้อมูล

SELECT TABLE_NAME, TABLE_COLLATION
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'yourDatabaseName';

Charset และ Collation ยอดนิยม

CharsetCollationคำอธิบาย
utf8mb4utf8mb4_unicode_ciรองรับ Unicode เต็มรูปแบบ (Emoji, ภาษาทุกภาษา) แนะนำ
utf8utf8_unicode_ciรองรับ Unicode บางส่วน (ไม่รองรับ Emoji 4 bytes)
latin1latin1_swedish_ciDefault เก่า ไม่รองรับภาษาไทย/Unicode

เปลี่ยน Charset ของตาราง

ALTER TABLE DemoTable CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

เปลี่ยน Charset ของฐานข้อมูล

ALTER DATABASE web CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;