mysql memeriksa pemeriksaan tabel

106

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

+-----------------------------+
|  table  |     collation     |
|-----------------------------|
| t_name  |  latin_general_ci |
+-----------------------------+
Scott
sumber

Jawaban:

159

SHOW TABLE STATUS memperlihatkan informasi tentang tabel, termasuk pemeriksaan.

Sebagai contoh SHOW TABLE STATUS where name like 'TABLE_NAME'

Lekensteyn
sumber
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.)

Moustafa Elqabbany
sumber
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';
Giorgos Myrianthous
sumber
2
Bekerja untuk mariaDB 10.4
Tarator
8

Gunakan kueri ini:

SHOW CREATE TABLE tablename

Anda akan mendapatkan semua informasi yang berhubungan dengan tabel.

Rizwan Siddiquee
sumber
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)
jobin
sumber