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

SQL सर्वर में पहचान () बनाम पहचान ():क्या अंतर है?

यह अजीब लग सकता है, लेकिन T-SQL में एक IDENTITY() है संपत्ति और एक IDENTITY() समारोह, जिनमें से प्रत्येक एक (समान, लेकिन) अलग उद्देश्य की पूर्ति करता है।

  • IDENTITY() संपत्ति तालिका में एक पहचान कॉलम बनाती है। एक पहचान कॉलम में स्वचालित रूप से बढ़ती पहचान संख्या होती है। इस संपत्ति का उपयोग CREATE TABLE . के साथ किया जाता है और ALTER TABLE बयान।
  • IDENTITY() हालांकि, फ़ंक्शन का उपयोग केवल SELECT . में किया जाता है INTO . के साथ स्टेटमेंट एक नई तालिका में एक पहचान स्तंभ सम्मिलित करने के लिए तालिका खंड।

SQL-DMO भी है Identity संपत्ति जो एक कॉलम की पंक्ति पहचान संपत्ति को उजागर करती है, लेकिन मैं इसे यहां कवर नहीं करूंगा। Microsoft सलाह देता है कि इस गुण को SQL सर्वर के भविष्य के संस्करण में हटा दिया जाएगा, और आपको इसे नए विकास कार्य में उपयोग करने से बचना चाहिए।

पहचान () संपत्ति

यहां IDENTITY() का उपयोग करने का एक उदाहरण दिया गया है संपत्ति।

CREATE TABLE Pets (
    PetId int IDENTITY(1,1) PRIMARY KEY, 
    PetName varchar(255)
    );

यह कोड दो कॉलम वाली एक टेबल बनाता है। पहला कॉलम (PetId ) एक पहचान कॉलम है (क्योंकि मैं IDENTITY() . का उपयोग करता हूं इसकी परिभाषा में संपत्ति)।

अब जब मैंने एक पहचान कॉलम बना लिया है, तो मैं PetName . में पालतू जानवरों के नाम डाल सकता हूं कॉलम में प्रत्येक पंक्ति के लिए एक आईडी शामिल करने की आवश्यकता नहीं है।

INSERT INTO Pets (PetName)
VALUES ('Homer'), ('Felix'), ('Ruff');

SELECT * FROM Pet;

परिणाम:

+---------+-----------+
| PetId   | PetName   |
|---------+-----------|
| 1       | Homer     |
| 2       | Felix     |
| 3       | Ruff      |
+---------+-----------+

इस मामले में, नंबरिंग 1 से शुरू होती है और प्रत्येक पंक्ति 1 से बढ़ती है। ऐसा इसलिए है क्योंकि मैंने IDENTITY(1,1) का उपयोग किया है यह निर्दिष्ट करने के लिए कि बीज का मान 1 है और यह प्रत्येक नई पंक्ति पर 1 से बढ़ा है।

पहचान() फ़ंक्शन

जैसा कि बताया गया है, IDENTITY() फ़ंक्शन का उपयोग SELECT INTO . में किया जाता है बयान। यहां IDENTITY() का उपयोग करने का एक उदाहरण दिया गया है समारोह।

SELECT 
  IDENTITY(int, 101, 10) AS pet_id,
  PetName AS pet_name
INTO BestFriends
FROM Pets;

SELECT * FROM BestFriends;

परिणाम:

+----------+------------+
| pet_id   | pet_name   |
|----------+------------|
| 101      | Homer      |
| 111      | Felix      |
| 121      | Ruff       |
+----------+------------+

यहाँ, मैंने BestFriends . नामक एक तालिका बनाई है और इसे Pets . से पॉप्युलेट किया टेबल।

इस मामले में मैंने 101 पर गिनती शुरू की और इसे 10 से बढ़ा दिया। यह भी ध्यान दें कि फ़ंक्शन को कॉलम के डेटा प्रकार को निर्दिष्ट करने के लिए पहले तर्क की आवश्यकता होती है।


  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 सर्वर में क्रिप्टोग्राफ़िक, रैंडम नंबर बनाने के लिए CRYPT_GEN_RANDOM() का उपयोग करें

  2. SQL में एक सशर्त अद्यतन विवरण का उपयोग करना

  3. SQL में दो तिथियों के बीच पूर्ण महीनों की संख्या की गणना करना

  4. मैं SQL सर्वर में एक साथ दो तालिकाओं में डेटा कैसे सम्मिलित कर सकता हूं?

  5. स्पॉटलाइट क्लाउड अलार्म संग्रह टाइम्स