JavaWeb - 9 - MySQL

news2024/10/9 16:18:21

数据库:DataBase(DB),是存储和管理数据的仓库

数据库管理系统:DataBase Management System(DBMS),操纵和管理数据库的大型软件

SQL:Structured Query Language,操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准

一.MySQL概述

1.1 安装、配置

MySQL官方下载网址:MySQL :: Download MySQL Community Server

MySQL安装参考: Day06-02. MySQL-概述-安装配置_哔哩哔哩_bilibili

MySQL连接:默认IP地址127.0.0.1,默认端口号3306

MySQL-企业开发使用方式

1.2 数据模型

关系型数据库(RDBMS):建立在关系模型基础上,由多张相互连接的二维表组成的数据库

关系型数据库特点

        · 使用表存储数据,格式统一,便于维护

        · 使用SQL语言操作,标准统一,使用方便,可用于复杂查询

MySQL数据模型

1.3 SQL简介

        SQL:一门操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准

通用语法

· SQL语句可以单行或多行书写,以分号结尾

· SQL语句可以使用空格/缩进来增强语句的可读性

· MySQL数据库的SQL语句不区分大小写

· 注释:

        单行注释:--注释内容 或 # 注释内容(MySQL特有)

        多行注释:/* 注释内容 */

SQL分类

        SQL语句通常被分为四大类:

1.4 图形化工具

IDEA使用MySQL操作

二.数据库设计-DDL

DDL:Data Definition Language,数据定义语言,用来定义数据库对象(数据库、表)

2.1 DDL数据库操作(创建、查询、使用、删除)

注意事项:

        上述语法中的database,也可以替换成schema。如:create schema db01;

2.2 DDL表结构操作(创建、查询、修改、删除)

2.2.1 创建表

约束

        概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据

        目的:保证数据库中数据的正确性,有效性和完整性

2.2.2 数据类型

        MySQL中的数据类型有很多,主要分为三类:数值类型(默认有符号,无符号需要加上unsigned)、字符串类型、日期时间类型

2.2.3 表的查询、修改、删除

注意事项:在删除表时,表中的全部数据也会被删除

三.数据库操作-DML

DML:Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增、删、改操作(添加数据(INSERT)、修改数据(UPDATE)、删除数据(DELETE)

3.1 添加数据(INSERT)

注意事项

        · 插入数据时,指定的字段顺序需要与值的顺序是一一对应的

        · 字符串和日期型数据应该包含在引号中

        · 插入的数据大小,应该在字段的规定范围内

3.2 修改数据(UPDATE)

3.3 删除数据(DELETE)

注意事项

    · delete语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据

    · delete语句不能删除某一个字段的值(如果要操作,可以使用update,将该字段的值置为null)

四.数据库操作-DQL

DQL:Data Query Language(数据查询语言),用来查询数据库表中的记录

关键字:select

4.1 基本查询 

注意事项: *号代表查询所有字段,在实际开发中尽量少用(不直观、影响效率 

4.2 条件查询

4.3 分组查询

4.3.1 聚合函数

        将一列数据作为一个整体,进行纵向计算

语法:select 聚合函数(字段列表) from 表名;

注意事项

        · 聚合函数不对null值进行计算(null值不参与所有聚合函数运算)

        · 统计数量可以用:count(*)、count(字段)、count(常量),推荐使用count(*)

4.3.2 分组查询

where和having的区别

    · 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是在分组之后对结果进行过滤

    · 判断条件不同:where不能对聚合函数进行判断,而having可以

注意事项

    · 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义

    · 执行顺序:where > 聚合函数 > having

4.4 排序查询

排序方式

        ASC:升序(默认)

        DESC:降序 

注意事项

        如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序

4.5 分页查询

注意事项

    · 起始索引从0开始,起始索引 = (查询页码 - 1)× 每页显示记录数

    · 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中式LIMIT

    · 如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10

4.6 函数

· if(表达式, tvalue, fvalue):当表达式为true时,取值tvalue;当表达式为false时,取值fvalue

· case expr when value1 then result1 [when value2 then result2 …][else result] end

四.多表设计

        项目开发中,在进行数据库结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本上分为三种:一对多、多对多、一对一

4.1 表之间的关系 

一对多

        实现:在数据库表中多的一方,添加字段,来关联一的一方的主键 

一对一

        多用于单表拆分,将一张表的基础字段放在一张表中,其他字段放在另一张表中,以提升操作效率

        实现:在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的(UNIQUE)

多对多

        实现:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键

4.2 外键约束

五.多表查询

多表查询:指从多张表中查询数据

笛卡尔积:两个集合(A集合 和 B集合)的所有组合情况(在多表查询中,需要消除无效的笛卡尔积)

5.1 多表查询分类

· 连接查询

        · 内连接:相当于查询A、B交际部分数据

        · 外连接

                · 左外连接:查询左表所有数据(包括两张表交集部分数据)

                · 右外连接:查询右表所有数据(包括两张表交集部分数据)

· 子查询

5.2 连接查询

5.2.1 内连接

5.2.2 外连接

5.3 子查询

        SQL语句中嵌套select语句,称为嵌套查询,又称子查询

· 形式:select * from t1 where column1 = (select column1 from t2 …);

· 子查询外部的语句可以是insert/update/delete/select的任何一个,最常见的是select

5.3.1 子查询的分类

        · 标量子查询:子查询返回的结果为单个值

        · 列子查询:子查询返回的结果为一列

        · 行子查询:子查询返回的结果为一行

        · 表子查询:子查询返回的结果为多行多列

5.3.2 标量子查询

· 子查询返回的结果是单个值(数字、字符串、日期等),最简单的形式

· 常用的操作符:=  <>  >  >=  <  <=

select * from tb_emp where entrydate > (select entrydate from tb_emp where name = '方东白')

5.3.3 列子查询

· 子查询返回的结果是一列(可以是多行)

· 常用的操作符:in、not in 等

select * from tb_emp where dept_id in (select id from tb_dept where name in('教研部', '咨询部'));

5.3.4 行子查询

· 子查询返回的结果是一行(可以是多列)

· 常用的操作符:= 、 <>、 in、not in

select * from tb_emp where (entrydate,job) = (select entrydate,job from tb_emp where name = '韦一笑') 

5.3.5 表子查询

· 子查询返回的结果是多行多列,常作为临时表

· 常用的操作符:in

select e.*, d.name from (select * from tb_emp where entrydate > '2006-01-01') e,tb_dept d where d.id = e.dept_id

六.事务

        事务是一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败

注意事项

        默认MySQL的事务是自动提交的,也就是说,当执行一条DML语句,MySQL会立即隐式的提交事务

事务控制

事务四大特性(ACID)

原子性Atomicity):事务是一个不可分割的最小单元,要么全部成功,要么全部失败

一致性Consistency):事务完成时,必须使所有的数据都保持一致状态

隔离性Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行

持久性Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的

七.索引

        索引(index)是帮助数据库高效获取数据数据结构

索引优缺点

    · 优点

        · 提高数据查询的效率,降低数据库的IO成本

        · 通过索引列对数据进行排序,降低数据排序的成本,降低CPU消耗

    · 缺点

        · 索引会占用存储空间

        · 索引大大提高了查询效率,同时却也降低了insert、update、delete的效率

索引结构

        MySQL数据库支持的索引结构有很多,如hash索引、B+Tree索引、Full-Text索引等。我们平常所说的索引,如果没有特别指明,都是指默认的B+Tree结构组织的索引

B+Tree(多路平衡搜索树) 

索引操作语法

注意事项

        · 主键字段,在建表时,会自动创建主键索引

        · 添加唯一约束时,数据库实际上会添加唯一索引

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

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

相关文章

经纬恒润荣获2024中国汽车供应链大会创新成果奖

2024年9月24日-26日&#xff0c;2024中国汽车供应链大会暨第三届中国新能源智能网联汽车生态大会在武汉隆重举办。本届大会以“新挑战、新对策、新机遇——推动中国汽车供应链可持续发展”为主题&#xff0c;集聚政府主管领导、行业专家、汽车及零部件企业精英和主流媒体&#…

这个 JavaScript API 比你想象中更强大!

大家好&#xff0c;我是 ConardLi。 今天&#xff0c;我们来聊聊一个可能被你忽视&#xff0c;而且非常强大的标准 JavaScript API - AbortController 。 在过去&#xff0c;大家在提到 AbortController 的时候&#xff0c;一般会举请求中断的例子&#xff0c;就连 MDN 给到的…

重学SpringBoot3-集成Redis(三)之注解缓存策略设置

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-集成Redis&#xff08;三&#xff09;之注解缓存策略设置 1. 引入 Redis 依赖2. 配置 RedisCacheManager 及自定义过期策略2.1 示例代码&#xff1a;自定…

重塑能源持续亏损近22亿:今年前五个月销量下滑,产能利用率骤降

《港湾商业观察》黄懿 9月2日&#xff0c;上海重塑能源集团股份有限公司&#xff08;下称“重塑能源”&#xff09;向港交所提交上市申请书&#xff0c;委任中国国际金融香港证券有限公司、招银国际融资有限公司及法国巴黎证券&#xff08;亚洲&#xff09;有限公司为整体协调…

Linux(不同版本系统包含Ubuntu)下安装mongodb详细教程

一、下载MongoDB 在MongoDB官网下载对应的MongoDB版本&#xff0c;可以点击以下链接快速跳转到下载页面&#xff1a; mongodb官网下载地址 注意选择和自己操作系统一致的platform,可以先查看自己的操作系统 查看操作系统详情 命令&#xff1a; uname -a 如图&#xff1a;操…

海洋大地测量基准与水下导航系列之二国外海底大地测量基准和海底观测网络发展现状(下)

2004年&#xff0c;英国、德国、法国等国家在欧洲“全球环境与安全监测’(Global Monitoring for Environment and Security,GMES)观测计划倡导下制定了“欧洲海底观测网络”(European Seafoor Observatory Network,ESONET)计划。ESONET是一个多学科的欧洲卓越网络(NoE &#x…

光路科技以技术创新为驱动,打造创新型企业新标杆

近日&#xff0c;深圳市光路在线科技有限公司&#xff08;光路科技&#xff09;凭借其出色的创新能力和市场表现&#xff0c;荣获深圳市中小企业服务局颁发的“创新型中小企业”称号。这一荣誉标志着光路科技在推动行业发展和技术进步方面取得了显著成就。 光路科技自2008年成立…

【含文档】基于Springboot+Android的在线招聘平台(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

◇【code】PPO: Proximal Policy Optimization

整理的代码库&#xff1a;https://github.com/Gaoshu-root/Code-related-courses/tree/main/RL2024/PPO OpenAI 文档 —— PPO-Clip OpenAI 文档 界面链接 PPO&#xff1a; on-policy 算法、适用于 离散 或 连续动作空间。可能局部最优 PPO 的动机与 TRPO 一样&#xff1a;…

Scott Brinker:企业正在更换更多的Martech,专注集成和API,不断扩大技术栈

营销技术替代因素&#xff1a;集成和API排在第二位 MarTech.org组织了2024年Martech替代调查&#xff0c;它能够深入了解营销技术栈是如何演变的。在496名受访者中&#xff0c;有65%的人表示他们在过去一年中更换了他们技术栈中的一个或多个营销技术解决方案。这些是最常被替代…

Tableau|三 数据连接与管理

一 Tableau的数据架构 数据连接层&#xff08;Connection&#xff09;、数据模型层&#xff08;DataModel&#xff09;和数据可视化层&#xff08;VizQL&#xff09;。 1.数据连接层 决定了如何访问源数据和获取哪些数据。 数据连接层的数据连接信息包括数据库、数据表、数据视…

华为大咖说 | 新时代,智能电动车车联网有哪些发展趋势?(下篇)

本文作者&#xff1a;朱行健&#xff08;华为专家&#xff09;全文约4252字&#xff0c;阅读约需9分钟 近年来&#xff0c;汽车产业逐步向电动化、自动化、网联化、共享化发展&#xff0c;车联网开始成为新的竞争主体&#xff0c;汽车市场开始出现新的市场发展驱动力、形成新的…

E36.C语言模拟试卷1第一大题选题解析与提示(未完)

点我去下载C语言模拟试卷1的文件 备注:ZIP文件中的参考答案仅仅提供最终结果 目录 第3题 第5题 第7题 第9题 第14题 第16题 第19题 第20题 第22题 第24题 第26题 第27题 第28题 第3题 3.若有说明语句&#xff1a;char c ‘\64’ ; 则变量C包含&#xff1a; …

python19_加减乘除(二)

加减乘除 a hello b world c 2 d 4# 字符串加法 def str_add(A, B):result A Breturn result# 字符串乘法 def str_mul(A, B):result A * Breturn result# 字符串除法 def str_div(A, B):result B / Areturn result# 字符串减法 def str_sub(A, B):result B - Aretur…

A股牛市来袭,资本涌动:加密市场的出路与机遇

近期&#xff0c;随着A股的强劲反弹&#xff0c;不少加密市场的投资者&#xff0c;尤其是一些KOL&#xff08;关键意见领袖&#xff09;&#xff0c;开始转移资金并公开建议进军A股。这种趋势反映出部分投资者对加密市场的信心动摇&#xff0c;尤其是在全球宏观经济不确定性加剧…

python兴农购物网站系统—计算机毕业设计源码38256

摘 要 助农工作是当前我国全面建成小康社会的重点工作&#xff0c;由于我国农村地域广大&#xff0c;贫困人口多&#xff0c;区域差异大&#xff0c;因此&#xff0c;不同区域的扶贫方法也是不一样的。近年来&#xff0c;随着网络的普及。许多农村地区物产丰富&#xff0c;但由…

【解决方案】基于数据库驱动的自定义 TypeHandler 处理器

前言 笔者在最近的项目开发中&#xff0c;频繁地遇到了 Java 类型与 JDBC 类型之间的2个转换问题&#xff1a; 数据库的 varchar 类型字段&#xff0c;需要存储 Java 实体中的 JSON 字符串 数据库的 int 类型字段&#xff0c;需要存储 Java 实体中的 Enum 枚举 其实要处理也不…

数据库软题6.2-关系模式-范式

一、判断部分函数依赖&#xff08;1NF有部分函数依赖&#xff09; 题型&#xff1a;给出函数依赖集和属性&#xff0c;判断该关系模式属于第几范式。 求出候选码 若是候选码为属性的组合&#xff0c;则可能有部分函数依赖&#xff1b;&#xff08;存在部分函数依赖&#xff0…

苹果AI重磅升级!ChatGPT正式登陆iPhone,开启智能生活新时代

苹果AI重磅升级&#xff01;ChatGPT正式登陆iPhone&#xff0c;开启智能生活新时代 在今年的全球开发者大会&#xff08;WWDC 2024&#xff09;上&#xff0c;苹果公司引爆了科技圈——通过与OpenAI合作&#xff0c;苹果宣布将人工智能技术与iPhone深度融合。通过这个合作&…

自由学习记录(2)

Unity打包图集相关 Draw Call 实验设置&#xff1a; 我们将创建两个场景&#xff0c;一个场景有高 Draw Call&#xff0c;另一个场景通过优化减少 Draw Call。然后对比它们的帧率&#xff08;FPS&#xff09;。 场景 1&#xff1a;高 Draw Call 场景&#xff08;无优化&…