欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql主表關聯3個表

錢琪琛2年前8瀏覽0評論

在開發過程中,通常需要將數據分散在多個表中,通過關聯這些表可以輕松地查詢和管理數據。在MySQL中,主表關聯多個表是非常常見的需求。下面我們就來一步步實現。

CREATE TABLE user (
user_id int(11) NOT NULL AUTO_INCREMENT,
name varchar(255) DEFAULT NULL,
email varchar(255) DEFAULT NULL,
created_at datetime DEFAULT NULL,
updated_at datetime DEFAULT NULL,
PRIMARY KEY (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE order (
order_id int(11) NOT NULL AUTO_INCREMENT,
user_id int(11) DEFAULT NULL,
amount decimal(7,2) DEFAULT NULL,
created_at datetime DEFAULT NULL,
updated_at datetime DEFAULT NULL,
PRIMARY KEY (order_id),
FOREIGN KEY (user_id) REFERENCES user (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE product (
product_id int(11) NOT NULL AUTO_INCREMENT,
name varchar(255) DEFAULT NULL,
price decimal(7,2) DEFAULT NULL,
created_at datetime DEFAULT NULL,
updated_at datetime DEFAULT NULL,
PRIMARY KEY (product_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE order_product (
order_id int(11) NOT NULL,
product_id int(11) NOT NULL,
quantity int(11) DEFAULT NULL,
PRIMARY KEY (order_id,product_id),
FOREIGN KEY (order_id) REFERENCES order (order_id),
FOREIGN KEY (product_id) REFERENCES product (product_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

代碼中定義了四個表:user、order、product和order_product。其中,order表和product表分別與order_product表關聯,而order表與user表也有關聯。這樣可以通過order_product表來查詢訂單中的具體商品,而用戶信息則通過user表與order表中的數據關聯。

下面我們來模擬一個查詢操作,查詢某個用戶在某段時間內的訂單以及訂單中的所有商品:

SELECT *
FROM user u
INNER JOIN order o ON o.user_id = u.user_id
INNER JOIN order_product op ON op.order_id = o.order_id
INNER JOIN product p ON p.product_id = op.product_id
WHERE u.user_id = 1 AND o.created_at >= '2022-01-01' AND o.created_at< '2022-03-01'

以上SQL語句查詢了user表中user_id為1的用戶在2022年1月1日到2月28日期間的所有訂單,以及這些訂單中的所有商品信息。使用INNER JOIN連接各個表之間的關聯,最終將所需數據查詢出來。