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


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.