Bagaimana cara menunjukkan nama kolom dari suatu tabel?


17

Kasingnya sederhana: Anda memiliki basis data MySQL di mana Anda hanya memiliki antarmuka kueri SQL dan Anda ingin mengetahui struktur basis data dengan kueri. Anda bisa daftar tabel dengan show tables;perintah, tetapi bagaimana Anda melihat nama-nama kolom individu?

( SELECTPernyataan menunjukkan Empty setjika tidak ada data dan TIDAK dapat digunakan.)


Harap dicatat, solusi yang diterima adalah yang paling bawah tentang descperintah. Penasaran, ini adalah yang terpendek, tetapi memiliki suara paling sedikit. Bagi saya, itu juga yang terbaik.
mico

2
Anda meminta kueri SQL sederhana. Jawaban Anda bukan SQL, sehingga dapat menjelaskan jumlah suara yang rendah. Anda mungkin harus mengubah judul kueri menjadi: "Cara menunjukkan nama kolom dari sebuah tabel"
Lennart

Ide bagus, sekarang jawaban saya cocok dengan pertanyaan.
mico

Jawaban:


36
select column_name from information_schema.columns where table_name='table'

2
Sementara itu saya menemukan permintaan ini juga berguna: di show create table <table_name>mana alih-alih <table_name> Anda meletakkan nama tabel dalam teks biasa. Ini juga memberikan jenis sementara yang Anda cocok untuk tujuan daftar sangat baik.
mico

Seperti yang dikatakan oleh @mico: "show create table tbl_name \ G" mungkin solusi Anda. Lihat dev.mysql.com/doc/refman/5.7/id/show-create-table.html Bagian "\ G" di sini hanya untuk memformat output. Salam.
tdaget

6

Solusi terbaik yang saya temukan sendiri adalah desc table_nameperintah. Informasi lebih lanjut ada di Daftar Tabel MySQL . Perintah ini memberikan deskripsi satu tabel database, yang persis apa yang saya coba cari tahu.


6

Untuk memastikan Anda mencantumkan kolom dalam tabel di database saat ini, gunakan fungsi DATABASE () atau SCHEMA () . Ini mengembalikan NULL jika Anda tidak dalam database saat ini. Kueri ini akan menampilkan kolom dalam tabel sesuai urutan kolom yang ditentukan:

SELECT column_name,column_type
FROM information_schema.columns
WHERE table_schema = DATABASE()
AND table_name='table'
ORDER BY ordinal_position;


3

bagaimana Anda melihat judul tabel individual?

Apakah maksud Anda komentar tabel ?

use stack;
create table t(v integer primary key) comment 'My Special Table';

show tables;
+-----------------+
| Tables_in_stack |
+-----------------+
| t               |
+-----------------+

select table_name, table_comment from information_schema.tables where table_name='t';
+------------+------------------+
| table_name | table_comment    |
+------------+------------------+
| t          | My Special Table |
+------------+------------------+

Saya ingin nama kolom itu dan sudah memiliki beberapa cara berkat jawaban cepat. Terima kasih tentang komentar ini juga, Jack.
mico

1
Apakah Anda keberatan menulis ulang pertanyaan Anda sedikit untuk membuatnya lebih jelas itu adalah kolom yang Anda cari?
Jack Douglas

2
SHOW COLUMNS FROM mydb.mytable;

di mana mydb - adalah database yang berisi tabel yang dibutuhkan

mytable - adalah tabel yang dibutuhkan

Ini mengembalikan info kolom (misalnya nama kolom, jenis, dll)


1
Potongan kode kecil tanpa penjelasan tentang bagaimana mereka memecahkan masalah OP tidak disarankan. Silakan coba tambahkan rincian lebih lanjut ke jawaban Anda.
Erik

0

Anda harus bergabung information_schema.tablesdan information_schema.columnsbersama - sama untuk mendapatkan daftar tabel dan detail kolomnya.

information_schema.columnstidak hanya menampilkan detail tentang tabel tetapi juga tampilan. Tidak ada cara untuk memfilter hanya detail tabel dari tampilan sistem ini.

Karenanya Anda harus bergabung.

Contoh permintaan:

select t.TABLE_SCHEMA, t.TABLE_NAME, c.COLUMN_NAME, c.COLUMN_TYPE, c.DATA_TYPE
from information_schema.tables t , information_schema.columns c where 2=2 
and t.table_schema=c.table_schema
and t.table_name=c.table_name
and t.table_type ='BASE TABLE' 
order by t.table_schema, t.table_name, c.column_name 
;
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.