Làm thế nào để hiển thị tên cột của một bảng?


17

Trường hợp rất đơn giản: Bạn có cơ sở dữ liệu MySQL trong đó bạn chỉ có giao diện truy vấn SQL và bạn muốn biết cấu trúc cơ sở dữ liệu với các truy vấn. Bạn có thể liệt kê các bảng bằng show tables;lệnh, nhưng làm thế nào để bạn thấy các tên cột riêng lẻ?

( SELECTcâu lệnh hiển thị Empty setnếu không có dữ liệu nào và KHÔNG thể được sử dụng.)


Xin lưu ý, giải pháp được chấp nhận là giải pháp dưới cùng về desclệnh. Tò mò, nó là ngắn nhất, nhưng có ít phiếu nhất. Đối với tôi, nó cũng là một trong những tốt nhất.
mico

2
bạn đã yêu cầu một truy vấn SQL đơn giản. Câu trả lời của bạn không phải là SQL, do đó có thể giải thích số phiếu bầu thấp. Bạn có thể nên thay đổi tiêu đề của truy vấn của mình thành: "Cách hiển thị tên cột của bảng"
Lennart

Ý kiến ​​hay, bây giờ câu trả lời của tôi làm cho một câu hỏi phù hợp hơn.
mico

Câu trả lời:


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

2
Trong khi đó, tôi phát hiện ra truy vấn này cũng hữu ích: show create table <table_name>trong đó thay vì <table_name> bạn đặt tên bảng ở dạng văn bản thuần túy. Điều này cũng cung cấp các loại trong khi một trong những phù hợp với mục đích liệt kê của bạn rất tốt.
mico

Như đã nói bởi @mico: "hiển thị bảng tbl_name \ G" có thể là giải pháp của bạn. Xem dev.mysql.com/doc/refman/5.7/en/show-create-table.html Phần "\ G" ở đây chỉ để định dạng đầu ra. Trân trọng.
tdaget

6

Giải pháp tốt nhất mà tôi tự tìm ra là desc table_namemệnh lệnh. Thêm thông tin về Danh sách Bảng MySQL . Lệnh này đưa ra mô tả của một bảng cơ sở dữ liệu, đó chính xác là những gì tôi đang cố gắng tìm hiểu.


6

Để đảm bảo bạn liệt kê các cột trong một bảng trong cơ sở dữ liệu hiện tại, hãy sử dụng hàm DATABASE () hoặc SCHema () . Nó trả về NULL nếu bạn không ở trong cơ sở dữ liệu hiện tại. Truy vấn này sẽ hiển thị các cột trong bảng theo thứ tự các cột được xác định:

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


3

Làm thế nào để bạn nhìn thấy các tiêu đề bảng cá nhân?

Bạn có nghĩa là ý kiến ​​bảng ?

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

Tôi muốn những tên cột đó và đã có một vài cách nhờ câu trả lời nhanh. Cảm ơn về điều này cũng nhận xét, Jack.
mico

1
Bạn có nhớ viết lại câu hỏi của bạn một chút để làm cho nó rõ ràng hơn đó là các cột bạn đang theo sau?
Jack Douglas

2
SHOW COLUMNS FROM mydb.mytable;

trong đó mydb - là cơ sở dữ liệu chứa bảng cần thiết

mytable - là bảng cần thiết

Nó trả về thông tin của các cột (đối với examp. Tên của các cột, loại, v.v.)


1
Các đoạn mã nhỏ mà không giải thích về cách họ giải quyết vấn đề của OP không được khuyến khích. Hãy cố gắng để thêm chi tiết cho câu trả lời của bạn.
Erik

0

Bạn cần tham gia information_schema.tablesinformation_schema.columnscùng nhau để có được danh sách các bảng và chi tiết cột của chúng.

information_schema.columnskhông chỉ hiển thị chi tiết về bảng mà còn xem. Không có cách nào để chỉ lọc chi tiết bảng từ chế độ xem hệ thống này.

Do đó bạn cần tham gia.

Ví dụ truy vấn:

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 
;
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.