मैं किसी तालिका में सभी स्तंभों को कैसे सूचीबद्ध करूं?


231

विभिन्न लोकप्रिय डेटाबेस प्रणालियों के लिए, आप एक तालिका के सभी कॉलमों को कैसे सूचीबद्ध करते हैं?


4
एक प्रश्न लिखने के लिए एक बैज होना चाहिए जो बंद हो जाता है, लेकिन 100 से अधिक upvotes प्राप्त करता है :) OTOH, यह आश्चर्य की बात नहीं है कि कोई स्वीकृत उत्तर नहीं है, क्योंकि यह कई डेटाबेस के बारे में पूछता है, इसलिए मैं इसे बंद करने के फैसले से असहमत नहीं हूं । बस खुशी है कि प्रश्नोत्तर यहाँ है।
टूलमेकरसेव

जवाबों:


255

MySQL के लिए, उपयोग करें:

DESCRIBE name_of_table;

यह ओरेकल के लिए भी तब तक काम करता है जब तक आप SQL * Plus या Oracle के SQL डेवलपर का उपयोग कर रहे हैं।


16
यह समाधान MYSQL नहीं MSSQL के लिए है
हम्माद खान

2
@ डिनिआना मुझे नहीं लगता कि यह आवश्यक रूप से ओरेकल के सभी पर लागू होता है, लेकिन SQL * प्लस पर।
ट्रिप कैनेटीक्स

यह DESCRIBE name_of_table`` होना चाहिए ;
बीमेकर

sqlite के लिए - उपयोग करें: pragma table_info (table_name) अर्थात sqlite> pragma table_info (column1);
गेरो

संपादन, चूंकि DESCRIBEओरेकल PLSQL निर्देश नहीं है , लेकिन SQL * प्लस कमांड है , और इस तरह यह अधिकांश SQL IDE में काम नहीं करता है।
Walen

117

Oracle (PL / SQL) के लिए

SELECT column_name
FROM user_tab_cols
WHERE table_name = 'myTableName'

MySQL के लिए

SHOW COLUMNS FROM table_name

4
Youd शायद column_id द्वारा Oracle क्वेरी ऑर्डर करना चाहते हैं
डेविड एल्ड्रिज

6
Oracle के लिए भी मान्य है DESCRIBE name_of_table
पोचटिरस

<database_name> का उपयोग करें; <table_name> में कॉलम दिखाएं जैसे '<column_prefix>%'; आपको केवल उपसर्ग के साथ शुरू होने वाले कॉलम को सूचीबद्ध करने देगा। बेशक कोण कोष्ठक को छोड़ना।
rstackhouse

user_tab_colsआपकी क्वेरी में क्या है ?
जोगी

@ जोगी - Google "oracle user_tab_cols" - इसका अंतर्निहित Oracle Oracle db है।
टूलमेकर

103

MS SQL सर्वर के लिए:

select * from information_schema.columns where table_name = 'tableName'

9
यहां रुचि का कॉलम COLUMN_NAME होगा।
बुग्गीबॉय

4
यह कई DBMS पर काम करना चाहिए। information_schema.columnsसिस्टम दृश्य ANSI SQLमानक ( लिंक ) का हिस्सा है ।
बजे बोगडान सहलेन २

4
अच्छा जवाब लेकिन डुप्लिकेट से बचने के लिए मैं इस्तेमाल करूंगा:select COLUMN_NAME from information_schema.columns where table_name = 'tableName' and table_schema = 'databaseName'
बिलीनाह

यह SQL-92 ANSI अनुरूप है, और सभी डेटाबेस इंजन में काम करना चाहिए।
गैरेथ डेविडसन

39

(5 साल के लिए, पोस्टग्रेएसक्यूएल के सम्मान के लिए, राज्य का सबसे उन्नत डीडीबीबी)

PostgreSQL में:

\d table_name

या, SQL का उपयोग कर:

select column_name, data_type, character_maximum_length
    from INFORMATION_SCHEMA.COLUMNS 
    where table_name = 'table_name';

4
होना चाहिए \ d table_name। \ dt table_name संबंधों को सूचीबद्ध करता है।
l85m

36

मुझे पता है कि देर हो चुकी है लेकिन मैं इस कमांड का उपयोग Oracle के लिए करता हूँ:

select column_name,data_type,data_length from all_tab_columns where TABLE_NAME = 'xxxx' AND OWNER ='xxxxxxxxxx'


मैंने ओरेकल में यह कोशिश की और यह काम नहीं किया। कॉलम_नाम मुद्रित किया गया था, लेकिन कुछ और नहीं। मुझे सेलेक्ट कास्ट (COLUMN_NAME AS CHAR (40)) का उपयोग करना था || '' || DATA_TYPE एक अच्छा प्रारूप प्राप्त करने के लिए और कई कॉलम प्राप्त करने के लिए।
एमानो केनी

27

एस क्यू एल सर्वर

SELECT 
    c.name 
FROM
    sys.objects o
INNER JOIN
    sys.columns c
ON
    c.object_id = o.object_id
AND o.name = 'Table_Name'

या

SELECT 
    COLUMN_NAME 
FROM 
    INFORMATION_SCHEMA.COLUMNS
WHERE 
    TABLE_NAME  = 'Table_Name'

दूसरा तरीका एक एएनएसआई मानक है और इसलिए सभी एएनएसआई अनुरूप डेटाबेस पर काम करना चाहिए


एमएस SQL ​​सर्वर के लिए इनमें से कोई भी कार्य लिखित (या कम से कम निहित है, जैसा कि मैंने इसे पढ़ा है)। दोनों ही मामलों में तालिका का नाम स्तंभ बिना किसी [ ]चारों ओर के नाम को संग्रहीत करता है, इसलिए क्वेरी को उनका उपयोग नहीं करना चाहिए, केवल सादे तालिका का नाम। अगर यह ओपी का इरादा नहीं था, तो कम से कम इस बारे में पता होना चाहिए।
जॉनब्र्वे जुले

1
@JonBrave - यह सही है, स्क्वायर ब्रैकेट्स का मतलब है "अपनी टेबल का नाम यहाँ डालें" :)
रस कैम

वर्ग कोष्ठक होने के नाते, मैंने इसे " वर्ग कोष्ठक (संभवतः आरक्षित शब्द के कारण) के अंदर अपनी तालिका का नाम सम्मिलित करें " के रूप में पढ़ा , और फिर कोई मेल नहीं मिला :) शायद बीएनएफ <Table Name>ने अस्पष्टता से बचा होगा। फिर भी, मुझे एहसास हुआ कि आपने इरादा किया होगा जैसा कि मैंने टिप्पणी लिखी है --- यह सिर्फ मामले में दूसरों को चेतावनी देने के लिए कोई नुकसान नहीं पहुंचाता है।
जॉनब्र्वे जुएल

1
केवल MSSQL के लिए काम करता है अगर कोई '[]' 'नहीं है और तालिका नाम के आसपास उद्धरणों की आवश्यकता है।
21


12

Microsoft SQL सर्वर प्रबंधन स्टूडियो 2008 R2:

एक क्वेरी संपादक में, यदि आप तालिका नाम (पूर्व dbo.MyTable) और हिट ALT+ के पाठ को उजागर करते हैं, तो आपको F1कॉलम नाम, प्रकार, लंबाई, आदि की एक सूची मिलेगी।

ALT+F1 जब आपने हाइलाइट किया dbo.MyTableहै तो इस साइट के अनुसार चलने के बराबर हैEXEC sp_help 'dbo.MyTable'

मुझे INFORMATION_SCHEMA.COLUMNS को काम करने के लिए भिन्नताएं नहीं मिल सकती हैं, इसलिए मैं इसके बजाय इसका उपयोग करता हूं।


1
SSMS 2012 में काम नहीं किया। Btw क्या आपका मतलब SQL सर्वर प्रबंधन स्टूडियो 2008 था?
हम्माद खान

1
हां, और अधिक सटीक रूप से मेरा मतलब था Microsoft SQL सर्वर प्रबंधन स्टूडियो 2008 R2। मैं संपादित करूँगा।
लेस्ली सेज

4

एस क्यू एल सर्वर

डेटाबेस के सभी उपयोगकर्ता परिभाषित तालिकाओं को सूचीबद्ध करने के लिए:

use [databasename]
select name from sysobjects where type = 'u'

तालिका के सभी स्तंभों को सूचीबद्ध करने के लिए:

use [databasename]
select name from syscolumns where id=object_id('tablename')

हे? यह सिर्फ गलत है ... आप केवल डेटाबेस के लिए USE का उपयोग कर सकते हैं ... और क्वेरी डेटाबेस में सभी उपयोगकर्ता परिभाषित तालिकाओं को लौटाता है, जो ओपी नहीं चाहता था।
मैक्सिमिलियन मेयरल


3

SQL सर्वर में दूसरों पर बस थोड़ा सा सुधार (स्कीमा उपसर्ग अधिक महत्वपूर्ण होता जा रहा है!):

SELECT name
  FROM sys.columns 
  WHERE [object_id] = OBJECT_ID('dbo.tablename');

3

उदाहरण:

select Table_name as [Table] , column_name as [Column] , Table_catalog as [Database], table_schema as [Schema]  from information_schema.columns
where table_schema = 'dbo'
order by Table_name,COLUMN_NAME

बस मेरा कोड

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.