当前位置: 首页 > news >正文

【javaWeb技术】·外卖点餐小程序(脚手架学习1·数据库)

🌈 个人主页:十二月的猫-CSDN博客
🔥 系列专栏: 🏀系统学javaWeb开发_十二月的猫的博客-CSDN博客

💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 

【免费】项目脚手架进个人主页下载!!!!  【javaWeb技术】专栏专用脚手架资源-CSDN文库

目录

1. Navicat

1.1 Navicat是什么

1.2 Navicat的使用

1.2.1 创建连接

1.2.1.1 创建连接:点击连接-》选择要连接的数据库-》建立连接

1.2.1.2 创建连接:输入MySQL连接账号-》和账号对应MySQL建立连接

1.2.2 创建数据库

1.2.2.1 创建数据库:选中连接名、右键、点击新建数据库;

2. 在数据库中建表

2.1 设置数据库

2.2 建立第一张表格admin

2.3 插入第一条admin记录 

2.4 创建第二个数据库表notice,并插入数据

3、在数据库中运行SQL语句

3.1 完整SQL语句如下:

3.2 运行SQL文件

5. 总结


1. Navicat

1.1 Navicat是什么

在学习数据库的时候,经常接触到Navicat这个管理数据库的工具。Navicat是以直觉化的图形用户界面而建的,可以让使用者安全并简单的方式创建、组织、访问并共用信息。它可以用来对本机或远程的MySQL、SQL server、SQLite、Oracle及PostgreSQL数据库进行管理及开发。

1.2 Navicat的使用

1.2.1 创建连接

我们知道,下载MySQL时会要求我们创建一个MySQL账号,一个MySQL就对应一个账号。

这个账号可以认为是连接账号

简单理解:想要连接本机的MySQL,必须要通过这个账号  

因此,我们在本机上使用MySQL,必须要通过这个账号和本机的MySQL建立连接

1.2.1.1 创建连接:点击连接-》选择要连接的数据库-》建立连接

1.2.1.2 创建连接:输入MySQL连接账号-》和账号对应MySQL建立连接

主机:要连接的数据库管理系统(MySQL、Oracle等)所在的位置(localhost指在本机上)

端口:这个连接所占用的端口

账户:数据库管理系统的账户

连接名习惯:

1、这里是和本机的MySQL建立连接,因此我的连接名字就叫做localhost_MySQL,3306是连接的端口号 。

2、后面如果是连其他服务器(非本机)上面的MySQL可以将localhost修改为对应服务器名字(例如:阿里服务器、华为云服务器)

3、如果连接的是Oracle数据库,则可以修改为localhost_Oracle

4、如果端口号不是3306,也可以直接修改连接名

1.2.2 创建数据库

通过上一步,我们已经和MySQL数据库创建了连接。因此,我们可以通过创建的连接在MySQL中创建数据库(MySQL是一个数据库管理系统)

1.2.2.1 创建数据库:选中连接名、右键、点击新建数据库;

1、脚手架中的数据库名字为:manager

2、字符集选择utf8mb4

3、排序规则如上图

得到数据库manager如下:

2. 在数据库中建表

2.1 设置数据库

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

1、names:设定数据库的字符类型为utf8mb4

2、 SET FOREIGN_KEY_CHECKS = 0;: 临时禁用外键约束检查。这样可以在删除和创建数据库时避免外键约束错误(因为外键约束,不让你删除一些表)

2.2 建立第一张表格admin

DROP TABLE IF EXISTS `admin`;
CREATE TABLE `admin`  (`id` int(10) NOT NULL AUTO_INCREMENT COMMENT 'ID',`username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '用户名',`password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '密码',`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '姓名',`avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '头像',`role` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '角色标识',`phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '电话',`email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '邮箱',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '管理员' ROW_FORMAT = DYNAMIC;

DROP TABLE IF EXISTS `admin`:

1、如果admin表格存在,则删除该表格

 AUTO_INCREMENT COMMENT 'ID':

1、auto_increment(自动增加):每添加一条记录该列指自动增加1

2、comment(注释):作用和java中的//类似,可以通过特殊语句查看数据库表格的注释

CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL :

1、character set:设定列值的字符类型

2、collate:设定列数据的排列方式

3、null default null:列值允许为null,且默认为null

ENGINE = InnoDB AUTO_INCREMENT = 2  ROW_FORMAT = DYNAMIC:

1、ENGINE = InnoDB:使用InnoDB存储引擎

2、AUTO_INCREMENT = 2:从2开始自动增加

3、ROW_FORMAT = DYNAMIC:在该存储引擎中采用dynamic的行存储格式

知识点拓展:

在 MySQL 中,尤其是 InnoDB 存储引擎中,行格式(Row Format)决定了数据如何在表中存储。不同的行格式适用于不同的场景,能够影响性能和存储效率。以下是 MySQL 中几种常见的行格式:

Compact

- 描述::
  - 这是 InnoDB 的默认行格式。
  - 采用紧凑的存储格式,优化了存储效率和性能。
  - 列的 NULL 标记和长度信息被压缩,适用于大多数常见的场景。
- 优点: 
  - 相对较高的存储效率和良好的性能。
  - 适合大多数应用。

Redundant

- 描述:
  - 这是旧版本 InnoDB 的默认行格式,已经不推荐使用。
  - 存储了冗余的列信息,数据存储方式不够紧凑。
- 优点:
  - 兼容性:对某些老旧应用或数据的兼容性较好。
- 缺点:
  - 存储效率较低。
  - 可能导致性能下降。

Dynamic

- 描述:
  - 行格式优化了存储可变长度列,如 `VARCHAR` 和 `TEXT` 列。
  - 大字段数据(如 `TEXT` 和 `BLOB` 类型)可以存储在独立的页中,而不是直接存储在行数据页中。
- 优点:
  - 更高的存储效率,尤其是对于包含大量大字段的表。
  - 支持更高的性能和更大的字段长度。
- 缺点:
  - 读取大字段时可能会涉及额外的页访问。

Compressed

- 描述:
  - 行数据经过压缩,以节省存储空间。
  - 压缩后,数据和索引都存储在压缩的格式中。
- 优点:
  - 大幅度减少存储需求。
  - 有助于减少 I/O 操作,因为需要读取的数据量减少了。
- 缺点:
  - 压缩和解压缩过程可能会增加 CPU 使用率。
  - 对写操作的性能影响可能较大。

2.3 插入第一条admin记录 

INSERT INTO `admin` VALUES (1, 'admin', 'admin', '管理员', 'http://localhost:9090/files/1697438073596-avatar.png','ADMIN', '13677889922', 'admin@xm.com');

2.4 创建第二个数据库表notice,并插入数据

DROP TABLE IF EXISTS `notice`;
CREATE TABLE `notice`  (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',`title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '标题',`content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '内容',`time` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '创建时间',`user` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '创建人',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '公告信息表' ROW_FORMAT = DYNAMIC;-- ----------------------------
-- Records of notice
-- ----------------------------
INSERT INTO `notice` VALUES (1, '今天系统正式上线,开始内测', '今天系统正式上线,开始内测', '2023-09-05', 'admin');
INSERT INTO `notice` VALUES (2, '所有功能都已完成,可以正常使用', '所有功能都已完成,可以正常使用', '2023-09-05', 'admin');
INSERT INTO `notice` VALUES (3, '今天天气很不错,可以出去一起玩了', '今天天气很不错,可以出去一起玩了', '2023-09-05', 'admin');SET FOREIGN_KEY_CHECKS = 1;

注意:

1、开始:SET FOREIGN_KEY_CHECKS = 0;

      结束:SET FOREIGN_KEY_CHECKS = 1;

原因在于:操作过程中存在删除表的可能性,临时禁用外键约束检查,防止删除时报错

3、在数据库中运行SQL语句

3.1 完整SQL语句如下:

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table for admin
-- ----------------------------
DROP TABLE IF EXISTS `admin`;
CREATE TABLE `admin`  (`id` int(10) NOT NULL AUTO_INCREMENT COMMENT 'ID',`username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '用户名',`password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '密码',`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '姓名',`avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '头像',`role` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '角色标识',`phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '电话',`email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '邮箱',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '管理员' ROW_FORMAT = DYNAMIC;-- ----------------------------
-- Records of admin
-- ----------------------------
INSERT INTO `admin` VALUES (1, 'admin', 'admin', '管理员', 'http://localhost:9090/files/1697438073596-avatar.png','ADMIN', '13677889922', 'admin@xm.com');-- ----------------------------
-- Table for notice
-- ----------------------------
DROP TABLE IF EXISTS `notice`;
CREATE TABLE `notice`  (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',`title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '标题',`content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '内容',`time` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '创建时间',`user` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '创建人',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '公告信息表' ROW_FORMAT = DYNAMIC;-- ----------------------------
-- Records of notice
-- ----------------------------
INSERT INTO `notice` VALUES (1, '今天系统正式上线,开始内测', '今天系统正式上线,开始内测', '2023-09-05', 'admin');
INSERT INTO `notice` VALUES (2, '所有功能都已完成,可以正常使用', '所有功能都已完成,可以正常使用', '2023-09-05', 'admin');
INSERT INTO `notice` VALUES (3, '今天天气很不错,可以出去一起玩了', '今天天气很不错,可以出去一起玩了', '2023-09-05', 'admin');SET FOREIGN_KEY_CHECKS = 1;

3.2 运行SQL文件

右键manager-》运行SQL文件:

结果如下:

5. 总结

在下一篇文章中,我们将开始我们的项目学习!!!!

首先先学习项目的脚手架,我会对脚手架的代码进行深入的讲解

在充分理解脚手架的源码后,我们再基于脚手架进行外卖项目的开发 

如果想要学习,大家可以点个关注并订阅,跟着猫猫一起

你的点赞就是我更新的动力,如果觉得对你有帮助,辛苦友友点个赞,收个藏呀~~~

相关文章:

【javaWeb技术】·外卖点餐小程序(脚手架学习1·数据库)

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀系统学javaWeb开发_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 【免费】项…...

LVS 实现四层负载均衡项目实战--DR模式

一、环境准备 主机名IP地址router eth0:172.25.254.100 eth1:192.168.0.100 clienteth0:172.25.254.200lvseth1:192.168.0.50web1web2 1、client配置 [rootclient ~]# cat /etc/NetworkManager/system-connections/eth0.nmconne…...

Python与Qt的对应版本

Python与Qt的对应版本并没有严格的一一对应关系,但通常在使用Python与Qt进行开发时,会选择一个兼容性较好的版本组合。Qt的Python绑定库主要是PyQt和PySide,以下是几个常见的搭配: 1. **PyQt5**: - Python 3.5及以上版…...

WPF篇(12)-Image图像控件+GroupBox标题容器控件

Image图像控件 Image也算是独门独户的控件,因为它是直接继承于FrameworkElement基类。 Image控件就是图像显示控件。Image类能够加载显示的图片格式有.bmp、.gif、.ico、.jpg、.png、.wdp 和 .tiff。要注意的是,加载.gif动画图片时,仅显示第…...

LeetCode 热题 HOT 100 (024/100)【宇宙最简单版】

【哈希表】No. 0128 最长连续序列【中等】👉力扣对应题目指路 希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 欢迎关注、订阅专栏 【力扣详解】谢谢你的支持&am…...

如何在AWS上进行 环境迁移

在 AWS 上进行环境迁移通常包括以下几个步骤和最佳实践: 1. 评估和规划 评估当前环境:审查现有的应用程序、数据库、网络架构和依赖关系。确定迁移目标:明确迁移的目标(如成本节约、性能提升、可扩展性等)。选择迁移策略:根据应用程序的类型和复杂性,选择合适的迁移策略…...

云服务器和物理服务器的优缺点对比

云服务器优点在于灵活性强、成本效益高、易于扩展且支持全球化部署;缺点则包括安全性与可控性相对较弱,性能可能受限,以及存在服务中断风险。物理服务器则以其高性能、高稳定性、强安全性和完全可控性著称,但成本较高、扩展性受限…...

postgreSQL16添加审计功能

下载审计插件 https://github.com/pgaudit/pgaudit/releases他的分支版本支持不同的PGSQL按需下载 编译安装审计插件 tar -xvf pgaudit-16.0.tar.gzmake install USE_PGXS1 PG_CONFIG/app/postgresql/bin/pg_config启用postgreSQL审计功能 修改配置文件# 启用 pgAudit shar…...

如何应用OceanBase 的实时SQL诊断,解决AP场景下的痛点

随着数据量的快速增长与用户需求的变化,数据库的管理与优化工作日益凸显其重要性。作为DBA及开发者,您是否曾面临以下挑战: ○ 分析场景下,在处理大规模数据的且耗时较长的查询是,常涉及海量数据的处理及复杂的计算&…...

【数据结构】—— 栈

一、栈的基本概念1、栈的定义2、栈的常见基本操作 二、栈的顺序存储1、栈的顺序存储结构2、顺序栈存储实现(1)初始化(2)判空(3)进栈(4)出栈(5)取栈顶元素&…...

Kafka服务端日志详解

文章目录 服务端日志Topic消息存储方式主体介绍log文件追加记录消息index和timeindex索引文件 日志文件清理Kafka的文件高效读写机制Kafka的文件结构顺序写磁盘零拷贝 合理配置刷盘频率客户端消费进度管理 服务端日志 Kafka的日志信息是通过conf/server.properties文件中的log…...

C++ 数据语义学——进程内存空间布局

进程内存空间布局 1. 栈(堆栈/栈区)2. 堆(堆区)3. BSS段4. 数据段5. 代码段进程内存空间布局示意图可执行文件的内存布局示例代码 当把一个可执行文件加载到内存后,就变成了一个进程。这个虚拟空间(内存&am…...

【数据结构】六、图:2.邻接矩阵、邻接表(有向图、无向图、带权图)

二、存储结构 文章目录 二、存储结构❗1.邻接矩阵1.1无向图❗邻接矩阵-无向图代码-C 1.2有向图❗邻接矩阵-有向图代码-C 1.3带权图1.4性能分析1.5相乘 ❗2.邻接表2.1无向图2.2有向图❗邻接表-C 邻接矩阵VS邻接表邻接矩阵邻接表 ❗1.邻接矩阵 图的邻接矩阵(Adjacency Matrix) 存…...

财务会计与管理会计(三)

文章目录 销售回款提成表MATCH函数的模糊查询在提成类业务中的应用 营业收入分类数据分析OFFSET函数在制作图表数据中的应用 自动生成销售记录对账单VLOOKUP函数的应用 销售回款提成表 MATCH函数的模糊查询在提成类业务中的应用 G3INDEX(I$1:M$1,MATCH(E3,H3:M3,1)) G3INDEX(…...

【数据结构和算法】(基础篇三)——栈和队列

栈和队列 栈(Stack)和队列(Queue)是两种非常基本的数据结构,它们主要用于存储和检索元素。尽管它们都用于管理一组数据项,但它们的访问规则和数组都是不同的。 栈 栈是一种后进先出(Last In,…...

Linux截图工具gsnap移植arm平台过程记录

Linux截图工具gsnap移植arm平台过程记录 最近工作中一款新产品开发接近尾声,需要写文档截图产品图形,找了一款开源的Linux截屏工具gsnap,将其移植到ARM产品中,这里记录一下移植过程。 gsnap 这个工具源代码就是一个C语言源文件&a…...

密码学知识点02

#来自ウルトラマンレオ(雷欧) 1 常见加密方式 2 对称加密 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。 常见加密算法: DES : Data…...

实现Pytest测试用例按顺序循环执行多次

要实现测试用例按顺序循环执行多次,可以使用 pytest 的自定义装饰器或插件。这里有两种方法可以实现这个需求: 方法一:使用 pytest-repeat 插件 pytest-repeat 插件允许你重复执行测试用例。你可以使用 --count 参数来指定每个测试用例的执…...

SVN工作原理和使用示例

SVN(Subversion)是另一种版本控制系统,用于管理项目文件及其变更历史。与Git不同,SVN是集中式版本控制系统,这意味着所有版本控制操作都集中在一个中央服务器上。以下是SVN的工作原理和基本使用示例。 目录 SVN 工作…...

云服务器部署Java+Vue前后端分离项目

1、申请一个云服务器 选择云服务器:阿里云、腾讯云、百度云、京东云、华为云等等,我使用的是阿里云服务器。 2、远程链接服务器 使用FinalShell工具或者其他远程工具,使用SSH链接,主机地址要填写阿里云服务的公网ip,如…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...

ios苹果系统,js 滑动屏幕、锚定无效

现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...

AspectJ 在 Android 中的完整使用指南

一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四&#xff…...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...