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

news2024/11/16 9:54:25

一、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.coloradmin.cn/o/1605826.html

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

相关文章

mysql使用逗号分隔的一行数据转多行数据

文章目录 学习链接准备建表插入数据 方法MySQL逗号拼接的列拆分为多行(不使用mysql.help_topic)遇到字段以逗号分隔符分号分隔符存放多个值,需要一行转化多行,以用来关联(使用mysql.help_topic)改为LEFT JO…

DevOps是什么?

DevOps是一系列实践、工具和文化理念的组合,旨在自动化并整合软件开发和信息技术运维团队之间的流程。以下是DevOps的几个关键点: 沟通与协作:DevOps强调开发和运维团队之间的沟通与合作,通过改善这两个部门间的协作关系&#xff…

OpenHarmony轻量系统开发【13】鸿蒙小车开发

13.1 小车介绍 基于鸿蒙系统 Hi3861 的WiFi小车 首先,我们得有一套WiFi小车套件,其实也是Hi3861 加上电机、循迹模块、超声波等模块。 小车安装完大概是这样: 13.2 电机驱动 我们这里先只做最简单的,驱动小车的电机&#xff…

奶酪——并查集,BFS,DFS(NOIP2017提高组)

目录 题目 思路 并查集 代码(java) BFS(DFS同理) 代码(C) 题目 思路 这个题目意思是有很多个球分布在一个三维空间内,如果这些球相切或者相交都可以互相到达,我们需要判断能否…

【python从入门到精通】-- 第五战:函数大总结

🌈 个人主页:白子寰 🔥 分类专栏:python从入门到精通,魔法指针,进阶C,C语言,C语言题集,C语言实现游戏👈 希望得到您的订阅和支持~ 💡 坚持创作博文…

元宇宙VR虚拟线上展馆满足企业快速布展的需要

想要拥有一个VR线上虚拟展馆,展现您的城市风采或企业特色吗? 相比实体展馆搭建,VR线上虚拟展馆投入资金少,回报周期短,只需几个月的时间,您就能开始资金回笼。那么一个VR线上虚拟展馆多少钱呢? 深圳VR公司华锐视点基…

C语言如何使⽤指针?

一、问题 指针变量在初始化以后就可以使⽤和参与操作了,那么就要⽤到对指针变量最常⽤的两个操作符——> * 和 & 。 二、解答 这⾥⼜要提到始终贯穿着指针的⼀个符号“ * ”,但是这⾥的“ * ”是作为指针运算符使⽤的,叫做取内…

三大常用自动化框架对比

上次发布过性能测试工具的对比后,有小伙伴后台留言,想了解一下自动化测试框架的对比,尤其是RobotFramework、pytest和unitest之间的优劣势情况。 这不我们今天就来分析一下他们之间的区别和各自的优缺点。 1 RobotFramework 优点:…

selenium 下载文件取消安全下载的方法

问题描述 我要从一个网站上下载文件,谷歌浏览器总是自动阻止下载,并询问我是否保留。 可是,我想要的是不要询问,默认下载即可。 运行环境 OS: macOSselenium: 4.19.0python: 3.10.11Chrome: 124.0.6367.62selenium chromedrive…

openEuler-23.03下载

下载地址:openEuler下载 | 欧拉系统ISO镜像 | openEuler社区官网 下载版本:openEuler-23.03-x86_64-dvd.iso

CTF中常见的四种python逆向

说在前面: 什么是pyc文件? pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有所提高, pyc 文件是 Python 编译过的字节码文…

WdatePicker异常,无法弹出日期选择框

官网:My97日期控件官方网站 My97 DatePickerhttp://www.my97.net/ 可能使版本太老了,可以更新一下,然后根据官方的文件进行使用。 我的异常是因为在网上找的包里面缺少文件,去官网拉了一下最新的就行了。

【Linux驱动层】iTOP-RK3568学习之路(二):vscode中设置头文件路径-完成代码自动补全

在Ubuntu下用vscode写Linux驱动层的时候&#xff0c;需要添加头文件&#xff1a; #include<linux/module.h> #include<linux/init.h> #include<linux/kernel.h>但vscode没有智能提示&#xff0c;因此需要我们手动添加自己的头文件路径&#xff1a; topeetu…

Ubuntu 23.10.1 nginx源码安装

注&#xff1a;以下所有命令均在root管理员模式下&#xff0c;若不是&#xff0c;请在所有命令前加sudo 1、安装依赖库 1.1、安装gcc g的依赖库 apt-get install build-essential apt-get install libtool1.2、安装pcre依赖库 apt-get update apt-get install libpcre3 lib…

嵌入式科普(15)小米su7成本分析和拆解之智驶、座舱分析

目录 一、概述 二、小米su7成本分析 2.1 整车成本构成 2.2 三电系统 2.3 车身与底盘 2.3 智能网联 2.4 内外饰 三、小米su7拆解之智驶、座舱分析 3.1 主要芯片 3.2 智能驾驶&智能座舱 四、NXP S32K324汽车通用微控制器 嵌入式科普(15)小米su7成本分析和拆解之智…

【结构型模式】外观模式

​一、外观模式概述 外观模式定义与意图&#xff1a;外观类为复杂的子系统提供了一个统一的入口。外观模式定义了一个高层接口&#xff0c;这个接口使得这一子系统更加容易使用。&#xff08;对象结构型模式&#xff09; 外观模式的特点&#xff1a; 1.又叫做门面模式&#xf…

JRT在线初始化完善

之前实现的在线初始化留了个尾巴&#xff0c;那就是环境下载页构造zip包的时候没修改JRTBrowser的连接串地址为当前网站&#xff0c;这样就要求网站部署好之后给用户下载之前有人要把服务器的浏览器地址配置好。这样就增加一个运维工作&#xff0c;如果忘了或者不知道的人就会导…

在Windows安装R语言

直接安装R语言软件 下载网址&#xff1a;R: The R Project for Statistical Computing 下载点击install R for the first time 通过Anaconda下载RStudio 提前下载好Anaconda 点击Anaconda Navigate 点击RStudio的Install下载就好了

labelimg安装和使用(解决闪退问题)

&#x1f308;个人主页&#xff1a;Rookie Maker &#x1f525; 系列专栏&#xff1a;计算机视觉 &#x1f3c6;&#x1f3c6;关注博主&#xff0c;随时获取更多关于IT的优质内容&#xff01;&#x1f3c6;&#x1f3c6; &#x1f600;欢迎来到我的代码世界~ &#x1f601; 喜…

【行为型模式】命令模式

一、命令模式概述 命令模式的定义&#xff1a;将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。(对象行为型) 命令模式优缺点&#xff1a; 优点&#xff1a; 1.类间解耦&#xff1a;调用者角色与接收者角色之间没有任何依…