Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara Menemukan Collation di MySQL

Di MySQL, collation dapat diterapkan di banyak level. Ini dapat diterapkan di tingkat server, tingkat koneksi, tingkat database, tingkat tabel, dan bahkan di tingkat kolom. Anda juga dapat menentukan susunan dalam kueri Anda yang akan menimpa susunan apa pun yang telah diterapkan di tingkat database, tabel, atau kolom.

Berikut cara mengetahui susunan apa yang diterapkan di setiap level ini.

Pintasan untuk Koneksi, Server, dan Pengumpulan Basis Data

Cara tercepat untuk mendapatkan informasi pemeriksaan untuk koneksi, server, dan database adalah dengan menggunakan pernyataan berikut. Pernyataan ini mengembalikan semua variabel sistem yang dimulai dengan collation :

TAMPILKAN VARIABEL SEPERTI 'collation%';

Ini mengembalikan pemeriksaan untuk server, koneksi, dan database. Seperti ini:

+----------------------+--------------------+| Nama_variabel | Nilai |+----------------------+--------------------+| collation_connection | utf8mb4_0900_ai_ci || collation_database | utf8_general_ci || collation_server | utf8mb4_0900_ai_ci |+----------------------+--------------------+

Anda juga dapat mengembalikan masing-masing variabel sistem ini secara terpisah jika diperlukan. Lihat petunjuk di bawah tentang cara melakukannya.

Pengumpulan Tingkat Server

Menjalankan perintah berikut akan mengembalikan susunan default server.

SELECT @@collation_server;

Contoh hasil:

+--------------------+| @@collation_server |+--------------------+| utf8mb4_0900_ai_ci |+--------------------+

Pengumpulan Tingkat Koneksi

Saat Anda menjalankan kueri terhadap database MySQL, MySQL menggunakan sekelompok variabel sistem untuk menentukan kumpulan karakter dan susunan mana yang akan digunakan setiap kali kueri dijalankan. Jika klien menggunakan kumpulan karakter yang berbeda ke server, maka MySQL dapat menerjemahkannya ke dalam kumpulan karakter dan susunan yang sesuai.

Saat mengirim hasil kueri kembali ke klien, MySQL dapat menerjemahkan hasil ini kembali ke kumpulan karakter yang berbeda sama sekali jika diperlukan. MySQL menggunakan variabel sistem untuk menentukan set karakter dan susunan mana yang akan digunakan pada setiap langkah ini.

Berikut ini adalah susunan koneksi (Anda dapat menggunakan sintaks yang sama untuk variabel sistem mana pun):

PILIH @@collation_connection;

Contoh hasil:

+------------------------+| @@collation_connection |+------------------------+| utf8mb4_0900_ai_ci |+------------------------+

Anda juga dapat mengembalikan semua variabel sistem set karakter dengan kueri berikut:

TAMPILKAN VARIABEL SEPERTI 'character_set%';

Contoh hasil:

+--------------------------+------------------- ---------------+| Nama_variabel | Nilai |+--------------------------+-------------------- --------------+| karakter_set_klien | utf8mb4 || karakter_set_koneksi | utf8mb4 || character_set_database | utf8 || character_set_filesystem | biner || karakter_set_hasil | utf8mb4 || karakter_set_server | utf8mb4 || karakter_set_sistem | utf8 || character_sets_dir | /usr/local/mysql/share/charsets/ |+--------------------------+---------- ------------------------+

Pengumpulan Tingkat Basis Data

Pernyataan berikut dapat digunakan untuk memeriksa susunan database yang diberikan:

GUNAKAN Musik;PILIH @@character_set_database, @@collation_database;

Contoh hasil:

+--------------------------+------------------- ---+| @@character_set_database | @@collation_database |+--------------------------+------------------ ----+| utf8 | utf8_general_ci |+--------------------------+------------------- --+

Atau, Anda dapat menggunakan pernyataan berikut (yang menghilangkan kebutuhan untuk mengubah database default):

SELECT default_character_set_name, default_collation_nameFROM information_schema.schemata WHERE schema_name ='Music';

Contoh hasil:

+------------------------+------------------ -------+| DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME |+----------------------------+------------------ ------+| utf8 | utf8_general_ci |+----------------------------+------------------ ------+

Kolasi Tingkat Tabel

Menjalankan pernyataan berikut akan mengembalikan sejumlah besar kolom yang memberikan informasi tentang tabel yang cocok. Salah satu kolom ini disebut Collation , dan menyediakan susunan semua tabel yang cocok.

TAMPILKAN STATUS TABEL SEPERTI '%Artists%';

Tentu saja, Anda harus mengganti %Artists% dengan nama tabel Anda sendiri. Dan Anda dapat menghilangkan tanda persentase jika menurut Anda tidak diperlukan. Pernyataan ini juga menerima klausa lain, seperti FROM , WHERE , dan IN , jadi ini memberi Anda beberapa opsi saat membuat pernyataan.

Satu masalah dengan pernyataan sebelumnya adalah ia mengembalikan banyak kolom, dan Anda mungkin terpaksa menggulir ke samping untuk menemukan kolom susunan. Jika Anda hanya tertarik pada info susunan, Anda dapat menanyakan information_schema.tables . Anda juga dapat mengembalikan susunan untuk semua tabel dalam database yang diberikan jika diperlukan. Berikut cara melakukannya:

SELECT table_schema, table_name, table_collation FROM information_schema.tablesWHERE table_schema ='Musik';

Contoh hasil:

+-------------+------------+-----------------+ | TABLE_SCHEMA | TABEL_NAME | TABLE_COLLATION |+--------------+------------+-----------------+| Musik | Album | utf8_general_ci || Musik | Artis | utf8_general_ci || Musik | Genre | utf8_general_ci |+--------------+------------+-----------------+ 

Kolasi Tingkat Kolom

Menjalankan kueri berikut mengembalikan informasi tentang setiap kolom dalam tabel tertentu. Ini termasuk informasi pemeriksaan.

TAMPILKAN KOLOM LENGKAP DARI Artis;

Itu menghasilkan banyak kolom yang dikembalikan dengan segala macam informasi tentang kolom, termasuk susunannya.

Anda dapat mengurangi jumlah kolom yang dikembalikan dengan melakukan ini:

SELECT column_name, character_set_name, collation_name FROM information_schema.columns WHERE table_name ='Artists';

Contoh hasil:

+-------------+--------------------+----------- ------+| COLUMN_NAME | CHARACTER_SET_NAME | COLLATION_NAME |+-------------+------+------------ -----+| Id Artis | NULL | NULL || Nama Artis | utf8 | utf8_spanish_ci || AktifDari | NULL | NULL |+-------------+--------------------+------------ -----+

Anda juga dapat menjalankan SHOW CREATE TABLE pernyataan untuk menampilkan definisi tabel (termasuk kolomnya).

TAMPILKAN BUAT TABEL Artis;

Ini mengembalikan sesuatu seperti ini:

+---------+--------------------------------+| Tabel | Buat Tabel |+---------+--------------------------------+| Artis | CREATE TABLE `Artists` ( `ArtistId` int(11) NOT NULL AUTO_INCREMENT, `ArtistName` varchar(255) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL, `ActiveFrom` datetime NOT NULL, PRIMARY KEY (`)Artist KEY (`) AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 |+---------+------------------------------- -+

Namun, kumpulan karakter dan informasi susunan hanya dikembalikan jika berbeda dari susunan default tabel. Dalam contoh ini, saya secara eksplisit mengatur ArtistName kolom ke susunan yang berbeda hanya untuk tujuan demonstrasi (jika tidak, info susunan tidak akan dikembalikan).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya bisa memanipulasi relevansi pencarian teks lengkap MySQL untuk membuat satu bidang lebih 'berharga' daripada yang lain?

  2. PDO menyiapkan pernyataan fetch() mengembalikan hasil ganda

  3. Koneksi PHP gagal:SQLSTATE[HY000] [2002] Koneksi ditolak

  4. Bagaimana saya bisa tahu kapan tabel MySQL terakhir diperbarui?

  5. Bagaimana cara saya membuat MySQL menggunakan INDEX untuk permintaan tampilan?