【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. 通常情况下不建议使用全列查询

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

条件查询

运算符
算术运算符
>,>=,<,<=
大于,大于等于,小于,小于等于
=
等于, null  不安全
!=
不等于
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与运算,多个条件必须都为true(1),结果才是true(1)
or并运算,任意一个条件为true(1),结果为true(1)
not非运算,条件为true(1),结果为false(0)
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_name1 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.rhkb.cn/news/41384.html

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

相关文章

AP 场景架构设计(一) :OceanBase 读写分离策略解析

说明&#xff1a;本文内容对应的是 OceanBase 社区版&#xff0c;架构部分不涉及企业版的仲裁副本功能。OceanBase社区版和企业版的能力区别详见&#xff1a; 官网链接。 概述​ 当两种类型的业务共同运行在同一个数据库集群上时&#xff0c;这对数据库的配置等条件提出了较高…

CPU架构和微架构

CPU架构&#xff08;CPU Architecture&#xff09; CPU架构是指处理器的整体设计框架&#xff0c;定义了处理器的指令集、寄存器、内存管理方式等。它是处理器设计的顶层规范&#xff0c;决定了软件如何与硬件交互。 主要特点&#xff1a; 指令集架构&#xff08;ISA, Instr…

6.4 模拟专题:LeetCode1419.数青蛙

1.题目链接&#xff1a;数青蛙 - LeetCode 2.题目描述 给定一个字符串 croakOfFrogs&#xff0c;表示青蛙的鸣叫声序列。每个青蛙必须按顺序发出完整的 “croak” 字符&#xff0c;且多只青蛙可以同时鸣叫。要求计算最少需要多少只青蛙才能完成该字符串&#xff0c;若无法完成…

Linux 搭建dns主域解析,和反向解析

#!/bin/bash # DNS主域名服务 # user li 20250325# 检查当前用户是否为root用户 # 因为配置DNS服务通常需要较高的权限&#xff0c;只有root用户才能进行一些关键操作 if [ "$USER" ! "root" ]; then# 如果不是root用户&#xff0c;输出错误信息echo "…

Leetcode 二进制求和

java solution class Solution {public String addBinary(String a, String b) {StringBuilder result new StringBuilder();//首先设置2个指针, 从右往左处理int i a.length() - 1;int j b.length() - 1;int carry 0; //设置进位标志位//从2个字符串的末尾向前遍历while(…

【NLP 49、提示工程 prompt engineering】

目录 一、基本介绍 语言模型生成文本的基本特点 提示工程 prompt engineering 提示工程的优势 使用注意事项 ① 安全问题 ② 可信度问题 ③ 时效性与专业性 二、应用场景 能 ≠ 适合 应用场景 —— 百科知识 应用场景 —— 写文案 应用场景 —— 解释 / 编写…

【NLP 43、文本生成任务】

目录 一、生成式任务 二、seq2seq任务 1.模型结构 2.工作原理 3.局限性 三、自回归语言模型训练 Decoder only 四、自回归模型结构&#xff1a;文本生成任务 —— Embedding LSTM 代码示例 &#x1f680; 数据文件 代码流程 Ⅰ、模型初始化 Ⅱ、前向计算 代码运行流程 Ⅲ、加载…

vscode 通过Remote-ssh远程连接服务器报错 could not establish connection to ubuntu

vscode 通过Remote-ssh插件远程连接服务器报错 could not establish connection to ubuntu&#xff0c;并且出现下面的错误打印&#xff1a; [21:00:57.307] Log Level: 2 [21:00:57.350] SSH Resolver called for "ssh-remoteubuntu", attempt 1 [21:00:57.359] r…

Linux之编辑器vim命令

vi/vim命令&#xff1a; 终端下编辑文件的首选工具&#xff0c;号称编辑器之神 基本上分为三种模式&#xff0c;分别是 命令模式&#xff08;command mode&#xff09;>输入vi的命令和快捷键&#xff0c;默认打开文件的时候的模式插入模式&#xff08;insert mode&#x…

第一天学爬虫

阅读提示&#xff1a;我今天才开始尝试爬虫&#xff0c;写的不好请见谅。 一、准备工具 requests库&#xff1a;发送HTTP请求并获取网页内容。BeautifulSoup库&#xff1a;解析HTML页面并提取数据。pandas库&#xff1a;保存抓取到的数据到CSV文件中。 二、爬取步骤 发送请求…

MySQL实战(尚硅谷)

要求 代码 # 准备数据 CREATE DATABASE IF NOT EXISTS company;USE company;CREATE TABLE IF NOT EXISTS employees(employee_id INT PRIMARY KEY,first_name VARCHAR(50),last_name VARCHAR(50),department_id INT );DESC employees;CREATE TABLE IF NOT EXISTS departments…

windows下安装sublime

sublime4 alpha 4098 版本 下载 可以根据待破解的版本选择下载 https://www.sublimetext.com/dev crack alpha4098 的licence 在----- BEGIN LICENSE ----- TwitterInc 200 User License EA7E-890007 1D77F72E 390CDD93 4DCBA022 FAF60790 61AA12C0 A37081C5 D0316412 4584D…

激光线检测算法的FPGA实现

激光线检测算法的FPGA实现 1. 常见的激光线检测算法 激光线检测中常用的三种算法 MAX&#xff08;最大值法&#xff09;、THRESH&#xff08;阈值法&#xff09;、COG&#xff08;灰度重心法&#xff09; 分别具有以下特点和工作原理&#xff1a; 1.1 MAX&#xff08;最大值法…

小样本微调大模型

一、环境搭建 conda create -n dseek python=3.10 conda activate dseek pip install bitsandbytes Pip install numpy python -m pip install --upgrade pip setuptools wheel 安装cuda,torch,Unsloth, huggingface,wandb等,见前述章节; 微调服务器配置:单机笔记本显卡4…

深入理解指针(2)(C语言版)

文章目录 前言一、数组名的理解二、使用指针访问数组三、一维数组传参的本质四、冒泡排序五、二级指针六、指针数组七、指针数组模拟二维数组总结 前言 在上一篇文章中&#xff0c;我们初步了解了指针的基本概念和用法。今天&#xff0c;我们将继续深入探索指针在数组、函数传…

高效内存管理:x86-64架构中的分页机制

在 x86-64 架构的世界里&#xff0c;内存分页机制扮演着举足轻重的角色&#xff0c;它就像是一座桥梁&#xff0c;连接着虚拟地址与物理地址。简单来说&#xff0c;内存分页机制就是将线性地址&#xff08;也就是虚拟地址&#xff09;切分成一个个固定大小的页&#xff0c;并把…

统一开放世界与开放词汇检测:YOLO-UniOW无需增量学习的高效通用开放世界目标检测框架

目录 一、摘要 二、引言 三、相关工作 开放词汇对象检测 开放世界目标检测 参数高效学习 四、高效通用的开放世界目标检测 问题定义 高效的自适应决策学习 开放世界通配符学习 五、Coovally AI模型训练与应用平台 六、实验 数据集 评价指标 实施细节 定量结果 …

fileinclude

##解题思路 场景首页没有什么提示&#xff0c;只有个flag在flag.php中&#xff0c;而且需要更改language&#xff0c;还有个index.php的路径&#xff0c;先记住它 习惯性查看源代码&#xff0c;得到了题目真正的内容&#xff0c;关键在于lan变量读取我们传入的Cookie值中的lang…

链表-LeetCode

这里写目录标题 1 排序链表1.1 插入法 O&#xff08;n&#xff09;1.2 归并排序 1 排序链表 1.1 插入法 O&#xff08;n&#xff09; /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullpt…

计算机网络基础:WiFi 与蓝牙的原理与应用

计算机网络基础:WiFi 与蓝牙的原理与应用 一、前言二、WiFi 原理2.1 概述2.2 工作频段2.2.1 2.4GHz 频段2.2.2 5GHz 频段2.3 调制技术2.3.1 正交频分复用(OFDM)2.3.2 直接序列扩频(DSSS)2.4 通信协议2.5 网络架构2.5.1 独立基本服务集(IBSS)2.5.2 基础服务集(BSS)2.5.…