在mysql的數據庫中,有一種常見的關系叫做“一對多”關系。指的是在關系型數據庫中,一條記錄在一個表中與多條記錄關聯在另一個表中的情況。
舉個例子來說,假設我們有兩張表,一張是訂單表,一張是訂單詳情表。一條訂單表記錄可以對應多條訂單詳情表記錄。那么在訂單表中,我們可以用一個唯一的訂單號來標識一條記錄,而在訂單詳情表中,我們則需要在記錄中添加一個外鍵,用來指向訂單表中的訂單號。
CREATE TABLE `order` ( `id` INT(10) NOT NULL AUTO_INCREMENT, `order_no` VARCHAR(20) NOT NULL, `customer_name` VARCHAR(50) NOT NULL, `total_price` DECIMAL(10,2) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB; CREATE TABLE `order_detail` ( `id` INT(10) NOT NULL AUTO_INCREMENT, `order_no` VARCHAR(20) NOT NULL, `product_name` VARCHAR(50) NOT NULL, `price` DECIMAL(10,2) NOT NULL, `quantity` INT(10) NOT NULL, PRIMARY KEY (`id`), FOREIGN KEY (`order_no`) REFERENCES `order` (`order_no`) ) ENGINE=INNODB;
在這段SQL代碼中,我們可以看到order_detail表中的`order_no`列添加了一個外鍵約束,用來指向order表中的`order_no`列。
這樣一來,我們就可以通過JOIN操作將兩張表關聯起來,從而查詢到一條訂單對應的所有訂單詳情,或者查詢某個訂單詳情所對應的訂單信息。