Bir tablonun sütun adları nasıl gösterilir?


17

Durum basit: Yalnızca bir SQL sorgu arabirimine sahip olduğunuz ve sorgularla veritabanı yapısını bilmek istediğiniz bir MySQL veritabanınız var. show tables;Komut içeren tabloları listeleyebilirsiniz , ancak tek tek sütun adlarını nasıl görüyorsunuz?

( SELECTifade, Empty sethiçbir veri bulunmadığını gösterir ve bu nedenle KULLANILAMAZ.)


Unutmayın, kabul edilen çözüm desckomutla ilgili en alttaki çözümdür . Meraklı, en kısa ama en az oyu var. Benim için de en iyisi bu.
mico

2
basit bir SQL sorgusu istediniz. Cevabınız SQL değil, bu nedenle düşük oy sayısını açıklayabilir. Muhtemelen sorgunuzun başlığını şu şekilde değiştirmeniz gerekir: "Bir tablonun sütun adları nasıl gösterilir"
Lennart

İyi fikir, şimdi cevabım soruya daha iyi uyuyor.
mico

Yanıtlar:


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

2
Bu arada bu sorguyu da yararlı buldum: show create table <table_name><table_name> yerine tablo adını düz metne koydunuz. Bu aynı zamanda türleri verirken, bir liste amacı için çok uygundur.
mico

@Mico tarafından söylendiği gibi: "show create table tbl_name \ G" sizin çözümünüz olabilir. Bkz. Dev.mysql.com/doc/refman/5.7/tr/show-create-table.html "\ G" bölümü yalnızca çıktıyı biçimlendirmek için burada. Saygılarımızla.
tdaget


6

Geçerli veritabanındaki bir tabloda sütunları listelediğinizden emin olmak için, DATABASE () veya SCHEMA () işlevini kullanın . Geçerli bir veritabanında değilseniz NULL döndürür. Bu sorgu, bir tablodaki sütunları, sütunların tanımlandığı sırayla gösterir:

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

3

Eminim tablo ile ne anlama geldiğini anlamak değilim başlıkları , ancak gelen tablolar ve onların sütunları hakkında bilgilerin çoğunu alabilirsiniz INFORMATION_SCHEMA


3

tablo başlıklarını nasıl görüyorsunuz?

Masa yorumları mı demek istiyorsun ?

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 |
+------------+------------------+

Bu sütun adlarını istedim ve hızlı cevaplar sayesinde zaten birkaç yolum var. Bu yorum hakkında da teşekkür ederim, Jack.
mico

1
Sorunun peşinde olduğunuz sütunlar olduğunu daha açık hale getirmek için biraz yeniden gözden geçirmeyi düşünür müsünüz?
Jack diyor ki topanswers.xyz

2
SHOW COLUMNS FROM mydb.mytable;

burada mydb - gerekli tabloyu içeren veritabanıdır

mytable - gerekli tablo

Sütun bilgilerini döndürür (sütunların örnek adları, türü vb. İçin)


1
OP'nin problemini nasıl çözdüklerine dair açıklama yapmadan küçük kod parçacıkları önerilmez. Lütfen yanıtınıza daha fazla ayrıntı eklemeyi deneyin.
Erik

0

Tabloların ve sütunlarının ayrıntılarının listesini almak için bir araya gelmeniz information_schema.tablesve information_schema.columnsbirlikte olmanız gerekir .

information_schema.columnssadece tablolar hakkında değil, aynı zamanda görünümler hakkında da detay gösterir Bu sistem görünümünden yalnızca tablo ayrıntılarını filtrelemenin bir yolu yoktur.

Bu yüzden katılmanız gerekiyor.

Örnek sorgu:

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 
;
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.