在MySQL中,一個關(guān)系型數(shù)據(jù)庫通常由多個表組成,這些表之間的關(guān)系可以使用主表和從表來表達。主表是數(shù)據(jù)庫中的重要表格,它通常是關(guān)系最強的表格。而從表一般是關(guān)系較弱、不太重要的表格。主表和從表之間至少有一個共同字段來建立連接,這個字段在主表中應該是主鍵,在從表中應該是外鍵。
CREATE TABLE `users` ( `id` int(10) UNSIGNED NOT NULL PRIMARY KEY, `username` varchar(255) NOT NULL, `password` varchar(255) NOT NULL ) ENGINE=InnoDB; CREATE TABLE `orders` ( `id` int(10) UNSIGNED NOT NULL PRIMARY KEY, `user_id` int(10) UNSIGNED NOT NULL, `order_no` varchar(255) NOT NULL, `price` decimal(10,2) UNSIGNED NOT NULL, CONSTRAINT `fk_orders_users` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB;
在上面的示例中,`users` 表是主表,`orders` 表是從表。在 `orders` 表中,`user_id` 字段是外鍵,它與 `users` 表中的 `id` 字段建立連接。這個連接表示每個訂單是屬于哪個用戶的。
在查詢或操作主表和從表的時候,我們需要使用一些特殊的操作來維護它們之間的關(guān)系。例如,當我們要添加一個新訂單時,我們需要先在 `users` 表中新增一個用戶,然后在 `orders` 表中添加新的訂單記錄,并把 `user_id` 設(shè)為相應的用戶 ID。這樣,訂單就和相應的用戶建立了關(guān)聯(lián)。
-- 新增用戶和訂單 INSERT INTO `users` (`id`, `username`, `password`) VALUES (1, 'Alice', 'pass123'); INSERT INTO `orders` (`id`, `user_id`, `order_no`, `price`) VALUES (1, 1, '00000001', 100.00);
當我們需要查詢某個用戶的所有訂單時,可以使用 `INNER JOIN` 操作把主表和從表連接起來:
-- 查詢 Alice 的所有訂單 SELECT o.* FROM `orders` o INNER JOIN `users` u ON o.`user_id` = u.`id` WHERE u.`username` = 'Alice';
在 MySQL 中,主表和從表的設(shè)計和使用是非常重要的部分,合理的設(shè)計和使用方法能夠提升數(shù)據(jù)庫的性能和可維護性。
上一篇css圖片固定寬高比