Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में कम्पोजिट यूनिकनेस (एकाधिक कॉलम पर यूनिक कंस्ट्रेंट) कैसे लागू करें?

एकाधिक कॉलम पर संयुक्त यूनिक कंस्ट्रेंट बनाना

दो या अधिक कॉलम के **संयोजन** को यूनिक बनाने के लिए कम्पोजिट UNIQUE KEY परिभाषित करें।

सिंटैक्स

CREATE TABLE table_name (
    ...
    UNIQUE KEY constraint_name (col1, col2, ...)
);

उदाहरण: छात्र नाम + मोबाइल नंबर यूनिक

CREATE TABLE enforceCompoundUniqueness (
    StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentName VARCHAR(40) NOT NULL,
    StudentMobileNumber VARCHAR(12) NOT NULL,
    UNIQUE KEY StudentName_StudentMobileNumber (StudentName, StudentMobileNumber)
);

टेस्ट: डुप्लिकेट डालने का प्रयास

INSERT INTO enforceCompoundUniqueness (StudentName, StudentMobileNumber)
VALUES ('Larry', '2322245676');  -- सफल

INSERT INTO enforceCompoundUniqueness (StudentName, StudentMobileNumber)
VALUES ('Larry', '2322245676');  -- एरर!
-- ERROR 1062 (23000): Duplicate entry 'Larry-2322245676' for key 'StudentName_StudentMobileNumber'

INSERT INTO enforceCompoundUniqueness (StudentName, StudentMobileNumber)
VALUES ('Sam', '6475746455');    -- सफल (अलग नाम)

परिणाम

+-----------+-------------+---------------------+
| StudentId | StudentName | StudentMobileNumber |
+-----------+-------------+---------------------+
| 1         | Larry       | 2322245676          |
| 3         | Sam         | 6475746455          |
+-----------+-------------+---------------------+

महत्वपूर्ण बिंदु

  • यूनिकनेस **संयोजन** पर है, व्यक्तिगत कॉलम पर नहीं। 'Larry' अलग नंबर के साथ अनुमत है।
  • NULL मान: MySQL यूनिक इंडेक्स में एकाधिक NULL अनुमत करता है (प्रत्येक NULL अलग माना जाता है)।
  • मौजूदा टेबल पर जोड़ना: ALTER TABLE tbl ADD UNIQUE KEY uk_name (col1, col2);
  • नाम देना (StudentName_StudentMobileNumber) बाद में DROP INDEX के लिए उपयोगी।
  1. - MySQL में AUTO_INCREMENT डिफ़ॉल्ट रूप से साइन्ड (हस्ताक्षरित) होता है

    हां, MySQL में AUTO_INCREMENT कॉलम डिफ़ॉल्ट रूप से साइन्ड इंटीजर (धनात्मक और ऋणात्मक दोनों मान) होता है। उदाहरण: टेबल बनाना mysql> CREATE TABLE DemoTable ( -> MyNumber INT AUTO_INCREMENT PRIMARY KEY -> ); Query OK, 0 rows affected (0.45 sec) ऋणात्मक मानों सहित डेटा डालना आप AUTO

  1. - MySQL में ORDER BY NULL का उपयोग और MySQL 8.0 में इसका व्यवहार

    MySQL में ORDER BY NULL का उपयोग और विभिन्न संस्करणों में इसका व्यवहार। नोट: MySQL 5.7 से पहले, ORDER BY NULL ग्रुपिंग/अन्य ऑपरेशन से अंतर्निहित क्रमबद्धता को दबाने के लिए उपयोगी था। MySQL 8.0+ में, अंतर्निहित क्रमबद्धता व्यवहार बदल गया है और ORDER BY NULL निर्दिष्ट करना अब आवश्यक नहीं है। उदाहरण:

  1. - क्या हम MySQL में कॉलम का क्रम बदल सकते हैं?

    हाँ, हम कॉलम का क्रम बदल सकते हैं। यह ALTER कमांड और AFTER का उपयोग करके किया जा सकता है ताकि किसी व्यक्तिगत कॉलम का नया क्रम सेट किया जा सके। आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable -> ( -> `Student_Key_Age` int, -> `Student_Key_Name` varchar(20), -> `Student_Key_C