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

SQL सर्वर में प्राथमिक कुंजी के साथ सभी तालिकाओं को वापस करने के 7 तरीके

यदि आपको कभी भी SQL सर्वर में प्राथमिक कुंजी वाली सभी तालिकाओं को खोजने की आवश्यकता होती है, तो यह आलेख मदद कर सकता है।

यह आलेख प्राथमिक कुंजी वाले मौजूदा डेटाबेस में सभी तालिकाओं को वापस करने के सात तरीके प्रदान करता है।

ध्यान दें कि इनमें से अधिकतर उदाहरण केवल टेबल लौटाते हैं - प्राथमिक कुंजी स्वयं नहीं। यदि आप प्राथमिक कुंजियों की सूची चाहते हैं, तो SQL सर्वर में प्राथमिक कुंजी वापस करने के 11 तरीके देखें।

विकल्प 1 - OBJECTPROPERTY() sys.tables के साथ

पहले विकल्प में OBJECTPROPERTY() . का उपयोग करना शामिल है sys.tables . को क्वेरी करते समय कार्य करें सिस्टम दृश्य। यह फ़ंक्शन एक TableHasPrimaryKey को स्वीकार करता है बहस। यदि इस तर्क का मान 1 . है , हमें सभी टेबल मिलते हैं जिनमें प्राथमिक कुंजी होती है (यदि यह 0 . है तब हमें वे सभी टेबल मिलते हैं जिनमें प्राथमिक कुंजी नहीं होती है)।

चुनें SCHEMA_NAME(schema_id) AS [स्कीमा], नाम AS [टेबल] sys.tables से जहां OBJECTPROPERTY(object_id, 'TableHasPrimaryKey') =1ORDER BY [स्कीमा], [टेबल];

परिणाम:

+----------+------------+| स्कीमा | टेबल ||----------+---------------|| डीबीओ | एल्बम || डीबीओ | कलाकार || डीबीओ | देश || डीबीओ | शैलियां |+----------+------------+

इस उदाहरण में, वर्तमान डेटाबेस में प्राथमिक कुंजी के साथ चार टेबल हैं।

शेष उदाहरण समान डेटाबेस को क्वेरी करेंगे, इसलिए उन प्रश्नों के परिणाम समान होंगे।

विकल्प 2 - OBJECTPROPERTY() INFORMATION_SCHEMA.TABLES के साथ

यह उदाहरण OBJECTPROPERTY() . का उपयोग करता है फिर से, लेकिन इस बार मैं INFORMATION_SCHEMA.TABLES से पूछताछ कर रहा हूं देखें।

 TABLE_SCHEMA, TABLE_NAMEFROM INFORMATION_SCHEMA.TABLESWHERE OBJECTPROPERTY(OBJECT_ID(CONCAT(TABLE_SCHEMA, '.', TABLE_NAME)),'TableHasPrimaryKey') =1 ANDTABLE_TYPE'
 परिणाम:

+----------------+--------------+| TABLE_SCHEMA | TABLE_NAME ||--------------+--------------|| डीबीओ | एल्बम || डीबीओ | कलाकार || डीबीओ | देश || डीबीओ | शैलियां |+----------------+--------------+

विकल्प 3 - OBJECTPROPERTY() sys.objects के साथ

एक बार फिर OBJECTPROPERTY() बचाव के लिए आता है। इस बार मैं sys.objects . से पूछताछ कर रहा हूं सिस्टम दृश्य।

चुनें SCHEMA_NAME(schema_id) AS [स्कीमा], नाम AS [टेबल] sys.objects से जहां टाइप करें ='U'और OBJECTPROPERTY(OBJECT_ID(CONCAT(SCHEMA_NAME(schema_id), '.', name)), 'TableHasPrimaryKey ') =[स्कीमा], [तालिका] द्वारा 1 आदेश 

परिणाम:

+----------+------------+| स्कीमा | टेबल ||----------+---------------|| डीबीओ | एल्बम || डीबीओ | कलाकार || डीबीओ | देश || डीबीओ | शैलियां |+----------+------------+

विकल्प 4 - INFORMATION_SCHEMA.TABLE_CONSTRAINTS

आप INFORMATION_SCHEMA.TABLE_CONSTRAINTS को क्वेरी कर सकते हैं प्राथमिक कुंजी के साथ तालिकाओं की सूची प्राप्त करने के लिए देखें। आपको परिणामों को केवल उन्हीं पंक्तियों में फ़िल्टर करने की आवश्यकता है जिनमें CONSTRAINT_TYPE . है PRIMARY KEY . का ।

CONSTRAINT_SCHEMA, TABLE_NAMEFROM INFORMATION_SCHEMA.TABLE_CONSTRAINTSWHERE CONSTRAINT_TYPE ='प्राथमिक कुंजी' चुनें;

परिणाम:

+---------------------+--------------+| CONSTRAINT_SCHEMA | TABLE_NAME ||---------------------+--------------|| डीबीओ | कलाकार || डीबीओ | शैलियों || डीबीओ | एल्बम || डीबीओ | देश |+---------------------+--------------+

यह दृश्य बाधा नाम भी लौटाता है, इसलिए यदि आवश्यक हो तो आप उस कॉलम को भी शामिल कर सकते हैं:

CONSTRAINT_SCHEMA, TABLE_NAME, CONSTRAINT_NAMEFROM INFORMATION_SCHEMA.TABLE_CONSTRAINTSWHERE CONSTRAINT_TYPE ='प्राथमिक कुंजी' चुनें;

परिणाम:

+---------------------+--------------+---------- -----------------------+| CONSTRAINT_SCHEMA | TABLE_NAME | CONSTRAINT_NAME ||---------------------+--------------+---------- ---------------------|| डीबीओ | कलाकार | PK__कलाकार__25706B50FCD918B1 || डीबीओ | शैलियों | PK__Genres__0385057E88BB96F8 || डीबीओ | एल्बम | PK__एल्बम__97B4BE379FC780BD || डीबीओ | देश | PK__देश__10D1609F97ADEC31 |+---------------------+--------------+---------- ---------------------+

विकल्प 5 - sys.key_constraints

आप sys.key_constraints . को फ़िल्टर कर सकते हैं एक CONSTRAINT_TYPE देखें PK . का प्राथमिक कुंजियों वाली तालिकाओं की सूची प्राप्त करने के लिए।

चुनें SCHEMA_NAME(schema_id) AS [स्कीमा], OBJECT_NAME(parent_object_id) AS [टेबल]FROM sys.key_constraints WHERE type ='PK';

परिणाम:

+----------+------------+| स्कीमा | टेबल ||----------+---------------|| डीबीओ | कलाकार || डीबीओ | शैलियों || डीबीओ | एल्बम || डीबीओ | देश |+----------+-----------+

यहाँ यह फिर से प्राथमिक कुंजी नाम के साथ है:

चुनें SCHEMA_NAME(schema_id) AS [स्कीमा], OBJECT_NAME(parent_object_id) AS [टेबल], nameFROM sys.key_constraints WHERE type ='PK';

परिणाम:

+----------+---------------+-------------------------- ------+| स्कीमा | टेबल | नाम ||----------+---------------+-------------------------- -----|| डीबीओ | कलाकार | PK__कलाकार__25706B50FCD918B1 || डीबीओ | शैलियों | PK__Genres__0385057E88BB96F8 || डीबीओ | एल्बम | PK__एल्बम__97B4BE379FC780BD || डीबीओ | देश | PK__देश__10D1609F97ADEC31 |+----------+---------+--------------- -----+

विकल्प 6 - sys.objects

sys.objects सिस्टम व्यू प्राथमिक कुंजी सहित स्कीमा-स्कोप्ड ऑब्जेक्ट्स के बारे में जानकारी वापस करने के लिए लोकप्रिय है।

चुनें SCHEMA_NAME(schema_id) AS [स्कीमा], OBJECT_NAME(parent_object_id) AS [टेबल]FROM sys.objects WHERE type ='PK';

परिणाम:

+----------+------------+| स्कीमा | टेबल ||----------+---------------|| डीबीओ | कलाकार || डीबीओ | शैलियों || डीबीओ | एल्बम || डीबीओ | देश |+----------+-----------+

पिछले दो उदाहरणों की तरह, हम name . को शामिल कर सकते हैं प्राथमिक कुंजी का नाम प्रदर्शित करने के लिए इस दृश्य का स्तंभ:

चुनें SCHEMA_NAME(schema_id) AS [स्कीमा], OBJECT_NAME(parent_object_id) AS [टेबल], nameFROM sys.objects WHERE type ='PK';

परिणाम:

+----------+---------------+-------------------------- ------+| स्कीमा | टेबल | नाम ||----------+---------------+-------------------------- -----|| डीबीओ | कलाकार | PK__कलाकार__25706B50FCD918B1 || डीबीओ | शैलियों | PK__Genres__0385057E88BB96F8 || डीबीओ | एल्बम | PK__एल्बम__97B4BE379FC780BD || डीबीओ | देश | PK__देश__10D1609F97ADEC31 |+----------+---------+--------------- -----+

विकल्प 7 - OBJECTPROPERTYEX()

OBJECTPROPERTYEX() फ़ंक्शन बिल्कुल OBJECTPROPERTY() . की तरह काम करता है फ़ंक्शन, सिवाय इसके कि यह अधिक गुणों का समर्थन करता है। इसलिए, पिछले उदाहरणों में से कोई भी जो OBJECTPROPERTY() . का उपयोग करता है , आसानी से OBJECTPROPERTYEX() . का उपयोग करने के लिए फिर से लिखा जा सकता है ।

उदाहरण के लिए, मैं इस पृष्ठ पर निम्नलिखित के लिए पहला उदाहरण फिर से लिख सकता हूं:

चुनें SCHEMA_NAME(schema_id) AS [स्कीमा], नाम AS [टेबल] sys.tables से जहां OBJECTPROPERTYEX(object_id, 'TableHasPrimaryKey') =1ORDER BY [स्कीमा], [टेबल];

परिणाम:

+----------+------------+| स्कीमा | टेबल ||----------+---------------|| डीबीओ | एल्बम || डीबीओ | कलाकार || डीबीओ | देश || डीबीओ | शैलियां |+----------+------------+

मुझे यह उल्लेख करना चाहिए कि OBJECTPROPERTYEX() एक sql_variant . लौटाता है डेटा प्रकार, जबकि OBJECTPROPERTY() एक int . लौटाता है ।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. INSERT INTO ... कथन के भाग को दोहराए बिना अनेक पंक्तियाँ सम्मिलित करें?

  2. SQL सर्वर पीक प्रदर्शन सुनिश्चित करने के लिए 5 ट्रिक्स

  3. टीएसक्यूएल:स्थानीय समय को यूटीसी में कैसे परिवर्तित करें? (एसक्यूएल सर्वर 2008)

  4. SQL सर्वर ट्रांजेक्शनल प्रतिकृति कॉन्फ़िगरेशन

  5. केवल संख्यात्मक कॉलम मान कैसे प्राप्त करें?