MySql数据库实现注册登录及个人信息查询的数据库设计
前言:
数据库使用的是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用户对应的数据了,如果需要更多的数据,可以分别创建更多的列表
相关文章:
MySql数据库实现注册登录及个人信息查询的数据库设计
前言: 数据库使用的是mysql 以下创建的表,实现以下功能: 用户1,账号admin,年龄20,关联3件商品 用户2,账号admin2,年龄30,关联2件商品(没有商品和用户1重复) 用户3,账号admin3,年龄50,关联2件商品(这两件商品均是用户1的其中两种) 登录查询对应数据的实现 1.创建用户表Users,并…...
C++-openssl-aes-cbc-pkcs5
PKCS#5填充是PKCS#7填充的一个子集,在PKCS#7填充时BlockSize为8的时候,PKCS#5与PKCS#7填充是一样的,在BlockSize不同时PKCS#5与PKCS#7填充是不同的。 PKCS#5填充是将数据填充到8的倍数, 填充后数据长度的计算公式: 定于…...
一个进程最多可以创建多少个线程基本分析
前言 话不多说,先来张脑图~ linux 虚拟内存知识回顾 虚拟内存空间长啥样 在 Linux 操作系统中,虚拟地址空间的内部又被分为内核空间和用户空间两部分,不同位数的系统,地址空间的范围也不同。比如最常见的 32 位和 64 位系统&…...
Swin Transformer V2 Scaling Up Capacity and Resolution(CVPR2022)
文章目录 AbstractIntroduction不稳定性问题下游任务需要的高分辨率问题解决内存问题- Related WorksLanguage networks and scaling upVision networks and scaling upTransferring across window / kernel resolution Swin Transformer V2Swin Transformer简介Scaling Up Mod…...
rust学习——字符串、字符串字面量、切片(slice)、字符串 slice
文章目录 字符串、字符串字面量、切片(slice)、字符串 slice01、字符串02、字符串字面量03、切片 (slice)04、字符串 slice 字符串 slice注意要点String 与 &str 的转换字符串深度剖析字符串 slice 作为函数参数例子001例子00…...
SolidWorks模型导入到Gazebo中
首先建立好solidworks模型,然后另存为stl格式, 导出为STL文件时,文件名最好不要是中文,并且要将后缀STL改为stl,否则Gazebo无法识别 这是我创建好的机器人充电桩模型: 尺寸是单位是mm: 135mm …...
使用CMake构建一个简单的C++项目
文章目录 一. 构建一个简单的项目二. 构建过程1. 创建程序源文件2. 编写CMakeList.txt文件3. 构建项目并编译源代码 附件 一. 构建一个简单的项目 最基本的CMake项目是从单个源代码文件构建的可执行文件。对于像这样的简单项目,只需要一个包含三个命令的CMakeLists…...
图论06-【无权无向】-图的遍历并查集Union Find-力扣695为例
文章目录 1. 代码仓库2. 思路2.1 UF变量设计2.2 UF合并两个集合2.3 查找当前顶点的父节点 find(element) 3. 完整代码 1. 代码仓库 https://github.com/Chufeng-Jiang/Graph-Theory 2. 思路 2.1 UF变量设计 parent数组保存着每个节点所指向的父节点的索引,初始值为…...
什么是卷积神经网络?解决了什么问题?
什么是卷积神经网络? 卷积神经网络(Convolutional Neural Network,CNN)是一种深度神经网络模型,主要用于图像识别、语音识别和自然语言处理等任务。它通过卷积层、池化层和全连接层来实现特征提取和分类。 解决了什么问…...
Golang数组:全面指南与实际示例
揭示Golang数组的威力:从基础到高级技巧 Golang数组是数据存储的基本构建块,为开发人员提供了多种可能性。在这篇正式的博客文章中,我们将探讨Golang数组,从基础知识到高级技巧。通过实际示例和正式的语气,我们将揭示…...
程序连接oracle查询数据的环境配置
连接oracle 数据库真麻烦,还是MySQL方便 Oracle Instant Client 这个东西的版本跟oracle的版本是有讲究的,引用文档的说明 Oracle 标准的客户端-服务器网络互操作性允许不同版本的 Oracle 客户端和 Oracle 数据库之间的连接。有关经过认证的配置&#…...
【BIGRU预测】基于双向门控循环单元的多变量时间序列预测(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
RDD算子操作(基本算子和常见算子)
目录 一、基本算子 1.map算子 2.flatMap算子 3.filter算子 4.foreach算子 5.saveAsTextFile算子 6.redueceByKey算子 二、常用Transformation算子 1.mapValues算子 2.groupBy算子 3.distinct算子 4.union算子 5.join算子 6.intersection算子 7.glom算子 8.groupByKey算…...
互联网Java工程师面试题·Java 面试篇·第五弹
目录 79、适配器模式和装饰器模式有什么区别? 80、适配器模式和代理模式之前有什么不同? 81、什么是模板方法模式? 82、什么时候使用访问者模式? 83、什么时候使用组合模式? 84、继承和组合之间有什么不同&#…...
常见的测试理论面试问题
请解释软件生存周期是什么? 软件生存周期是指从软件开发到维护的过程,包括可行性研究、需求分析、软件设计、编码、测试、发布和维护等活动。这个过程也被称为“生命周期模型”。 软件测试的目的是什么? 软件测试的目的是发现软件中的错误…...
把JS中的map方法玩出花来
一 map是什么 map(callbackFn) map(callbackFn, thisArg)map() 方法是一个迭代方法。它为数组中的每个元素调用一次提供的 callbackFn 函数,并用结果构建一个新数组。 参数 callbackFn 数组中的每个元素执行的函数。它的返回值作为一个元素被添加为新数组中。该…...
液晶显示计算器(延时程序)
#include "delay.h" /*------------------------------------------------ uS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请…...
线性代数2:梯队矩阵形式
图片来自 Europeana on Unsplash 一、前言 欢迎阅读的系列文章的第二篇文章,内容是线性代数的基础知识,线性代数是机器学习背后的基础数学。在我之前的文章中,我介绍了线性方程和系统、矩阵符号和行缩减运算。本文将介绍梯队矩阵形式…...
【JavaEE】网络编程(网络编程基础、Socket套接字)
一、网络编程基础 1.1、什么是网络编程? 网络编程,指网络上的主机,通过不同的进程,以编程的方式实现网络通信(或称为网络数据传输) 注意:我们只要满足进程不同就行;所以即便是同一…...
Node学习笔记之模块化
一、介绍 1.1 什么是模块化与模块 ? 将一个复杂的程序文件依据一定规则(规范)拆分成多个文件的过程称之为 模块化 其中拆分出的 每个文件就是一个模块 ,模块的内部数据是私有的,不过模块可以暴露内部数据以便其他 模块使用 1…...
终极SketchUp STL插件指南:3D打印模型转换快速上手教程
终极SketchUp STL插件指南:3D打印模型转换快速上手教程 【免费下载链接】sketchup-stl A SketchUp Ruby Extension that adds STL (STereoLithography) file format import and export. 项目地址: https://gitcode.com/gh_mirrors/sk/sketchup-stl 你是否曾为…...
OpenCV实战:用arcLength函数5分钟搞定轮廓周长计算(附完整C++代码)
OpenCV实战:5分钟掌握轮廓周长计算的核心技巧与工业级应用 在工业检测、生物医学图像分析和自动化测量领域,轮廓周长计算是最基础却至关重要的操作之一。想象一下这样的场景:生产线上的零件尺寸检测、显微镜下的细胞形态分析、农业中的叶片生…...
YYModel与主流框架对比:为什么它是最快的模型转换解决方案
YYModel与主流框架对比:为什么它是最快的模型转换解决方案 【免费下载链接】YYModel High performance model framework for iOS/OSX. 项目地址: https://gitcode.com/gh_mirrors/yy/YYModel 在iOS/OSX开发中,模型转换框架的性能直接影响应用的响…...
The Ultimate Guide to Ruby Timeouts:Web服务器和Rack中间件超时配置
The Ultimate Guide to Ruby Timeouts:Web服务器和Rack中间件超时配置 【免费下载链接】the-ultimate-guide-to-ruby-timeouts Timeouts for popular Ruby gems 项目地址: https://gitcode.com/gh_mirrors/th/the-ultimate-guide-to-ruby-timeouts 在Ruby应用…...
AudioSeal Pixel Studio快速上手:Streamlit本地启动+模型缓存路径配置指南
AudioSeal Pixel Studio快速上手:Streamlit本地启动模型缓存路径配置指南 1. 工具简介 AudioSeal Pixel Studio 是一款基于Meta开源的AudioSeal算法构建的专业音频水印工具。它能够在保持原始音频质量的前提下,为音频文件嵌入几乎不可察觉的数字水印&a…...
揭秘CLIP、Flamingo、Qwen-VL底层差异:为什么90%的多模态项目在第2层融合就失败?
第一章:多模态大模型架构设计原理详解 2026奇点智能技术大会(https://ml-summit.org) 多模态大模型的核心目标是实现跨模态语义对齐与联合表征学习,其架构设计需兼顾异构数据的编码能力、模态间交互的深度与效率,以及下游任务的泛化适配性。…...
了解pic单片机UPS电源吗?pic单片机有哪些优势和应用
对于pic单片机,很多朋友存在浓厚兴趣,为增进大家对pic单片机的了解,本文将从3方面介绍pic单片机:1.pic单片机UPS电源,2.pic单片机优势介绍,3.pic单片机应用。如果你是pic单片机的学习者,不妨一起…...
告别瞎拍!用SunCalc.org这个免费神器,提前规划你的城市风光大片(附黄金时刻实战案例)
告别瞎拍!用SunCalc.org精准规划城市风光大片的黄金时刻 站在上海外滩的观景台上,看着东方明珠塔在夕阳下泛着金色的光芒,你是否曾懊恼自己总是错过最佳拍摄时机?或是扛着三脚架在寒风中苦等两小时,却发现光线角度完全…...
WorkshopDL:跨平台游戏模组下载解决方案,让创意工坊资源触手可及
WorkshopDL:跨平台游戏模组下载解决方案,让创意工坊资源触手可及 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 面对Epic Games Store、GOG等非Steam平…...
PaddleOCR Docker CPU版 极简部署与实战测试
1. 5分钟搞定PaddleOCR Docker CPU版部署 第一次接触OCR技术时,我被那些复杂的依赖库和配置环境折磨得够呛。直到发现用Docker部署PaddleOCR CPU版本,整个过程突然变得简单到不可思议。下面我就用最直白的语言,带你走完从零部署到实际测试的全…...
