Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर शो टेबल समतुल्य

समय-समय पर मैं खुद को SHOW TABLES . टाइप करते हुए पाता हूं SQL सर्वर में, तालिकाओं की सूची प्राप्त करने की अपेक्षा करता है।

अगर मैं MySQL या MariaDB का उपयोग कर रहा था तो यह सही समझ में आएगा। लेकिन एसक्यूएल सर्वर/टी-एसक्यूएल में SHOW TABLES नहीं है MySQL या MariaDB जैसे कथन, इसलिए यह कभी काम नहीं करता है। और मैं भूलता रहता हूं। लेकिन सौभाग्य से, SQL सर्वर के पास विकल्प हैं।

SQL सर्वर में तालिकाओं की सूची प्राप्त करने के लिए यहां पांच विकल्प दिए गए हैं। जब भी आप उस मायावी SHOW TABLES को खोजने का प्रयास कर रहे हों, तब इनका उपयोग किया जा सकता है SQL सर्वर में स्टेटमेंट।

विकल्प 1 - sys.tables

sys.tables सिस्टम कैटलॉग दृश्य विशेष रूप से उपयोगकर्ता तालिका जानकारी वापस करने के लिए डिज़ाइन किया गया है:

SELECT name
FROM sys.tables;

यह वर्तमान डेटाबेस में सभी उपयोगकर्ता तालिकाओं का नाम देता है। आप स्टेटमेंट को USE <database name> . के साथ जोड़कर सही डेटाबेस पर स्विच कर सकते हैं जहां <database name> उस डेटाबेस का नाम है जिसके लिए आप सूचीबद्ध होना चाहते हैं।

उदाहरण के लिए, निम्न कथन KrankyKranes . से सभी उपयोगकर्ता तालिकाओं को लौटाता है डेटाबेस:

USE KrankyKranes;
SELECT name
FROM sys.tables;

आप चाहें तो स्कीमा भी वापस कर सकते हैं:

SELECT 
    SCHEMA_NAME(schema_id) AS schema_name,
    name AS table_name
FROM sys.tables;

यहां, मैंने SCHEMA_NAME() . का उपयोग किया है schema_id . के मान का अनुवाद करने के लिए फ़ंक्शन स्कीमा के वास्तविक नाम में कॉलम।

विकल्प 2 - sys.objects

आप sys.objects . का भी उपयोग कर सकते हैं सिस्टम कैटलॉग दृश्य। यदि आप इस विकल्प को चुनते हैं, तो आप इसे प्रकार के अनुसार फ़िल्टर कर सकते हैं ताकि केवल उपयोगकर्ता तालिकाएँ वापस आ जाएँ:

SELECT name 
FROM sys.objects 
WHERE type = 'U';

यह वर्तमान डेटाबेस से उपयोगकर्ता तालिकाएँ लौटाता है। इस दृश्य में एक schema_id भी है कॉलम, ताकि आप SCHEMA_NAME() . का उपयोग कर सकें यदि आवश्यक हो तो इसे स्कीमा नाम में अनुवाद करने के लिए कार्य करें।

विकल्प 3 - information_schema.tables

INFORMATION_SCHEMA.TABLES दृश्य प्रत्येक तालिका के लिए एक पंक्ति देता है या वर्तमान डेटाबेस में देखता है जिसके लिए वर्तमान उपयोगकर्ता की अनुमति है।

हम इस दृश्य को प्रकार के अनुसार फ़िल्टर कर सकते हैं ताकि केवल आधार तालिकाएँ ही वापस आएँ:

SELECT 
    TABLE_SCHEMA,
    TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_TYPE = 'Base Table';

TABLE_SCHEMA कॉलम में टेबल स्कीमा नाम है, और इसलिए हमें SCHEMA_NAME() का उपयोग करने की आवश्यकता नहीं है स्कीमा आईडी को उसके नाम में बदलने के लिए कार्य करता है।

विकल्प 4 - sp_tables

sp_tables संग्रहीत कार्यविधि उन वस्तुओं की सूची लौटाती है जिन्हें वर्तमान परिवेश में क्वेरी किया जा सकता है। इसका अर्थ है समानार्थी वस्तुओं को छोड़कर कोई भी तालिका या दृश्य।

इस प्रक्रिया को कॉल करने का सबसे तेज़ और आसान तरीका इस प्रकार है:

sp_tables;

लेकिन वह वस्तुओं की एक लंबी सूची लौटा सकता है।

आमतौर पर अधिक विशिष्ट होना बेहतर होता है। उदाहरण के लिए:

EXEC sp_tables
    @table_owner = 'dbo', 
    @table_qualifier = 'KrankyKranes', 
    @table_type = "'TABLE'";

यहाँ, मैं KrankyKranes . में उपयोगकर्ता तालिकाएँ दिखाने की प्रक्रिया बता रहा हूँ डेटाबेस जो dbo . के स्वामित्व में है ।

@table_type तर्क मूल्यों की अल्पविराम से अलग की गई सूची को स्वीकार करता है। इसलिए यदि हम विचारों को शामिल करना चाहते हैं, तो हम निम्न कार्य कर सकते हैं:

EXEC sp_tables
    @table_owner = 'dbo', 
    @table_qualifier = 'Music', 
    @table_type = "'TABLE', 'VIEW'";

विकल्प 5 - dbo.sysobjects

SQL सर्वर 2005 से पहले, dbo.sysobjects दृश्य तालिकाओं और अन्य वस्तुओं को दिखाने के लिए दृश्य था।

इसलिए यदि आप SQL सर्वर के पुराने संस्करण का उपयोग कर रहे हैं, तो आप यह कर सकते हैं:

SELECT name 
FROM dbo.sysobjects
WHERE xtype = 'U';

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर (T-SQL) में सभी भाषाओं की सूची कैसे प्राप्त करें

  2. SQL सर्वर में एक अदिश UDF क्या है?

  3. इंसर्ट अपडेट ट्रिगर कैसे निर्धारित करें कि इंसर्ट या अपडेट कैसे करें

  4. SQL सर्वर में टेबल-वैल्यूड फंक्शन क्या है?

  5. एकाधिक क्लाइंट के साथ डीबी कतार के रूप में SQL सर्वर का उपयोग करना