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

T-SQL का उपयोग करके अस्थायी तालिकाओं को सूचीबद्ध करने के 5 तरीके

SQL सर्वर में, आप Transact-SQL का उपयोग करके अस्थायी तालिकाओं की सूची वापस करने के लिए निम्न में से किसी भी पांच तरीके का उपयोग कर सकते हैं।

ये स्थानीय और वैश्विक दोनों अस्थायी तालिकाओं को लौटाते हैं।

विकल्प 1 - sys.tables

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

SELECT name
FROM tempdb.sys.tables
WHERE name LIKE '#%';

जैसा कि इस पृष्ठ पर सभी दृश्यों के साथ है, यह देखते हुए कि हम अस्थायी . के बारे में जानकारी चाहते हैं तालिकाओं में, हमें इस दृश्य को tempdb . में क्वेरी करने की आवश्यकता है डेटाबेस। हम इसे पहले उस डेटाबेस पर स्विच करके (ताकि यह हमारा वर्तमान डेटाबेस हो), या डेटाबेस नाम के साथ अपनी क्वेरी को क्वालिफाई करके कर सकते हैं।

इस उदाहरण में, मैं डेटाबेस नाम के साथ क्वेरी को योग्य बनाता हूं।

विकल्प 2 - sys.objects

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

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

U "उपयोगकर्ता तालिका" के लिए खड़ा है। ऐसा करने का एक वैकल्पिक तरीका WHERE type_desc = 'USER_TABLE' का उपयोग करना है ।

विकल्प 3 - INFORMATION_SCHEMA.TABLES

यदि आप एएनएसआई मानक विकल्प चाहते हैं, तो INFORMATION_SCHEMA.TABLES का उपयोग करें दृश्य। यदि आप इस विकल्प को चुनते हैं, तो आपको इसे प्रकार के अनुसार फ़िल्टर भी करना होगा ताकि केवल "बेस टेबल" ही वापस आए।

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

विकल्प 4 - sp_tables

यदि आप एक संग्रहित प्रक्रिया विकल्प की तलाश में हैं, तो sp_tables संग्रहीत प्रक्रिया चाल चलेगी।

USE tempdb;
EXEC sp_tables '#%';

आप तर्क नामों को भी स्पष्ट रूप से शामिल कर सकते हैं।

USE tempdb;
EXEC sp_tables 
  @table_name = '#%',
  @table_owner = 'dbo',
  @table_qualifier = 'tempdb',
  @table_type = "'TABLE'",
  @fUsePattern = 1;

आप देखेंगे कि मैंने tempdb . पर स्विच किया है इस प्रक्रिया को निष्पादित करने से पहले, भले ही मैंने डेटाबेस को तर्कों में से एक के रूप में आपूर्ति की हो। यह वास्तव में आवश्यक है। @table_qualifier तर्क वर्तमान डेटाबेस से मेल खाना चाहिए।

यह भी ध्यान दें कि @fUsePattern इस मामले में पैटर्न 1 होना चाहिए, क्योंकि मैं टेबल नाम में वाइल्डकार्ड ऑपरेटर का उपयोग कर रहा हूं। इसे 1 पर सेट करना पैटर्न मिलान को सक्षम बनाता है। इसे 0 पर सेट करना पैटर्न मिलान को अक्षम कर देगा।

विकल्प 5 - dbo.sysobjects

यह शायद एक विकल्प नहीं होना चाहिए, लेकिन मैं इसे वैसे भी सूचीबद्ध करूंगा। dbo.sysobjects दृश्य केवल पश्चगामी संगतता के लिए SQL सर्वर में शामिल है। इसे पदावनति के लिए चिह्नित किया गया है और Microsoft इसका उपयोग न करने की सलाह देता है। यदि आप इसे अपने कोड में पाते हैं, तो शायद इसे पिछले विकल्पों में से किसी एक में बदलने पर विचार करें।

किसी भी मामले में, यह कैसा दिखता है:

SELECT name
FROM tempdb..sysobjects
WHERE name LIKE '#%';

अगर आप सोच रहे हैं कि डबल डॉट किसके लिए है (.. ), यह डिफ़ॉल्ट स्कीमा निर्दिष्ट करने का एक त्वरित तरीका है। इस मामले में, डिफ़ॉल्ट स्कीमा dbo है , इसलिए हम निम्नलिखित भी लिख सकते हैं:

SELECT name
FROM tempdb.dbo.sysobjects
WHERE name LIKE '#%';

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. समानांतर योजनाएँ कैसे शुरू होती हैं - भाग 5

  2. टेबल एक्सप्रेशन के मूल तत्व, भाग 11 - विचार, संशोधन संबंधी विचार

  3. एक संदेश प्रणाली के लिए डेटाबेस मॉडल

  4. SQL चलाने के लिए मुझे क्या चाहिए?

  5. SQL में विशिष्ट मानों की गणना कैसे करें