JavaWeb开发02-MYSQL-DDL-DML-DQL-多表设计-多表查询-事务-索引

一、MySQL概述

通过SQL语句可以操作数据库

关系型数据库:

只要是关系型数据库就可以用SQL语句这一统一标准进行操作数据库

1.MYSQL数据模型

客户端通过SQL语句交给了数据库管理系统DBMS,进行相应操作,创建一个一个数据库,体现为一个一个文件夹,其相互独立,再在数据库中可以创建一个一个二维表数据。

2.SQL简介

二、MYSQL-DDL

1.SQL语句

首先进行数据库设计

查询当前数据库,就是到后面不知道是哪个数据库的时候使用

2.MYSQL客户端工具

IDEA集成了这个工具

3.表的创建

SQL语句varchar()是字符串

创建表后就可以定义内容:新建和上传

但是发现id可以重复,所以要用到约束:

auto_increment会自动增加,默认从1

id是唯一标识,所以它使用primary key,而username不是标识所以使用not null 和unique

4.表的创建-数据类型

数值类型:

在后面加上 unsigned是无符号
年龄:age tinyint unsigned

小数前一个是整数位后一个是小数位
分数score double(4,1)

字符串类型:

对于性别数量确定的就是用char。

日期:

若是生日这种日期使用date,是操作时间需要准确时间点就用datetime.

案例:

4.表的操作-查询&修改

是对表头进行修改

下拉就行;打开表;右键edit

可以直接图形化操作

删除右键drop就行

三、MYSQL-DML

1.添加数据

2.更新数据

如果没有where语句就会更新所有该列字段的值

3.删除数据

四、MYSQL-DQL

1.基本查询

需要什么数据都罗列出来

设置别名若有空格或者其他符号使用引号

这样可以看所有种类

2.条件查询

模糊查询下划线代表单个字符,%代表任意字符

3.分组查询

①聚合函数

②分组查询

返回的是两类一个是gender一个是聚合函数

分组后还有条件筛选就使用having关键字

执行顺序,先进行where的过滤,不满足条件的是不会进行分组操作的,第二部分就是分组操作和聚合函数,第三部分就是对分组后的再进行条件过滤

4.排序查询

排序查询就是在之前的查询中在后面使用order by来进行升序降序排序

如果有两个参数,代表之前参数相同时按第二个排序

5.分页查询

案例:

语句太长可以按ctrl+alt+L

这里时如果gender=1取的是男性员工,否是女性员工,性别是表头别称,

五、MYSQL-多表设计

1.一对多

多的一方添加外键关联多的一方

①概述

一个部门有多个员工

创建部门表和员工表

员工表中的dept_id就代表了部门中的主键id

②外键

可以发现之前中两个表之间,删除父表中的数据,子表不会发生变动,两个表相互独立

通过外键约束

子表中的dept_id是外键字段

没有关联才可以删除

现在一般不使用外键,通过代码保证逻辑性

2.一对一

将一个用户信息拆分为两个,由于基本信息经常调用,而身份信息不经常这样拆分提高效率

如何实现一对一

3.多对多

使用外键太复杂

案例:

分类表包含:菜品分类和套餐分类,菜品与分类表是一对多,套餐和分类表也是一对多,而菜品和套餐是多对多

分类表:

菜品表:

套餐表:

套餐菜品关系表:

记录的是这个套餐下这个菜品的份数

六、MYSQL-多表查询

这样查询会出现笛卡尔积:

让dept_id和id相同条件

1.内连接查询

inner可以省略

如果表名太长可以起别名:

2.外连接查询

左外连接就会查询到左边自己部分和交集部分

左外连接会完全包含左表的数据以及交集数据,语句中left jion就是说左边表全部保留

3.子查询

①标量子查询

对于a就是子查询

本来两条语句可以合并成一条

②列子查询

in意思也是属于的意思

③行子查询

④表子查询

作为临时表,限制查询范围,在临时表的基础上进行查询

案例:

是多表设计中的案例信息

查询如何书写:首先看需要哪些表,先写出查询中表之间的关系语句,再添加相应的条件,没有特殊说明关系就采用内连接

  

查询了不同分类中最高的价格,就得对菜品按分类进行分组,并查询出每组中最高的价格

只要分组了就得有聚合函数

要查询哪几个表就先在from后罗列出来,然后在where后将这几个表之间的关系联系起来,这就是基础查询

七、事务

1.事务的概念以及操作

解散部门,删除部门并删除部门下员工一起删除。

这样两条语句就是两个事物,一个事物就会要么同时成功,要么同时失败

如何将几条语句变成一个事物:

不使用commit在其他窗口不会出现删除,如果出现错误,没commit就可以使用rollback就可以把删除的数据回复

2.事务四大特性

事务一致性:就是保证成功都执行,失败都不执行。

八、索引

未建立索引的时候,数据量大查询效率低

在创建表的时候就为要经常查询的字段建立索引:

之后再查询的话就会很快

1.索引的介绍

类似目录的作用

没有索引就会依次进行查询看是否满足条件,全表扫描

二叉搜索树

2.索引的数据结构

多路平衡搜素树:

上面都是非叶子节点,其起索引的作用,所有数据存储在叶子节点中

3.索引的操作语法

如果在创建字段的时候是unique就会创建索引

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python3如何提取汉字

采用正则表达式的方法对字符串进行处理。 str1 "{我%$是,《速$.度\发》中 /国、人"(1)提取汉字 汉字的范围为”\u4e00-\u9fa5“,这个是用Unicode表示的。 import re res1 .join(re.findall([\u4e00-\u9fa…

力扣HOT100 - 141. 环形链表

解题思路&#xff1a; public class Solution {public boolean hasCycle(ListNode head) {Set<ListNode> set new HashSet<>();while (head ! null) {if (!set.add(head)) {return true;}head head.next;}return false;} }

基于Matlab机器人工具箱对Dobot机械臂的研究

文章目录 文章目录 前言 一、Dobot Mangician 分析 二、Matlab 机器人工具箱 1. 建立模型 2. DoBot 正向运动学 3. Dobot 逆运动学 4. Dobot workpace 5. Dobot轨迹规划 三、Dobot studio 1. DoBot teaching 2. DoBot Python 程序 总结 前言 在本实验中&#xf…

第四届大数据工程与教育国际会议(BDEE 2024)即将召开!

第四届大数据工程与教育国际会议&#xff08;BDEE 2024&#xff09;将于2024年8月9-11日在泰国清迈举行。数据驱动教育变革&#xff0c;智慧点亮未来课堂&#xff01;BDEE 2024是专注于大数据工程与教育领域的重要学术会议&#xff0c;全球大数据与教育精英齐聚&#xff0c;在数…

QTableView获取可见的行数

场景 当我们需要实时刷新QTableView时&#xff0c;而此时tableView的数据量较大&#xff0c;如果全部刷新显然不合理&#xff0c;如果可以只对用户看的到的数据进行刷新那就最好了&#xff0c;经过一番摸索找到了几种方式&#xff0c;可供参考 代码 方法1 QVector<int>…

李沐48_全连接卷积神经网络FCN——自学笔记

1.FCN是用深度神经网络来做语义分割的奠基性工作。 2.它用转置卷积层来替换CNN最后的全连接层&#xff0c;从而可以实现每个像素的预测。 %matplotlib inline import torch import torchvision from torch import nn from torch.nn import functional as F from d2l import t…

Ubuntu20.4版本安装ROS教程

一、配置源 安装成功的Ubuntu系统自带的工具下载速度慢&#xff0c;不太好用&#xff0c;所以我们可以使用国内稳定高速且免费的镜像网站。 清华源&#xff1a;https://pypi.tuna.tsinghua.edu.cn/simple/ 阿里云&#xff1a;https://mirrors.aliyun.com/pypi/simple 中科大&…

机器视觉【1】-机械臂视觉

文章目录 Eye-to-HandEye-in-Hand基于Eye-in-Hand型机械臂单目视觉定位单目相机标定针孔相机模型畸变标定方法机械臂手眼标定手眼标定求解图像预处理图像灰度化与二值化图像滤波图像特征匹配机械臂单目视觉定位目标物体图像深度信息目标物体中心定位参考文献根据机械臂与相机所…

FlinkCDC基础篇章2-数据源 SqlServerCDC写入到ES中

接着 上期FlinkCDC基础篇章1-安装使用 下载 Flink 和所需要的依赖包 # 下载 Flink 1.17.0 并将其解压至目录 flink-1.17.0 下载下面列出的依赖包&#xff0c;并将它们放到目录 flink-1.17.0/lib/ 下&#xff1a; 下载链接只对已发布的版本有效, SNAPSHOT 版本需要本地编译 …

视频批量高效剪辑,轻松翻转视频画面,支持将视频画面进行逆时针90度翻转。

在视频编辑的海洋中&#xff0c;你是否曾遇到过需要批量翻转视频画面的情况&#xff1f;传统的视频编辑工具在面对这样的需求时&#xff0c;往往显得力不从心&#xff0c;效率低下。今天&#xff0c;我要为大家介绍一款全新的视频编辑神器&#xff0c;它将彻底改变你的视频编辑…

小试牛刀!

1.从双倍数组中还原原数组&#xff08;力扣&#xff0c;vector&#xff09; java式c解法。 class Solution { public:vector<int> findOriginalArray(vector<int>& changed) {int n changed.size();if(n % 2 1) return {};map<int, int> mp;for(int c…

【最新可用】Claude国内镜像,可上传图片,可用Claude3全系模型,包括Pro版本的Opus),亲测比GPT好用

Claude对话、上传图片的超详细教程来啦&#xff01; 近期&#xff0c;Claude 3 Opus的发布引发了网络上的广泛关注与热议&#xff0c;有观点认为其性能已经凌驾于GPT-4之上。虽然网络上已经出现了大量基于这两款先进AI技术的实际应用案例&#xff0c;但仍有许多人对在国内如何…

游戏生成式 AI:编织梦想,避开阴影

想象一下&#xff0c;一个沉浸式的游戏世界中玩家遇到的每个 NPC 都由 AI 驱动&#xff0c;他们能与玩家进行互动&#xff0c;从改变游戏体验。据 Inword 一项研究显示&#xff0c;绝大多数游戏玩家渴望这种互动&#xff0c;愿意投入更多的时间和金钱来玩这种由 AI 驱动的游戏。…

网络编程套接字(三)之TCP服务器简单实现

目录 一、服务端TcpServer 1、tcp_server.hpp 2、tcp_server.cc 二、客户端TcpClient tcp_client.cc 三、服务器和客户端进行通信 四、完整代码 一、服务端TcpServer 首先我们需要对服务端进行封装。我们需要的成员变量有IP地址&#xff0c;端口号port&#xff0c;以及监…

JMM与内存屏障

一、cpu多核并发缓存架构解析 JMM内存模型&#xff1a;java多线程内存模型跟cpu缓存模型类似&#xff0c;是基于cpu缓存模型来建立的&#xff0c;java线程内存模型是标准化的&#xff0c;屏蔽掉了底层不同计算机的区别 JMM数据原子操作 read(读取)&#xff1a;从主内存读取数据…

作为Boss,还在写代码。what?赶紧改掉这个坏毛病

有些创业中的老板&#xff0c;经常或者偶尔也要写代码&#xff0c;我听了很震惊呀&#xff0c;这叫创业吗&#xff1f;这不是给员工打工吗&#xff1f;其他重要的事情谁来干&#xff0c;这个毛病一定要改。 一、比起写代码&#xff0c;你还有更重要的事情要做 作为BOSS和创业…

【Node.js从基础到高级运用】二十五、Node.js中Cluster的作用

引言 Node.js中的cluster模块允许您轻松创建共享服务器端口的子进程。这是一个核心模块&#xff0c;用于在Node.js应用程序中实现多进程架构&#xff0c;以充分利用多核CPU系统的计算能力。 cluster介绍 当您启动一个Node.js应用程序时&#xff0c;默认情况下它运行在单个进程…

怎么设置启用远程桌面? 如何让外网电脑远程本地内网?

如何远程控制电脑&#xff1f;最简单实用的方案是开启电脑系统自带的远程桌面功能&#xff0c;如果涉及跨网、内外网互通&#xff0c;可以同时用快解析内网映射外网。下面是方案的具体实施步骤&#xff0c;供大家参考。 怎么打开设置启用远程桌面&#xff1f; 1.在目标需要远…

idea 中导入的项目maven不自动下载依赖包

导入之后不会自动引入依赖包&#xff0c;如下图&#xff0c;external libraries 下没有依赖 解决方案&#xff1a;重新更新下maven的Local repository 即可

实测52.4MB/s!全志T3+FPGA的CSI通信案例分享!

CSI总线介绍与优势 CSI&#xff08;CMOS sensor parallel interfaces&#xff09;总线是一种用于连接图像传感器和处理器的并行通信接口&#xff0c;应用于工业自动化、能源电力、智慧医疗等领域&#xff0c;CSI总线接口示意图如下所示&#xff08;以全志科技T3处理器的CSI0为…
最新文章