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

तालिका के लिए स्तंभ जानकारी प्राप्त करें या SQL सर्वर में देखें (T-SQL:sp_columns)

SQL सर्वर में आप sp_columns . का उपयोग कर सकते हैं सिस्टम संग्रहीत प्रक्रिया निर्दिष्ट वस्तुओं के लिए कॉलम जानकारी वापस करने के लिए जिसे वर्तमान वातावरण में पूछताछ की जा सकती है। ऐसे ऑब्जेक्ट में टेबल, व्यू या अन्य ऑब्जेक्ट शामिल होते हैं जिनमें टेबल-वैल्यू फंक्शन जैसे कॉलम होते हैं।

आप किसी विशिष्ट कॉलम के लिए जानकारी प्राप्त कर सकते हैं, या आप किसी तालिका, दृश्य आदि से सभी कॉलम निर्दिष्ट कर सकते हैं।

सिंटैक्स

वाक्य रचना इस प्रकार है:

sp_columns [ @table_name = ] object  
     [ , [ @table_owner = ] owner ]   
     [ , [ @table_qualifier = ] qualifier ]   
     [ , [ @column_name = ] column ]   
     [ , [ @ODBCVer = ] ODBCVer ]

@table_name तर्क ही आवश्यक तर्क है। यह उस टेबल/ऑब्जेक्ट का नाम है जिससे आप कॉलम की जानकारी चाहते हैं।

अन्य तर्क वैकल्पिक हैं। इन तर्कों के बारे में अधिक जानकारी के लिए, Microsoft दस्तावेज़ देखें।

इस संग्रहीत कार्यविधि के लिए SELECT requires की आवश्यकता है और VIEW DEFINITION स्कीमा पर अनुमतियाँ।

उदाहरण 1 - एक विशिष्ट कॉलम के लिए वापसी जानकारी

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

EXEC sp_columns
  @table_name = 'Cities', 
  @table_owner = 'Application',   
  @table_qualifier = 'WideWorldImporters',   
  @column_name = 'Location',
  @ODBCVer = 2;

परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):

TABLE_QUALIFIER   | WideWorldImporters
TABLE_OWNER       | Application
TABLE_NAME        | Cities
COLUMN_NAME       | Location
DATA_TYPE         | -4
TYPE_NAME         | geography
PRECISION         | 2147483647
LENGTH            | 2147483647
SCALE             | NULL
RADIX             | NULL
NULLABLE          | 1
REMARKS           | NULL
COLUMN_DEF        | NULL
SQL_DATA_TYPE     | -4
SQL_DATETIME_SUB  | NULL
CHAR_OCTET_LENGTH | 2147483647
ORDINAL_POSITION  | 4
IS_NULLABLE       | YES
SS_DATA_TYPE      | 23
(1 row affected)

इसे करने का एक और संक्षिप्त तरीका यहां दिया गया है:

EXEC sp_columns
  'Cities', 
  'Application',   
  'WideWorldImporters',   
  'Location',
  2;

यह वही परिणाम देता है।

उदाहरण 2 - केवल एक तालिका निर्दिष्ट करें

इस उदाहरण में मैं दूसरे डेटाबेस पर स्विच करता हूं और केवल तालिका का नाम निर्दिष्ट करता हूं।

USE Music;
EXEC sp_columns @table_name = 'Artists';

परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):

Changed database context to 'Music'.
-[ RECORD 1 ]-------------------------
TABLE_QUALIFIER   | Music
TABLE_OWNER       | dbo
TABLE_NAME        | Artists
COLUMN_NAME       | ArtistId
DATA_TYPE         | 4
TYPE_NAME         | int identity
PRECISION         | 10
LENGTH            | 4
SCALE             | 0
RADIX             | 10
NULLABLE          | 0
REMARKS           | NULL
COLUMN_DEF        | NULL
SQL_DATA_TYPE     | 4
SQL_DATETIME_SUB  | NULL
CHAR_OCTET_LENGTH | NULL
ORDINAL_POSITION  | 1
IS_NULLABLE       | NO
SS_DATA_TYPE      | 56
-[ RECORD 2 ]-------------------------
TABLE_QUALIFIER   | Music
TABLE_OWNER       | dbo
TABLE_NAME        | Artists
COLUMN_NAME       | ArtistName
DATA_TYPE         | -9
TYPE_NAME         | nvarchar
PRECISION         | 255
LENGTH            | 510
SCALE             | NULL
RADIX             | NULL
NULLABLE          | 0
REMARKS           | NULL
COLUMN_DEF        | NULL
SQL_DATA_TYPE     | -9
SQL_DATETIME_SUB  | NULL
CHAR_OCTET_LENGTH | 510
ORDINAL_POSITION  | 2
IS_NULLABLE       | NO
SS_DATA_TYPE      | 39
-[ RECORD 3 ]-------------------------
TABLE_QUALIFIER   | Music
TABLE_OWNER       | dbo
TABLE_NAME        | Artists
COLUMN_NAME       | ActiveFrom
DATA_TYPE         | -9
TYPE_NAME         | date
PRECISION         | 10
LENGTH            | 20
SCALE             | NULL
RADIX             | NULL
NULLABLE          | 1
REMARKS           | NULL
COLUMN_DEF        | NULL
SQL_DATA_TYPE     | -9
SQL_DATETIME_SUB  | NULL
CHAR_OCTET_LENGTH | NULL
ORDINAL_POSITION  | 3
IS_NULLABLE       | YES
SS_DATA_TYPE      | 0
(3 rows affected)

यह निर्दिष्ट तालिका में सभी स्तंभों के लिए जानकारी देता है।

हालांकि आपको सही डेटाबेस में होने की आवश्यकता है। अगर मैं पिछले उदाहरण को किसी भिन्न डेटाबेस पर फिर से चलाता हूं, तो मुझे कोई परिणाम नहीं मिलता है।

USE WideWorldImporters;
EXEC sp_columns @table_name = 'Artists';

परिणाम:

Changed database context to 'WideWorldImporters'.
(0 rows affected)

उदाहरण 3 - टेबल क्वालिफायर के बारे में

यदि आप @table_qualifier प्रदान करते हैं तर्क, यह वर्तमान डेटाबेस के समान होना चाहिए। यदि ऐसा नहीं है, तो एक त्रुटि लौटा दी जाती है।

USE Music;
EXEC sp_columns
  @table_name = 'Artists',
  @table_qualifier = 'WideWorldImporters';

परिणाम:

Msg 15250, Level 16, State 1, Line 24
The database name component of the object qualifier must be the name of the current database.

इस उदाहरण में मैंने "म्यूजिक" डेटाबेस पर स्विच किया, लेकिन फिर "वाइडवर्ल्ड इम्पोर्टर्स" के एक टेबल क्वालीफायर का उपयोग किया, जिसके परिणामस्वरूप त्रुटि Msg 15250 वापस आ गई।

इस मामले में, मुझे "संगीत" के टेबल क्वालिफायर का उपयोग करना चाहिए था। वैकल्पिक रूप से, मैं तर्क को पूरी तरह से छोड़ सकता था।

उदाहरण 4 - देखे जाने की संख्या

ऑब्जेक्ट प्रकार की परवाह किए बिना सिंटैक्स समान है। यहां एक दृश्य के लिए स्तंभ जानकारी प्राप्त करने का एक उदाहरण दिया गया है:

EXEC sp_columns
  @table_name = 'Customers',
  @table_owner = 'Website',
  @column_name = 'CustomerID'; 

परिणाम:

TABLE_QUALIFIER   | WideWorldImporters
TABLE_OWNER       | Website
TABLE_NAME        | Customers
COLUMN_NAME       | CustomerID
DATA_TYPE         | 4
TYPE_NAME         | int
PRECISION         | 10
LENGTH            | 4
SCALE             | 0
RADIX             | 10
NULLABLE          | 0
REMARKS           | NULL
COLUMN_DEF        | NULL
SQL_DATA_TYPE     | 4
SQL_DATETIME_SUB  | NULL
CHAR_OCTET_LENGTH | NULL
ORDINAL_POSITION  | 1
IS_NULLABLE       | NO
SS_DATA_TYPE      | 56

यह किसी दृश्य के लिए स्तंभ जानकारी होता है।

इस स्थिति में, यदि मैं क्वेरी से तालिका स्वामी को छोड़ देता हूं, तो दो पंक्तियाँ वापस आ जाती हैं:

EXEC sp_columns
  @table_name = 'Customers',
  @column_name = 'CustomerID'; 

परिणाम:

-[ RECORD 1 ]-------------------------
TABLE_QUALIFIER   | WideWorldImporters
TABLE_OWNER       | Sales
TABLE_NAME        | Customers
COLUMN_NAME       | CustomerID
DATA_TYPE         | 4
TYPE_NAME         | int
PRECISION         | 10
LENGTH            | 4
SCALE             | 0
RADIX             | 10
NULLABLE          | 0
REMARKS           | NULL
COLUMN_DEF        | (NEXT VALUE FOR [Sequences].[CustomerID])
SQL_DATA_TYPE     | 4
SQL_DATETIME_SUB  | NULL
CHAR_OCTET_LENGTH | NULL
ORDINAL_POSITION  | 1
IS_NULLABLE       | NO
SS_DATA_TYPE      | 56
-[ RECORD 2 ]-------------------------
TABLE_QUALIFIER   | WideWorldImporters
TABLE_OWNER       | Website
TABLE_NAME        | Customers
COLUMN_NAME       | CustomerID
DATA_TYPE         | 4
TYPE_NAME         | int
PRECISION         | 10
LENGTH            | 4
SCALE             | 0
RADIX             | 10
NULLABLE          | 0
REMARKS           | NULL
COLUMN_DEF        | NULL
SQL_DATA_TYPE     | 4
SQL_DATETIME_SUB  | NULL
CHAR_OCTET_LENGTH | NULL
ORDINAL_POSITION  | 1
IS_NULLABLE       | NO
SS_DATA_TYPE      | 56
(2 rows affected)

दो पंक्तियाँ लौटा दी जाती हैं क्योंकि "ग्राहक" नामक दो वस्तुएँ होती हैं। एक दृश्य है और दूसरा एक टेबल है। दृश्य के लिए तालिका स्वामी को "वेबसाइट" कहा जाता है, और तालिका के तालिका स्वामी को "बिक्री" कहा जाता है।

उदाहरण 5 - तालिका-मूल्यवान कार्य

जैसा कि उल्लेख किया गया है, आप तालिका-मूल्यवान फ़ंक्शन के लिए कॉलम जानकारी भी प्राप्त कर सकते हैं।

तालिका-मूल्यवान फ़ंक्शन के लिए कॉलम जानकारी प्राप्त करने का एक उदाहरण यहां दिया गया है। एक बार फिर, वाक्य रचना वही है।

EXEC sp_columns
  @table_name = 'DetermineCustomerAccess'; 

परिणाम:

TABLE_QUALIFIER   | WideWorldImporters
TABLE_OWNER       | Application
TABLE_NAME        | DetermineCustomerAccess
COLUMN_NAME       | AccessResult
DATA_TYPE         | 4
TYPE_NAME         | int
PRECISION         | 10
LENGTH            | 4
SCALE             | 0
RADIX             | 10
NULLABLE          | 0
REMARKS           | NULL
COLUMN_DEF        | NULL
SQL_DATA_TYPE     | 4
SQL_DATETIME_SUB  | NULL
CHAR_OCTET_LENGTH | NULL
ORDINAL_POSITION  | 1
IS_NULLABLE       | NO
SS_DATA_TYPE      | 56

  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 सर्वर इंस्टेंस से सभी डेटाबेस में प्राथमिक कुंजी बाधा के साथ या बिना तालिकाओं की सूची प्राप्त करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 61

  2. एसक्यूएल सर्वर डीबी में सभी इंडेक्स और इंडेक्स कॉलम की सूची

  3. SQL सर्वर में सर्वर जानकारी प्राप्त करने के लिए SERVERPROPERTY () का उपयोग करें

  4. GETDATE() SQL सर्वर में उदाहरण (T-SQL)

  5. SQL सर्वर में लाखों पंक्तियों के साथ बड़ी तालिका को कैसे अपडेट करें?