在mysql中,引用(也稱作外鍵)的作用是將兩個表聯(lián)系起來,建立起表與表之間的關(guān)系。
舉個例子,假設(shè)我們有兩個表,分別是學(xué)生表和班級表,學(xué)生表中有一個列是班級id,用來標(biāo)識該學(xué)生所在的班級,而班級表中有一個列是班級id,用來唯一標(biāo)識每個班級。如果我們要查詢某個班級中有哪些學(xué)生,就需要將這兩個表聯(lián)系起來。
假設(shè)學(xué)生表中的班級id列和班級表中的班級id列是同一個類型,我們可以在學(xué)生表中添加一個外鍵,指向班級表中的班級id列。在創(chuàng)建學(xué)生表時,我們可以這樣寫:
CREATE TABLE student ( student_id INT PRIMARY KEY, name VARCHAR(50), class_id INT, FOREIGN KEY (class_id) REFERENCES class(class_id) );
這里,我們使用了FOREIGN KEY關(guān)鍵字來指定class_id列是一個外鍵,它引用了class表中的class_id列。這意味著,當(dāng)我們從student表中查詢班級id為某個值的學(xué)生時,mysql會自動將class_id列與class表中的class_id列進行比較,找到對應(yīng)的班級。
引用的另一個作用是保證數(shù)據(jù)的完整性。在上面的例子中,由于class_id列是一個外鍵,mysql會在插入和更新數(shù)據(jù)時檢查該列的值是否存在于class表中。如果不存在,mysql會拒絕該操作,從而保證了數(shù)據(jù)的完整性。