【MySQL】从零开始:掌握MySQL数据库的核心概念(四)

人们之所以不愿改变,是因为害怕未知。但历史唯一不变的事实,就是一切都会改变。 

前言

 这是我自己学习mysql数据库的第四篇博客总结。后期我会继续把mysql数据库学习笔记开源至博客上。

  上一期笔记是关于mysql数据库的表格约束,没看的同学可以过去看看:

【MySQL】从零开始:掌握MySQL数据库的核心概念(三)-CSDN博客https://blog.csdn.net/hsy1603914691/article/details/146385371

表格的增删查改

增 

正常插入

//指定列单行插入
insert into tb_name() values();
//全列单行插入
insert into tb_name values();
//指定列多行插入
insert into tb_name() values(),();
//全列多行插入
insert into tb_name values(),();

冲突插入 

//插入更新
insert into tb_name() values() 
on duplicate key update column_name1=xxx,column_name2=yyy,...;
//替换更新
replace into tb_name() values(); 

1. 此时无法正常插入,已经存在冲突数据主键值重复或者唯一键值重复

2. insert into插入更新时,会存在以下情况:

  • -- 0 row affected: 表中有冲突数据,但冲突数据的值和update的值相等。
  • -- 1 row affected: 表中没有冲突数据,数据被插入。
  • -- 2 row affected: 表中有冲突数据,并且数据已经被更新。

3. replace into替换更新时,会存在以下情况:

  • -- 1 row affected: 表中没有冲突数据,数据被插入。
  • -- 2 row affected: 表中有冲突数据,删除后重新插入。

查询插入

insert into tb_name select ...;

1. 除了向表格中插入具体的数据,还可以向表格中插入查询出来的数据。 

删 

delete子句-turncate子句

//删除表格的数据
delete from tb_name ...;
//重置表格
turncate table tb_name;

1. turncate只能对整个表格进行操作,不能像delete一样针对部分数据操作。

2. turncate会重置auto_increment项。

3. 实际上turncate不对数据操作,所以比delete更快,但是turncate在删除数据的时候,并不经过真正的事物,所以无法回滚。

查 

整体查询

//全列查询
select * from tb_name;
//指定列查询
select column_name1 column_name2 from tb_name;
//表达式运算查询
select column_name1 as new_name1 column_name2+column_name3+num as new_name2 from tb_name;
//去重查询
select distinct column_name1 from tb_name;

1. 通常情况下不建议使用全列查询

  • 查询的列越多,意味着需要传输的数据量越大。
  • 可能会影响到索引的使用。

条件查询

运算符
算术运算符
>,>=,<,<=
大于,大于等于,小于,小于等于
=
等于
!=
不等于
between a and b
范围匹配, [a,b] ,如果 a<=value<=b ,返回 true(1)
in(option,...)
如果是 option中的任意一个,返回true(1)
is null
null
is not null不是null
like
模糊匹配。其中 % 表示任意多个(包括 0 个)任意字符;其中 _ 表示任意一个字符。
逻辑运算符
and与运算
or并运算
not非运算
where子句
select ... from ... where ...

1. 语法上,先执行from...,再执行where...,最后执行select...。所以在where子句中,不能使用select...中定义的别名。

2. where子句中可以使用圆括号()来限制先后逻辑。

改 

修改数据

update tb_name set column_name_change ...;

1. column_name_change大部分以重新赋值的形式呈现。

查询排序 

//升序
asc
//降序
desc
//
select ... from ... where ... order by column_name sort_order;

1. 在order by子句中,默认升序排序

2. NULL值也参与排序,但是视为比任何值都小

3. 语法上,先执行from...,再执行where...,然后执行select...,最后执行order by...。所以在where子句中,不能使用select...中定义的别名,但是在order by子句中,可以使用select...中定义的别名。

分页筛选 

//从下标为0的数据开始,往后筛选n条数据
select ... from ... where ... limit n;
//从下标为s的数据开始,往后筛选n条数据
select ... from ... where ... limit n offset s;

1. 对未知表进行查询时,最好加上:limit 1。避免因为表中数据过大,查询全表数据导致数据库卡死。

聚合函数

count()
返回查询到的数据的数量
sum()
返回查询到的数据的总和,不是数字没有意义
avg()
返回查询到的数据的平均值,不是数字没有意义
max()
返回查询到的数据的最大值,不是数字没有意义
min()
返回查询到的数据的最小值,不是数字没有意义
select func(column_name) from tb_name;

1. 聚合函数视为一个整体,相当于一个新的变量

分组查询 

select func(column_name1) from tb_name group by column_name2 having ...;

1. 分组的目的是为了更好的进行分组聚合统计

2. 分组的依据一般是指定的列名,根据该列的不同数据来进行分组。

3. where主要是对具体的某一列进行条件筛选,having主要是对分组后的结果进行条件筛选。

4. wherehaving的条件筛选的阶段是不同的。

致谢 

  感谢您花时间阅读这篇文章!如果您对本文有任何疑问、建议或是想要分享您的看法,请不要犹豫,在评论区留下您的宝贵意见。每一次互动都是我前进的动力,您的支持是我最大的鼓励。期待与您的交流,让我们共同成长,探索技术世界的无限可能!

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

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

相关文章

Manus:通用智能体的架构革命与产业破局

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…

HTTP协议手写服务器

目录 一、请求的是Web根目录 二、GET方法通过URL传参 三、根据资源类型对应出Content-Type值 四、Http代码 项目完整源代码&#xff1a;Http 周不才/cpp_linux study - 码云 - 开源中国 一、请求的是Web根目录 如果URL中请求的资源是Web根目录&#xff0c;则自动跳转到主…

小蓝和钥匙

错位排序组合数 从28个人里面选14个人分到原来房间的钥匙 C 28 14 另外14个人错位排序 模板 请在此处填写你的解题思路 D14 都是模板记住就好了 无需理解 做题可以看出来是错位排序 或者组合数 然后会写代码就行了 import java.util.Scanner;/*** author zb* date2025/3…

使用飞书API自动化更新共享表格数据

飞书API开发之自动更新共享表格 天马行空需求需求拆解1、网站数据爬取2、飞书API调用2.1 开发流程2.2 创建应用2.3 配置应用2.4 发布应用2.5 修改表格权限2.6 获取tenant_access_token2.7 调用API插入数据 总结 天马行空 之前一直都是更新的爬虫逆向内容&#xff0c;工作中基本…

Python-Django入手

18.1 建立项目 18.1.1 制定规范 - 定义项目目标&#xff1a;明确应用的核心功能 - 创建项目文档&#xff1a;用README.md记录技术栈和开发流程 - 规划目录结构&#xff1a;建议遵循Django官方推荐的项目布局 18.1.2 建立虚拟环境 在命令行执行&#xff1a; python -m ven…

LangChain4j 入门(二)

LangChain 整合 SpringBoot 下述代码均使用 阿里云百炼平台 提供的模型。 创建项目&#xff0c;引入依赖 通过 IDEA 创建 SpringBoot 项目&#xff0c;并引入 Spring Web 依赖&#xff0c;SpringBoot 推荐使用 3.x 版本。 引入 LangChain4j 和 WebFlux 依赖 <!--阿里云 D…

3.30学习总结 Java包装类+高精度算法+查找算法

包装类&#xff1a; 基本数据类型对应的引用数据类型。 基本数据类型&#xff1a;在内存中记录的是真实的值。 八种包装类的父类都是Object类。 对象之间不能直接进行计算。 JDK5之后可以把int和integer看成一个东西&#xff0c;因为会进行内部优化。自动装箱和自动拆箱。 …

centos 7 LVM管理命令

物理卷&#xff08;PV&#xff09;管理命令 pvcreate&#xff1a;用于将物理磁盘分区或整个磁盘创建为物理卷。 示例&#xff1a;sudo pvcreate /dev/sdb1 解释&#xff1a;将 /dev/sdb1 分区创建为物理卷。 pvdisplay&#xff1a;显示物理卷的详细信息&#xff0c;如大小、所属…

借助FastAdmin和uniapp,高效搭建AI智能平台

在数字化办公时代&#xff0c;效率与协作是企业发展的核心竞争力。传统的办公工具虽然功能丰富&#xff0c;但在面对复杂多变的团队协作需求时&#xff0c;往往显得力不从心。为了解决这一痛点&#xff0c;我们推出了一款全新的办公AI平台&#xff0c;它不仅能够满足文字和语音…

项目上传github——SSH连接配置文档

1. 检查是否已有 SSH 密钥 打开终端&#xff0c;检查是否已经存在 SSH 密钥对&#xff1a; ls ~/.ssh如果你看到类似 id_rsa 和 id_rsa.pub 的文件&#xff0c;说明你已经有 SSH 密钥。否则&#xff0c;继续下一步。 2. 生成 SSH 密钥 如果你没有 SSH 密钥&#xff0c;使用…

传奇类网游页游2.5D游戏场景地图素材Eagle库 沙漠沙海隔壁

传奇类网游页游2.5D游戏场景地图素材Eagle库 沙漠沙海隔壁 链接: https://pan.baidu.com/s/1GY8N-KEkHBGEbS7uxrE4Dg 提取码: yrs8 备用下载地址&#xff1a;http://pan.1234f.com:5212/s/rLzIp 电子资料文档&#xff1a;https://www.1234f.com/sj/GitHub/sucai/20250327/1323…

通过TIM+DMA Burst 实现STM32输出变频且不同脉冲数量的PWM波形

Burst介绍&#xff1a; DMA控制器可以生成单次传输或增量突发传输&#xff0c;传输的节拍数为4、8或16。 为了确保数据一致性&#xff0c;构成突发传输的每组传输都是不可分割的&#xff1a;AHB传输被锁定&#xff0c;AHB总线矩阵的仲裁器在突发传输序列期间不会撤销DMA主设备…

鸿蒙学习手册(HarmonyOSNext_API16)_数据持久化③:关系型数据库

概述 关系型数据库&#xff1a;像“Excel表格联合作战”的管家 关系型数据库就像一个超级智能的表格管理系统&#xff0c;专门处理数据之间有复杂关联的情况。比如学生和成绩、订单和商品、用户和评论——这些数据像蜘蛛网一样相互连接&#xff0c;用键值数据库的“独立抽屉”…

Windows 11 VS Code C/C++ 开发环境搭建——一种尽量“绿色”的方法

我的电脑是Windows 11 系统&#xff0c;安装了Visual Studio Code&#xff0c;在上面搭建C/C开发环境&#xff0c;当然&#xff0c;这需要用到MinGW之流了。作为一个绿色爱好者&#xff08;帽子除外&#xff09;&#xff0c;我也尽量绿色地架设这样一个环境…… 第一步&#x…

mysql-分区和性能

mysql自身只支持表的横向分区。 常听到开发人员说“”对表做个分区“&#xff0c;然后数据的查询就会快了。这是真的吗&#xff1f;实际上可能跟根本感觉不到查询速度的提升&#xff0c;甚至会发现查询速度急剧下降。因此&#xff0c;在合理使用分区之前&#xff0c;必须了解分…

DeepSeek协助优化-GTX750Ti文物显卡0.65秒卷完400MB float 音频512阶时域FIR

文章目录 1. 学习目的2. 阶段成果2.1 NVVP 性能探查2.2 测试编译环境2.3 测试样例 3 学习过程3.1 提问DeepSeek3.2 最终代码 4. 体会 1. 学习目的 最近在学习cuda&#xff0c;准备给我的taskBus SDR添加CUDA的模块支持&#xff0c;以便可以用PC机压榨山寨 B210那56M的带宽。 因…

RabbitMQ高级特性--TTL和死信队列

目录 1.TTL 1.1设置消息的TTL 1.1.1配置交换机&队列 1.1.2发送消息 1.1.3运行程序观察结果 1.2设置队列的TTL 1.2.1配置队列和交换机的绑定关系 1.2.2发送消息 1.2.3运行程序观察结果 1.3两者区别 2.死信队列 2.1 声名队列和交换机 2.2正常队列绑定死信交换机 …

【JavaEE】UDP数据报套接字编程

目录 网络编程基础 基本概念 发送端和接收端 请求和响应 客户端和服务端 常见的客户端服务端模型 Socket套接字 TCP/UDP特点 Java数据报套接字通信模型(UDP通信) UDP数据报套接字编程 DatagramSocket 1.类定义 2.构造方法 3.核心方法 4.特性说明 DatagramPacke…

Spring Boot 3.4.3 基于 SpringDoc 2 和 Swagger 3 实现项目接口文档管理

在现代企业级应用开发中&#xff0c;前后端分离已成为主流模式&#xff0c;前端负责界面呈现&#xff0c;后端专注提供 RESTful API 接口。然而&#xff0c;接口文档的编写和维护往往是开发过程中的痛点。Spring Boot 3.4.3 结合 SpringDoc 2 和 Swagger 3&#xff0c;为开发者…

构建大语言模型应用:数据准备(第二部分)

本专栏通过检索增强生成&#xff08;RAG&#xff09;应用的视角来学习大语言模型&#xff08;LLM&#xff09;。 本系列文章 简介数据准备&#xff08;本文&#xff09;句子转换器向量数据库搜索与检索大语言模型开源检索增强生成评估大语言模型服务高级检索增强生成 RAG 如上…