MySQL - Character Set: A Beginner's Guide

Здравствуйте, будущие маги баз данных! Сегодня мы отправимся в магическое путешествие в мир наборов символов MySQL. Не волнуйтесь, если вы никогда раньше не писали ни строчки кода – я буду вашим дружелюбным проводником, и мы вместе исследуем эту тему шаг за шагом. Так что возьмите свою виртуальную палочку (или мышь), и погружаемся в мир!

MySQL - Character Set

Набор символов MySQL

Что такое набор символов?

Представьте, что вы пишете письмо другу. Алфавит, который вы используете для написания этого письма, resembles a character set in MySQL. Это коллекция символов, которые MySQL использует для хранения и отображения текстовых данных.

В早期的 вычислительной техники у нас было только базовое английское письмо и некоторые знаки препинания. Но по мере роста Интернета нам потребовались способы представления символов из разных языков и систем письма. Вот где наборы символов become handy!

Why Are Character Sets Important?

Наборы символов важны, потому что они обеспечивают:

  1. Your data is stored correctly.
  2. Your data is displayed correctly.
  3. You can work with text in different languages.

Подумайте об этом так: если бы вы попытались написать письмо на китайском языке, используя только английский алфавит, это не сработало бы очень хорошо, правда? То же правило применяется к базам данных.

Default Character Set in MySQL

When you install MySQL, it comes with a default character set. Typically, this is utf8mb4, which is a versatile character set that can handle most languages and even emojis! ?

Here's how you can check the default character set:

SHOW VARIABLES LIKE 'character_set_database';

This command might return something like:

+--------------------------+--------+
| Variable_name            | Value  |
+--------------------------+--------+
| character_set_database   | utf8mb4|
+--------------------------+--------+

Don't worry if you see a different value – we'll learn how to change it soon!

The MySQL Show Character-Set

Теперь, когда мы понимаем, что такое наборы символов, давайте узнаем, как увидеть, какие наборы символов доступны в нашей установке MySQL.

Просмотр доступных наборов символов

Чтобы увидеть все доступные наборы символов, мы используем команду SHOW CHARACTER SET:

SHOW CHARACTER SET;

Это отобразит таблицу с колонками, такими как:

+----------+--------------------+---------------------+--------+
| Charset  | Description        | Default collation   | Maxlen |
+----------+--------------------+---------------------+--------+
| big5     | Big5 Traditional...| big5_chinese_ci     |      2 |
| dec8     | DEC West European  | dec8_swedish_ci     |      1 |
| cp850    | DOS West European  | cp850_general_ci    |      1 |
| hp8      | HP West European   | hp8_english_ci      |      1 |
| koi8r    | KOI8-R Relcom R... | koi8r_general_ci    |      1 |
| latin1   | cp1252 West Eur... | latin1_swedish_ci   |      1 |
| latin2   | ISO 8859-2 Cent... | latin2_general_ci   |      1 |
...

Не пугайтесь всех этих вариантов! Для большинства целей utf8mb4 - это отличной выбор.

Понимание вывода

Давайте разберем, что означает каждая колонка:

  • Charset: Название набора символов.
  • Description: Краткое описание набора символов.
  • Default collation: Умолчальный способ сравнения и сортировки строк в этом наборе символов.
  • Maxlen: Максимальное количество байтов, используемых для хранения одного символа.

The MySQL Set Character-set

Теперь, когда мы знаем, как viewed character sets, давайте узнаем, как их устанавливать!

Установка набора символов для базы данных

При создании новой базы данных вы можете указать ее набор символов:

CREATE DATABASE my_awesome_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

Это создаст базу данных с именем my_awesome_db, используя набор символов utf8mb4 и collation utf8mb4_unicode_ci.

Установка набора символов для таблицы

При создании таблицы вы можете установить набор символов:

CREATE TABLE my_cool_table (
id INT PRIMARY KEY,
name VARCHAR(50)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Эта команда создаст таблицу с указанным набором символов и collation.

Установка набора символов для столбца

Вы даже можете установить набор символов для отдельных столбцов:

CREATE TABLE multilingual_names (
id INT PRIMARY KEY,
name_english VARCHAR(50) CHARACTER SET latin1,
name_chinese VARCHAR(50) CHARACTER SET utf8mb4
);

Эта таблица может эффективно хранить имена как на английском, так и на китайском языках.

Изменение набора символов

Если вам нужно изменить набор символов существующей базы данных или таблицы, вы можете использовать команду ALTER:

ALTER DATABASE my_awesome_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

ALTER TABLE my_cool_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Будьте осторожны при изменении наборов символов для существующих данных, так как это может привести к потере данных, если не сделать это правильно!

Практические советы и хитрости

  1. Always use UTF-8: Unless you have a specific reason not to, use utf8mb4. It's versatile and future-proof.

  2. Be consistent: Try to use the same character set across your database, tables, and columns to avoid confusion.

  3. Check your connections: Ensure your application's connection to MySQL is also set to use the correct character set.

  4. Test, test, test: Always test your character set configurations with sample data to ensure everything works as expected.

Заключение

Поздравляю! Вы только что сделали свои первые шаги в чудесный мир наборов символов MySQL. Запомните, выбор правильного набора символов resembles choosing the right tool for a job – it makes everything else easier.

As you continue your MySQL journey, you'll encounter more complex scenarios where character sets play a crucial role. But for now, armed with this knowledge, you're well-prepared to start creating databases that can speak many languages!

Keep practicing, stay curious, and happy coding! ??

Method Description
SHOW CHARACTER SET Displays all available character sets
CREATE DATABASE ... CHARACTER SET ... Creates a database with a specific character set
CREATE TABLE ... CHARACTER SET ... Creates a table with a specific character set
ALTER DATABASE ... CHARACTER SET ... Changes the character set of an existing database
ALTER TABLE ... CONVERT TO CHARACTER SET ... Changes the character set of an existing table
SHOW VARIABLES LIKE 'character_set_%' Shows current character set settings

Credits: Image by storyset