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

MySQL में फॉरेन की (Foreign Key) की मूल बातें

फॉरेन की दो टेबल के बीच संबंध लागू करती है। यह एक टेबल के कॉलम को दूसरी टेबल के प्राइमरी की (या यूनिक कॉलम) से जोड़ती है।

संबंध प्रकार

  • One-to-One: एक रिकॉर्ड दूसरी टेबल में ठीक एक रिकॉर्ड से जुड़ा होता है।
  • One-to-Many: एक रिकॉर्ड दूसरी टेबल में कई रिकॉर्ड से जुड़ा होता है (सबसे आम)।
  • Many-to-Many: जंक्शन टेबल के माध्यम से लागू होता है।

उदाहरण: One-to-Many (Parent-Child)

-- पैरेंट टेबल (Primary Key)
CREATE TABLE tblP (
    FK_PK INT PRIMARY KEY,
    LastName VARCHAR(100)
);

-- चाइल्ड टेबल (Foreign Key)
CREATE TABLE tblF (
    id INT,
    FirstName VARCHAR(100),
    FK_PK INT
);

-- फॉरेन की जोड़ना
ALTER TABLE tblF 
ADD CONSTRAINT ConstFK 
FOREIGN KEY (FK_PK) REFERENCES tblP(FK_PK);

सत्यापन

mysql> DESC tblF;
+-----------+--------------+------+-----+---------+-------+
| Field     | Type         | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| id        | int(11)      | YES  |     | NULL    |       |
| FirstName | varchar(100) | YES  |     | NULL    |       |
| FK_PK     | int(11)      | YES  | MUL | NULL    |       |  <-- MUL = इंडेक्स (FK)
+-----------+--------------+------+-----+---------+-------+

कैस्केड विकल्प

FOREIGN KEY (FK_PK) REFERENCES tblP(FK_PK)
    ON DELETE CASCADE      -- पैरेंट हटने पर चाइल्ड भी हटे
    ON UPDATE CASCADE      -- पैरेंट PK बदलने पर चाइल्ड FK अपडेट
    -- अन्य: SET NULL, RESTRICT (डिफ़ॉल्ट), NO ACTION

महत्वपूर्ण नियम

  • रेफरेंस्ड कॉलम इंडेक्स्ड होना चाहिए (प्राइमरी की या यूनिक)।
  • डेटा टाइप सटीक मेल खाना चाहिए।
  • दोनों टेबल समान इंजन (InnoDB) होने चाहिए।
  • MyISAM फॉरेन की समर्थन नहीं करता।

फॉरेन की देखना

SHOW CREATE TABLE tblF;
-- या
SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
WHERE TABLE_NAME = 'tblF' AND CONSTRAINT_NAME != 'PRIMARY';
  1. - MySQL में UPDATE JOIN से दूसरी टेबल के डेटा से पहली टेबल अपडेट करें

    UPDATE ... JOIN सिंटैक्स UPDATE targetTable tbl1 JOIN sourceTable tbl2 ON tbl1.commonCol = tbl2.commonCol SET tbl1.targetCol = tbl2.sourceCol; उदाहरण स्रोत टेबल (demo54): पूरा डेटा insert into demo54 values(John,Smith), (John,Smith), (David,Smith); लक्ष्य टेबल (demo55): lastName NULL insert int

  1. - MySQL में विदेशी कुंजी का उपयोग करना

    आइए समझते हैं कि MySQL में विदेशी कुंजी का उपयोग कैसे किया जा सकता है: InnoDB टेबल विदेशी कुंजी कंस्ट्रेंट जांच का समर्थन करते हैं। दो टेबल को जोड़ने के लिए केवल एक विदेशी कुंजी कंस्ट्रेंट आवश्यक नहीं है। इसका उपयोग स्टोरेज इंजन के अलावा InnoDB के लिए उपयोग किए जाने वाले कॉलम को परिभाषित करते समय

  1. - MySQL में दो अलग-अलग कीज़ (Keys) पर खोज: OR vs UNION

    दो अलग-अलग इंडेक्स्ड कॉलम (Keys) पर खोज करते समय, OR` की तुलना में `UNION` अक्सर बेहतर प्रदर्शन देता है क्योंकि यह प्रत्येक SELECT को अलग-अलग इंडेक्स उपयोग करने देता है। तरीका 1: OR ऑपरेटर (कम अनुकूलित) SELECT field1_index, field2_index FROM tableName WHERE field1_index = 1 OR field2_index = 1; M