前言:
数据库使用的是mysql
以下创建的表,实现以下功能:
用户1,账号admin,年龄20,关联3件商品
用户2,账号admin2,年龄30,关联2件商品(没有商品和用户1重复)
用户3,账号admin3,年龄50,关联2件商品(这两件商品均是用户1的其中两种)
登录查询对应数据的实现
1.创建用户表Users,并添加三条数据:
CREATE TABLE Users (
user_id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(255) NOT NULL,
age INT
);
-- 插入用户数据
INSERT INTO Users (username, age) VALUES ('admin', 20);
INSERT INTO Users (username, age) VALUES ('admin2', 30);
INSERT INTO Users (username, age) VALUES ('admin3', 50);
2.创建购物车商品表ShoppingCart,并添加相应数据(模拟数据):
CREATE TABLE ShoppingCart (
item_id INT PRIMARY KEY AUTO_INCREMENT,
item_name VARCHAR(255) NOT NULL
);
-- 插入购物车商品数据
INSERT INTO ShoppingCart (item_name) VALUES ('商品1');
INSERT INTO ShoppingCart (item_name) VALUES ('商品2');
INSERT INTO ShoppingCart (item_name) VALUES ('商品3');
INSERT INTO ShoppingCart (item_name) VALUES ('商品4');
INSERT INTO ShoppingCart (item_name) VALUES ('商品5');
3.创建用户与购物车商品的关联表 (UserItem):
CREATE TABLE UserItem (
user_id INT,
item_id INT,
PRIMARY KEY (user_id, item_id),
FOREIGN KEY (user_id) REFERENCES Users(user_id),
FOREIGN KEY (item_id) REFERENCES ShoppingCart(item_id)
);
-- 插入用户与购物车商品的关联数据
-- 用户1 (admin) 有三件商品(参数一是用户表id,参数二是商品表id,后面还可以添加其他与此用户相关联的表)
INSERT INTO UserItem (user_id, item_id) VALUES (1, 1);
INSERT INTO UserItem (user_id, item_id) VALUES (1, 2);
INSERT INTO UserItem (user_id, item_id) VALUES (1, 3);
-- 用户2 (admin2) 有两件商品(与用户1没相同的)
INSERT INTO UserItem (user_id, item_id) VALUES (2, 4);
INSERT INTO UserItem (user_id, item_id) VALUES (2, 5);
-- 用户3 (admin3) 有两件商品,都与用户1 (admin) 相同
INSERT INTO UserItem (user_id, item_id) VALUES (3, 1);
INSERT INTO UserItem (user_id, item_id) VALUES (3, 2);
4.查询对应的数据
SELECT Users.username, Users.age, ShoppingCart.item_name
FROM Users
LEFT JOIN UserItem ON Users.user_id = UserItem.user_id
LEFT JOIN ShoppingCart ON UserItem.item_id = ShoppingCart.item_id
WHERE Users.username = 'admin2';
-- 这个名字就是用户名(根据用户名查询的,使用了左连接,如果查询不到匹配的值,左连接的右边没有匹配的数据会显示null)
打印结果如下:
admin2打印结果
admin打印结果
admin3打印结果
注册新用户关联的实现
1.插入新的注册信息
插入用户信息:首先,插入新用户的信息到 Users 表。假设新用户的用户名是 admin4 年龄是 25,可以执行以下 SQL 语句
INSERT INTO Users (username, age) VALUES ('admin4', 25);
这样就添加用户成功了,执行上面的查询语句会打印出数据,但是商品那里就是null,因为还没有添加商品
2.给新用户添加商品
2.1 获取新用户的用户ID:新用户的用户ID是自动生成的(通常是自动递增的),可以使用 LAST_INSERT_ID() 函数来获取新用户的用户ID:
SELECT LAST_INSERT_ID() AS new_user_id;
2.2 将新用户与商品信息绑定:可以将新用户与商品信息绑定,以便以后可以直接添加商品。假设要将新用户与商品1和商品2绑定,执行以下 SQL 语句:
-- 将新用户与商品1和商品2绑定
INSERT INTO UserItem (user_id, item_id) VALUES (new_user_id, 1);
INSERT INTO UserItem (user_id, item_id) VALUES (new_user_id, 2);
2.3,现在商品就和用户绑定了,再次执行一下上面的查询语句查询一下
SELECT Users.username, Users.age, ShoppingCart.item_name
FROM Users
LEFT JOIN UserItem ON Users.user_id = UserItem.user_id
LEFT JOIN ShoppingCart ON UserItem.item_id = ShoppingCart.item_id
WHERE Users.username = 'admin4';
这里已经成功查询到了admin4用户对应的数据了,如果需要更多的数据,可以分别创建更多的列表