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.mzph.cn/news/825525.shtml

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

相关文章

如何理解信创产品?成为信创产品?

信创产品是指运用信息技术手段创造的产品,它是数据安全、网络安全的基础,也是新基建的重要组成部分。信创产品包括了IT基础设施如CPU芯片、服务器、存储、交换机、路由器、各种云和相关服务内容;基础软件如数据库、操作系统、中间件&#xff…

JRT在线初始化完善

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

利用H.264码流传输摄像头地理位置信息

目录 1. 引言2. NALU格式介绍3. SEI格式介绍4. 举例5. 推广1. 引言 摄像头的应用范围越来越广泛,从安防监控到视频会议,它们在我们的日常生活中起着关键作用。除了视频图像本身,摄像头还可以提供其他有用的信息,例如摄像头的地理位置。本文将讨论如何利用H.264码流传输摄像…

if __name__ == ‘__main__‘ 是个什么鬼?

有句话经典的概括了这段代码的意义: “Make a script both importable and executable” 意思就是说让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可执行。 咋一看,其实我也不理解到底是个什么球意思,这里我们写两个…

nuxt3使用记录四:加载静态资源时路径的写法研究

在上一篇记录了NUXT进行SSG构建时&#xff0c;不仅会构建纯静态的html文件&#xff0c;也会构建一堆js文件。而如果网页中有加载静态资源&#xff0c;如图片&#xff0c;这时就需要注意了&#xff0c;不能简单的使用官网说的<img src"~/assets/img/nuxt.png" alt&…

2024年华中杯数学建模C题思路与论文助攻

C 题 基于光纤传感器的平面曲线重建算法建模 光纤传感技术是伴随着光纤及光通信技术发展起来的一种新型传感器术。它是以光波为传感信号、光纤为传输载体来感知外界环境中的信号&#xff0c;其 基本原理是当外界环境参数发生变化时&#xff0c;会引起光纤传感器中光波参量&am…

Linux进阶---常见符号及其含义、常见报错

一、常见符号及其含义&#xff08;重要&#xff09; 二、 常见报错 • 找不到文件、文件不存在&#xff1a;No such file or directory • 没有权限 &#xff1a;Permission denied • 命令不存在 &#xff1a;command not found 1.找不到文件、文件不存在&#xff1a;No s…

logstash迁移es自建数据到pass服务

1 安装 下载对应版本的tar文件 https://www.elastic.co/cn/downloads/past-releases#logstash解压 tar -zvxf logstash-6.8.23-linux-x86_64.tar.gz 2 配置 修改Logstash的堆内存使用vi config/jvm.options&#xff0c;修改Logstash配置文件config/jvm.options&#xff0c;增…

AI智能电销机器人是什么?能给我们带来哪些便利?

科技的飞速发展&#xff0c;让很多“懒人”的幻想变成了现实&#xff0c;越来越多的人工智能产品被发明出来甚至完全替代日常生活中的工作。比如在电销行业&#xff0c;很多企业选择AI智能电销机器人进行外呼。那么你了解多少AI智能电销机器人呢&#xff1f;和小编kelaile520一…

声明v.s.定义

参考&#xff1a;http://t.csdnimg.cn/1xnzA 变量的定义&#xff1a;用于为变量分配存储空间&#xff0c;还可以为变量指定初始值&#xff0c;在程序中&#xff0c;变量有且仅有一个定义。变量的声明&#xff1a;用于向程序表明变量的类型和名字。在程序中&#xff0c;变量可以…

React参数传递问题

问题描述 <div className"reply-list">{/* 评论项 */}{list.map((item) > {console.log("map 里面的item", item);return <CommentItem item{item} />; // 调用组件并传递参数item})}</div> // 在组件中使用形参 function CommentI…

SAP SD学习笔记06 - 受注的据否,受注的理由,简易变更(一括处理)

上文讲了一括处理和Block&#xff08;冻结&#xff09;处理。 SAP SD学习笔记05 - SD中的一括处理&#xff08;集中处理&#xff09;&#xff0c;出荷和请求的冻结&#xff08;替代实现承认功能&#xff09;-CSDN博客 本章继续讲SAP的流程中一些常用的操作。 1&#xff0c;受注…

Flume 入门教程

内容目录 Flume 简介 架构和基本概念 多种架构模式 Flume 安装部署 Flume 简介 Flume 是一个分布式、可靠且高可用的数据收集、聚合和传输系统&#xff0c;主要用于高效地处理大规模日志数据。设计之初&#xff0c;它主要服务于日志管理领域&#xff0c;但其灵活性和可扩展…

Docker中Kafka容器创建/更新Topic支持多分区

前提 自行通过docker部署好kafka&#xff0c;并启动相关容器。 假设Topic为http_capture。 #docker-kafka kafka_dir/opt/docker/kafka/build sudo rm -rf ${kafka_dir}/* cat > ${kafka_dir}/docker-compose.yml <<EOF version: "3.3" services:zookeepe…

语言的未来:深度学习在自然语言处理中的革命

语言的未来&#xff1a;深度学习在自然语言处理中的革命 1 引言 自古以来&#xff0c;语言就是人类表达思想、传递信息、进行社会互动的基石。语言的复杂性既体现在其变化多端的语义、句法和语用层面&#xff0c;同时也反映在人类如何理解和产生自然语言的深奥之中。在这一节中…

009、Python+fastapi,第一个后台管理项目走向第9步:ubutun 20.04下安装vscode+git环境配置

一、说明 git是一定要配置的&#xff0c;由于是白嫖的无影云电脑&#xff0c;东西得保存在网上&#xff0c;就继续白嫖gitee吧&#xff0c;显然国内github是不太合适的了 二、安装git 直接安装sudo apt install -y git git --version git version 2.25.1 三、配置git 在git上…

OSPF星型拓扑和MGRE全连改

一&#xff0c;拓扑 二&#xff0c;要求 1&#xff0c;R6为ISP只能配置IP地址&#xff0c;R1-R5的环回为私有网段 2&#xff0c;R1/4/5为全连的MGRE结构&#xff0c;R1/2/3为星型的拓扑结构&#xff0c; 3&#xff0c;R1为中心站点所有私有网段可以互相通讯&#xff0c;私有网段…

Spring AI,调用OpenAI大模型接口,让ChatGPT给你讲笑话

前言 Spring最近刚刚推出了SpringAI&#xff0c;封装了AI大模型接口的使用。本文将参考Spring官网案例&#xff0c;一步步教你如何调用OpenAI的接口&#xff0c;让ChatGPT接口返回一个笑话。 前提条件 请下载并安装好JDK17或更新的版本&#xff0c;本文使用的是JDK21。JDK下…

基于百度文心大模型全面重构,小度正式推出AI原生操作系统DuerOS X

4月16日&#xff0c;以“创造未来”为主题的2024百度Create AI开发者大会在深圳举办。百度集团副总裁、小度科技CEO李莹正式发布了小度新一代操作系统DuerOS X&#xff0c;该操作系统是小度基于百度文心大模型推出的全球首个AI原生操作系统。李莹表示&#xff1a;“作为⽂⼼⼤模…

Gradle常用命令

Gradle是一个强大的构建系统&#xff0c;用于自动化和管理构建过程&#xff0c;是许多Java、Android、C和其他语言的项目的主流构建工具。以下是一些在命令行中经常使用的Gradle命令&#xff1a; 查看Gradle版本&#xff1a; gradle --version或使用Gradle Wrapper&#xff1a;…