SQLite में सभी संलग्न डेटाबेस में तालिकाओं की सूची वापस करने के दो तरीके यहां दिए गए हैं।
पहली विधि सभी तालिकाओं को लौटाती है और सभी संलग्न डेटाबेस के लिए दृश्य।
दूसरी विधि आपको तालिकाओं और विचारों, या केवल तालिकाओं दोनों को वापस करने का विकल्प देती है, लेकिन केवल प्राथमिक डेटाबेस के लिए।
दिसंबर 2021 अपडेट करें :इस लेख को लिखने के बाद से, SQLite ने एक और विकल्प पेश किया है, जिसे मैंने इस लेख के अंत में एक बोनस तीसरे विकल्प के रूप में सूचीबद्ध किया है।
.टेबल्स कमांड
SQLite कमांड लाइन शेल का उपयोग करते समय तालिकाओं की सूची वापस करने का सबसे आसान तरीका .tables
का उपयोग करना है आज्ञा।
इस आदेश का उपयोग तर्क के साथ या बिना तर्क के किया जा सकता है। यदि आप तर्क प्रदान किए बिना इसका उपयोग करते हैं, तो यह सभी संलग्न डेटाबेस के लिए सभी टेबल (और दृश्य) देता है।
उदाहरण:
.tables
परिणाम:
Album Employee InvoiceLine PlaylistTrack Artist Genre MediaType Track Customer Invoice Playlist
मेरे मामले में, केवल एक संलग्न डेटाबेस (चिनूक नमूना डेटाबेस) है, और इस डेटाबेस की सभी तालिकाएँ वापस कर दी गई हैं।
जैसा कि बताया गया है, आप इस आदेश को तर्क भी प्रदान कर सकते हैं। इस तरह के तर्क का उपयोग कमांड द्वारा लौटाई गई तालिकाओं को सीमित करने के लिए किया जा सकता है। उदाहरण के लिए, आप किसी विशिष्ट तालिका को नाम दे सकते हैं, या आप पैटर्न मिलान का उपयोग केवल उन तालिकाओं को वापस करने के लिए कर सकते हैं जो किसी दिए गए पैटर्न से मेल खाते हैं।
उदाहरण:
.tables a%
परिणाम:
Album Artist
इस मामले में केवल "a" अक्षर से शुरू होने वाली तालिकाएँ लौटाई जाती हैं।
एक बात का ध्यान रखना चाहिए कि .tables
कमांड दोनों टेबलों को लौटाता है और विचार। यदि आप अपने परिणामों से दृश्यों को बाहर करना चाहते हैं, तो आप दृश्यों को बाहर करने के लिए पैटर्न मिलान का उपयोग कर सकते हैं। यह तभी काम करेगा जब आपके विचार एक नामकरण परंपरा का उपयोग करते हैं जो उन्हें तालिकाओं और अन्य वस्तुओं से अलग करता है।
अपने परिणामों से दृश्यों को बाहर करने का दूसरा तरीका sqlite_schema . को क्वेरी करना है सीधे टेबल। हालांकि इस तालिका में दृश्य भी हैं, यदि आवश्यक हो तो आप उन्हें अपने परिणामों से बाहर करने के लिए SQL का उपयोग कर सकते हैं।
sqlite_schema तालिका
प्रत्येक SQLite डेटाबेस में एक sqlite_schema होता है तालिका जो डेटाबेस के लिए स्कीमा को परिभाषित करती है। आप अपने डेटाबेस में तालिकाओं की सूची वापस करने के लिए इस तालिका का उपयोग कर सकते हैं।
जब आप .tables
. का उपयोग करते हैं आदेश, यह ऐसा करने के समान है:
SELECT name FROM sqlite_schema
WHERE type IN ('table','view')
AND name NOT LIKE 'sqlite_%'
ORDER BY 1;
हालाँकि, एक अंतर है।
अंतर यह है कि यह विधि केवल प्राथमिक . के लिए परिणाम लौटाती है डेटाबेस (.tables
कमांड सभी . के लिए परिणाम देता है संलग्न डेटाबेस)।
उपरोक्त क्वेरी को चलाने से निम्न परिणाम प्राप्त होता है:
Album Artist Customer Employee Genre Invoice InvoiceLine MediaType Playlist PlaylistTrack Track
वह क्वेरी और दोनों टेबल लौटाती है दृश्य (ठीक उसी तरह जैसे .tables
कमांड करता है)।
मेरे मामले में कोई विचार नहीं है, लेकिन यदि आप परिणामों में विचारों को बाहर करना चाहते हैं, तो इसका उपयोग करें:
SELECT name FROM sqlite_schema
WHERE type = 'table'
AND name NOT LIKE 'sqlite_%'
ORDER BY 1;
परिणाम:
Album Artist Customer Employee Genre Invoice InvoiceLine MediaType Playlist PlaylistTrack Track
sqlite_schema तालिका को sqlite_master का उपयोग करके भी एक्सेस किया जा सकता है ।
दृश्यों को बाहर करें
पूर्णता के लिए, यहां एक त्वरित उदाहरण दिया गया है जो एक दृश्य के साथ डेटाबेस का उपयोग करता है। इस डेटाबेस में एक तालिका है (जिसे उत्पाद . कहा जाता है) ) और एक दृश्य (vProducts . कहा जाता है) )।
SQLite/डेटाबेस से कनेक्ट करें:
sqlite3 Store.db
.tables
चलाएं आदेश:
.tables
परिणाम:
Products vProducts
sqlite_schema को क्वेरी करें टेबल के लिए टेबल और दृश्य:
SELECT name FROM sqlite_schema
WHERE type IN ('table','view')
AND name NOT LIKE 'sqlite_%'
ORDER BY 1;
परिणाम:
Products vProducts
अब क्वेरी sqlite_schema टेबल के लिए केवल :
SELECT name FROM sqlite_schema
WHERE type = 'table'
AND name NOT LIKE 'sqlite_%'
ORDER BY 1;
परिणाम:
Products
अस्थायी टेबल
.table
कमांड स्थायी टेबल और अस्थायी टेबल दोनों देता है। sqlite_schema तालिका में केवल स्थायी तालिकाएँ होती हैं। यदि आपको केवल अस्थायी तालिकाओं को वापस करने की आवश्यकता है, तो आप sqlite_temp_schema क्वेरी कर सकते हैं या इसका पर्यायवाची sqlite_temp_master ।
स्थायी टेबल और अस्थायी टेबल दोनों को वापस करने के लिए, आप इस तरह की क्वेरी का उपयोग कर सकते हैं:
SELECT name FROM
(SELECT * FROM sqlite_schema UNION ALL
SELECT * FROM sqlite_temp_schema)
WHERE type='table'
ORDER BY name;
बोनस तीसरा विकल्प:टेबल_लिस्ट प्राग्मा स्टेटमेंट
चूँकि मैंने पहली बार यह लेख लिखा था, SQLite ने table_list . पेश किया है pragma कथन, जो तालिकाओं और विचारों को सूचीबद्ध करता है:
PRAGMA table_list;
देखें PRAGMA
एक सिंहावलोकन और उदाहरणों के लिए SQLite में table_list।