MySql数据库实现注册登录及个人信息查询的数据库设计

news2024/10/6 14:31:57

前言:

数据库使用的是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用户对应的数据了,如果需要更多的数据,可以分别创建更多的列表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1121638.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【SmartApi】v1.1.0版本发布

历史版本介绍 SmartApi-v1.0.0使用说明 新增功能 Email分享文档导入接口数据-目前仅支持apiPost、SmartApi数据导入 Email分享文档 效果如下: 使用说明: 进行邮箱配置;公网可以使用163、QQ等免费邮箱服务收件人列表用逗号隔开即可&…

PKU 概率论+数理统计 期中考复习总结

这里写目录标题 计算条件概率计算概率(放回与不放回)生成随机数算法Uniformity (test of frequency)1.Chi-Square test2.Kolmogorov-Sminov test Independence (test of autocorrelation)Runs test Acceptance-rejection methodmethod方法1:建…

【Java基础面试三十九】、 finally是无条件执行的吗?

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官: finally是无条件执行的…

Git使用指南

Git指南 删除文件后无法Pull 问题描述 在删除文件后使用Pull无法拉取文件 解决方法 使用Git Bash输入以下命令 git fetch --all git reset --hard origin/master git pull切换当前分支 Pull卡死在进度条 问题描述 在使用Pull时没有报错,但是无法完成拉取 解决方…

2023-10-22 LeetCode每日一题(做菜顺序)

2023-10-22每日一题 一、题目编号 1402. 做菜顺序二、题目链接 点击跳转到题目位置 三、题目描述 一个厨师收集了他 n 道菜的满意程度 satisfaction ,这个厨师做出每道菜的时间都是 1 单位时间。 一道菜的 「 like-time 系数 」定义为烹饪这道菜结束的时间&am…

【Java 进阶篇】手把手教你创建 Bootstrap 旅游网站

随着互联网的普及,旅游行业在全球范围内迅速发展。人们通过网络规划、预订和分享他们的旅行经历。因此,拥有一个令人印象深刻的旅游网站对于吸引游客和提供有用信息至关重要。在本篇博客中,我们将手把手教您如何创建一个令人兴奋的旅游网站&a…

用matlab求解线性规划

文章目录 1、用单纯形表求解线性规划绘制单纯形表求解: 2、用matlab求解线性规划——linprog()函数问题:补充代码:显示出完整的影子价格向量 1、用单纯形表求解线性规划 求解线性规划 m i n − 3 x 1 − 4 x 2 x 3 min -3x_1-4x_2x_3 min−…

通过内网穿透快速搭建公网可访问的Spring Boot接口调试环境

🔥博客主页: 小羊失眠啦 🔖系列专栏: C语言 、Cpolar、Linux ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 前言1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 …

【Java基础面试三十六】、遇到过异常吗,如何处理?

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:遇到过异常吗&#xff0…

敏捷是怎么提高工作效率的

敏捷管理是一门极力减少不必要工作量的艺术。 谷歌、亚马逊、苹果、微信、京东等全球 500 强企业都在用的管理方法,适用于各行各业,被盛赞为应获“管理学的诺贝尔奖”。 它专注于让员工不受种种杂事的羁绊,激发个体斗志,释放出巨大…

HashMap LinkedHashMap

1. HashMap概述 定义:HashMap根据键的hash值来存储数据 底层: JDK1.7底层:数组链表JDK1.8底层:数组链表红黑树 当链表长度达到8且数组长度长于64时,就会转换成红黑树(红黑树阈值)如果数组长度小…

如何成为开源组件库NutUI的contributor:解决issue并提交PR

前言 NutUI 是一套京东风格的轻量级移动端组件库。自诞生以来,一直在紧跟技术的发展不断推陈出新,始终保持稳健的发展态势,从一个单一的基础组件库发展到如今服务于数千开发者的多端 UI 组件库。NutUI 的成长离不开团队成员的努力&#xff0…

基于WebRTC的程序因虚拟内存不足导致闪退问题的排查以及解决办法的探究

目录 1、WebRTC简介 2、问题现象描述 3、将Windbg附加到目标进程上分析 3.1、Windbg没有附加到主程序进程上,没有感知到异常或中断 3.2、Windbg感知到了中断,中断在DebugBreak函数调用上 3.3、32位进程用户态虚拟地址和内核态虚拟地址的划分 …

JVM的几个面试重点

JVM的内存区域划分 JVM类加载机制 前言 Java程序最开始是一个 .java 的文件,JVM把它编译成 .closs 文件(字节码文件),运行 Java 程序, JVM 就会读取 .class 文件,把文件内容读取到内存中,构造出…

C++:为什么析构函数一般写为虚函数

如果没有继承关系,析构函数写不写为虚函数都可以。 如果有继承关系、有多态性的使用需求时,就需要把析构函数写为虚函数,这样可以避免潜在的内存泄漏问题。 比如:当一个类被设计为作为基类,并且通过基类指针或引用dele…

【网络爬虫 | Python】数字货币ok链上bitcoin大额交易实时爬取,存入 mysql 数据库

文章目录 一、网站分析二、js 逆向获取 X-Apikey三、python 调用 js 获取 X-Apikey四、python 爬虫部分五、mysql 数据库、日志、配置文件、目录结构六、结尾 一、网站分析 oklink:https://www.oklink.com/ btc 大额交易:https://www.oklink.com/btc/tx-…

Fiddler抓包VSCode和探索

前言: 最近在使用 VSCode 调试 web 程序时,遇到一些问题,当时不知道如何是好。所以决定抓看来看一看,然后一顿操作猛如虎,成功安装了抓包软件 – Fiddler Classic。我并没有使用 Postman 这种重量级的 HTTP 测试软件&a…

windows系统kettle9.3一键安装启动

程序下载、解压 通过百度网盘下载,直接解压即可 解压之后 双击运行 程序路径 pdi-ce-9.3.0.0-428一键安装启动\pdi-ce-9.3.0.0-428\data-integration

【FA-BP预测】基于萤火虫算法优化BP神经网络回归预测研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Linux中常见的权限问题

目录 前言1. 目录权限2. umask3. 粘滞位结语 前言 在了解完上一篇文章 Linux权限的理解与操作 之后,还有一些比较常见的权限问题需要我们去了解。其中包括目录的权限,umask 以及 粘滞位的使用。 1. 目录权限 问题一:进入一个目录&#xff0…