mysql memeriksa pemeriksaan tabel


106

Bagaimana cara melihat susunan yang dimiliki tabel? IE Saya ingin melihat:

+-----------------------------+
|  table  |     collation     |
|-----------------------------|
| t_name  |  latin_general_ci |
+-----------------------------+

Jawaban:



78

Jawaban di atas bagus, tetapi tidak benar-benar memberikan contoh yang menyelamatkan pengguna dari keharusan mencari sintaks:

show table status like 'test';

Dimana testnama tabelnya.

(Dikoreksi sesuai komentar di bawah.)


14

Anda juga bisa membuat kueri INFORMATION_SCHEMA.TABLESdan mendapatkan pemeriksaan untuk tabel tertentu:

SELECT TABLE_SCHEMA
    , TABLE_NAME
    , TABLE_COLLATION 
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 't_name';

yang memberikan hasil yang jauh lebih mudah dibaca dibandingkan dengan SHOW TABLE STATUSyang berisi banyak informasi yang tidak relevan.


Perhatikan bahwa pemeriksaan juga bisa diterapkan ke kolom (yang mungkin memiliki pemeriksaan berbeda dari tabel itu sendiri). Untuk mengambil pemeriksaan kolom untuk tabel tertentu, Anda dapat menanyakan INFORMATION_SCHEMA.COLUMNS:

SELECT TABLE_SCHEMA 
    , TABLE_NAME 
    , COLUMN_NAME 
    , COLLATION_NAME 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 't_name';

2
Bekerja untuk mariaDB 10.4
Tarator

8

Gunakan kueri ini:

SHOW CREATE TABLE tablename

Anda akan mendapatkan semua informasi yang berhubungan dengan tabel.


3
SHOW CREATE TABLE tidak akan menampilkan pemeriksaan. Anda harus menggunakan SHOW TABLE STATUS seperti dijelaskan di atas.
KateYoak

1
Bekerja untuk saya di mysql 5.5.52. ...) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=latin1Dugaan saya itu mungkin tidak menampilkan pemeriksaan jika diatur ke default untuk database di versi mysql / mariadb.
DeveloperChris

1
@DeveloperChris Apa yang Anda tunjukkan adalah charset, bukan collation. Dua meja mungkin memiliki charset yang sama utf8, tapi collations yang berbeda utf8_general_civs utf8_unicode_ci. Ini dapat menyebabkan pesan kesalahan seperti HY000, 1267, Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '='... yang merupakan pesan yang membawa saya ke halaman ini.
Dewi Morgan

0

Perintah ini menjelaskan

mysql> use <database name> 

mysql> show table status like '<table name>';

+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+-------------+---------------------+------------+--------------------+----------+----------------+---------+
| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time         | Check_time | Collation          | Checksum | Create_options | Comment |
+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+-------------+---------------------+------------+--------------------+----------+----------------+---------+
| test | InnoDB |      11 | Dynamic    |   52 |            315 |       16384 |               0 |            0 |         0 |             59 | NULL        | 2020-04-16 23:00:00 | NULL       | utf8mb4_unicode_ci |     NULL |                |         |
+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+-------------+---------------------+------------+--------------------+----------+----------------+---------+
1 row in set (0.01 sec)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.