จะแสดงชื่อคอลัมน์ของตารางได้อย่างไร?


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: "show create table tbl_name \ G" อาจเป็นทางออกของคุณ ดูdev.mysql.com/doc/refman/5.7/th/show-create-table.htmlส่วน "\ G" อยู่ที่นี่เพื่อจัดรูปแบบเอาต์พุตเท่านั้น ความนับถือ.
tdaget

6

ทางออกที่ดีที่สุดที่ฉันค้นพบด้วยตัวเองคือdesc table_nameคำสั่ง ข้อมูลเพิ่มเติมเกี่ยวกับตารางรายการ MySQL คำสั่งนี้ให้คำอธิบายของตารางฐานข้อมูลหนึ่งตารางซึ่งเป็นสิ่งที่ฉันพยายามค้นหา


6

เพื่อให้แน่ใจว่าคุณรายการคอลัมน์ในตารางในฐานข้อมูลปัจจุบันที่ใช้ฐานข้อมูล () หรือคี () ฟังก์ชัน มันจะส่งกลับค่า 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 |
+------------+------------------+

ฉันต้องการชื่อคอลัมน์เหล่านั้นและมีอยู่สองสามวิธีด้วยคำตอบที่รวดเร็ว ขอบคุณเกี่ยวกับสิ่งนี้ด้วยแจ็ค
แฟลช

1
คุณมีความคิดที่จะตอบคำถามของคุณอีกเล็กน้อยเพื่อให้ชัดเจนขึ้นหรือไม่ว่าเป็นคอลัมน์ที่คุณติดตาม
แจ็คดักลาส

2
SHOW COLUMNS FROM mydb.mytable;

โดยที่ mydb - เป็นฐานข้อมูลที่มีตารางที่จำเป็น

mytable - เป็นตารางที่จำเป็น

มันส่งคืนข้อมูลของคอลัมน์ (สำหรับ examp. ชื่อคอลัมน์, ประเภท, ฯลฯ )


1
ตัวอย่างโค้ดขนาดเล็กที่ไม่มีคำอธิบายว่าพวกเขาแก้ปัญหา OP ได้อย่างไร โปรดลองเพิ่มรายละเอียดเพิ่มเติมในคำตอบของคุณ
Erik

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 
;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.