Як показати назви стовпців таблиці?


17

Випадок простий: у вас база даних MySQL, де у вас є лише інтерфейс запитів SQL, і ви хочете знати структуру бази даних із запитами. Ви можете перелічити таблиці з show tables;командою, але як ви бачите назви окремих стовпців?

( SELECTвислів показує, Empty setякщо даних немає, і таким чином НЕ можна використовувати.)


Зверніть увагу, прийняте рішення - це нижнє рішення про descкоманду. Цікаво, що він найкоротший, але має найменше голосів. Для мене теж найкращий.
mico

2
ви попросили простий запит SQL. Ваша відповідь не SQL, що може пояснити низьку кількість голосів. Напевно, ви повинні змінити назву вашого запиту на "Як показати назви стовпців таблиці"
Lennart

Гарна ідея, тепер моя відповідь краще відповідає питанню.
mico

Відповіді:


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

2
Тим часом я дізнався, що цей запит також корисний: show create table <table_name>де замість <table_name> ви розміщуєте назву таблиці простим текстом. Це також дає типи, а ваш дуже добре підходить для цілей переліку.
mico

Як сказав @mico: "показати створення таблиці tbl_name \ G" може бути вашим рішенням. Див. Dev.mysql.com/doc/refman/5.7/uk/show-create-table.html Частина "\ G" тут доступна лише для форматування виводу. З повагою
tdaget

6

Найкращим рішенням, яке я сам з’ясував, була desc table_nameкоманда. Більше інформації можна знайти у списку таблиць MySQL . Ця команда дає опис однієї таблиці баз даних, саме це я і намагався з’ясувати.


6

Щоб переконатися, що ви перераховуєте стовпці таблиці в поточній базі даних, використовуйте функцію DATABASE () або SCHEMA () . Він повертає NULL, якщо ви не знаходитесь у поточній базі даних. Цей запит відображатиме стовпці таблиці в порядку, у якому були визначені стовпці:

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

3

Я не впевнений, що я розумію, що ви маєте на увазі під заголовками таблиць , але ви можете отримати більшість інформації про таблиці та їх стовпці з INFORMATION_SCHEMA


3

як ви бачите окремі заголовки таблиць?

Ви маєте на увазі коментарі до таблиці ?

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

Мені хотілося, щоб ці назви стовпців мали вже пару способів завдяки швидким відповідям. Дякую і про цю коментар, Джек.
mico

1
Ви не хочете трохи переробити своє запитання, щоб зрозуміти, чи стовпці ви стоїте після цього?
Джек каже, спробуйте topanswers.xyz

2
SHOW COLUMNS FROM mydb.mytable;

де mydb - це база даних, яка містить необхідну таблицю

mytable - потрібна таблиця

Він повертає інформацію про стовпці (для екзаменаційних назв стовпців, типу тощо)


1
Малі фрагменти коду без пояснення того, як вони вирішують проблему ОП, не відволікають. Спробуйте додати більше деталей до своєї відповіді.
Ерік

0

Ви повинні приєднатися information_schema.tablesі information_schema.columnsразом , щоб отримати список таблиць і деталей їх колон.

information_schema.columnsпоказує не лише детальну інформацію про таблиці, але й представлення даних. Немає способу відфільтрувати лише деталі таблиці з цього подання системи.

Отже, вам потрібно приєднатися.

Приклад запиту:

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 
;
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.