MySQL——表操作及查询
一.表操作
MySQL的操作中,一些专用的词无论是大写还是小写都是可以通过的。
1.插入数据
INSERT [INTO] table_name (列名称…)VALUES (列数据…), (列数据…);
"[]"表示可有可无,插入时,如果不指定要插入的列,则表示默认全部列都要插入数据,插入数据的顺序必须和列的顺序一致。
如果插入单行数据,则只需一个"()“,如果想要多行插入,则可以同时追加多个”()"。
2.更新数据
此外,由于主键或者唯一键对应的值已经存在而导致插入失败,则可以更新数据:
INSERT INTO 表名称 (列名称…) VALUES (列数据…) ON DUPLICATE KEY UPDATE 列名称=新数据…;
除这条语句之外,还有一条语句,名为替换,也可以解决主键或唯一键冲突问题:
REPLACE INTO 表名称(列名称…) VALUES (列数据…);
如果没有发生冲突,就相当于直接插入,如果发生冲突,则删除原有数据,重新插入新数据。
二.查询
1.查找数据
(1)整体查找
全列查询
select * from 表名称;
指定列查询
select 列名称…from 表名称;
查询字段表达式
select 列名称… 表达式 from 表名称;
例如:
SELECT id, name, 10 FROM exam_result;
±–±-------±—+
| id | name | 10 |
±–±-------±—+
| 1 | 张三 | 10 |
| 2 | 李四 | 10 |
| 3 | 王五 | 10 |
| 4 | 赵六 | 10 |
如果表达式与字段无关,则会生成一列表达式数据。
SELECT id, name, english + 10 FROM exam_result;
±–±--------±----------------+
| id | name | english + 10|
±–±--------±----------------+
| 1 |张三 | 66 |
| 2 |李四 | 87 |
| 3 |王五 | 100 |
| 4 |赵六 | 77 |
表达式与字段有关:生成表达式为english + 10即将学生的英语成绩+10分的列并显示。
SELECT id, name, chinese + math + english FROM exam_result;
还有如上表达式,表示显示学生汉数英的成绩之和。
SELECT id, name, chinese + math + english 总分 FROM exam_result;
还可以给表达式指定别名,即在表达式后追加别名。
SELECT DISTINCT 字段 FROM 表名称;
通过DISTINCT,可以将查询结果去重。
(2)定向查找
上边的查找操作,都是对一整个列的数据进行查找,如果我们想要对列中的特定数据进行查找,则可以通过WHERE 条件。
比较运算符:
>, >=, <, <= :大于,大于等于,小于,小于等于
= :等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=> :等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)
!=, <> :不等于
BETWEEN a0 AND a1 :范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 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 条件;
例如,查找一张成绩表中,英语不及格的学生名单:
SELECT name, english FROM exam_result WHERE english < 60;
多个条件可以通过逻辑运算符相互组合。
如果现在要查找一个同学,但是不记得他的全名,只记得他的姓为孙,该怎么找到他呢?
SELECT name FROM exam_result WHERE name LIKE ‘孙%’;
SELECT name FROM exam_result WHERE name LIKE ‘孙_’;
通过 “LIKE” 条件, 其中 ‘%’ 表示该同学的名字可以是任意数量的字符,‘_’ 表示该同学的名字只有一个字。
值得注意的是,在MySQL中,null 、0、和空字符’ ',三者互不相干,执行相关的查询时应注意。
2.排序数据
对数据进行排序通常是查找到对应数据后的操作。
select 列名称… from 表名称 ORDER BY 列名称 排序方式;
– ASC 为升序(从小到大)
– DESC 为降序(从大到小)
– 如果不指明排序方式,则默认为 ASC
当数据中有null时,null视为比任何值都小。
此外,当出现多字段排序,比如:查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示,查询后的结果并不是说,就是按照上述排序方式将单独的科目进行排序,而是按照书写优先级,先将整体数据按照数学降序排序,如果出现数学成绩相等,再将其后的英语成绩按照升序排序,如果英语成绩也相等,则最后排序语文成绩。
3.筛选数据
当数据量过大时,如果直接查询,可能会引起诸多不便,比如直接就显示到了数据的末尾几行。
因此可以通过LIMIT 按行筛选数据的方式来查询对应行的数据信息:
起始下标为 0
从 0 开始,筛选 n 条结果
SELECT 列名称…FROM 表名称LIMIT n;
从 s 开始,筛选 n 条结果
SELECT 列名称… FROM 表名称LIMIT s, n;
从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
SELECT 列名称… FROM 表名称LIMIT n OFFSET s;
因此当我们对未知表进行查询时,最好加一条 LIMIT 1,避免因为表中数据过大,查询全表数据导致数据库卡死。
4.更新数据
数据更新必须配合where使用,因为你不可能将一整列的数据全部更新,一般都是对特定行的数据进行更新。
UPDATE 表名称 SET 列名称 = 新数据[, column = expr …] [WHERE …] [ORDER BY …] [LIMIT …]
可以同时对某一行的多个数据进行更新,也可以对更新后的数据进行排序筛选等操作。
值得注意的是,当需要对某数据进行加减运算时,在MySQL中不支持 “+=” 等操作,必须采用 “新数据 = 原数据 + 改变值” 的方式。
5.删除数据
DELETE FROM table_name [WHERE …] [ORDER BY …] [LIMIT …]
删除数据时,可以使用where来指定要删除的数据,如果不使用where,则默认为删除整张表的全部数据。
值得注意的是,删除数据不会影响表的各种结构定义,就仅仅是删除插入的数据,诸如表字段的类型,以及表的各种约束条件等都不会受到影响。
特别要注意的是,delete删除数据,不会对自增长****AUTO_INCREMENT产生影响,比如说原本自增长已经到了5,此时删除全部数据,在进行插入,自增长依然会为6。
6.截断表
TRUNCATE [TABLE] table_name;
截断表truncate,同样是清空表的全部数据,与delete不同的是,它会将自增长****AUTO_INCREMEN同样清除,从AUTO_INCREMEN的初始值从头开始增长。
7.聚合函数
COUNT([DISTINCT] expr) :返回查询到的数据的 数量
SUM([DISTINCT] expr) :返回查询到的数据的 总和,不是数字没有意义
AVG([DISTINCT] expr) :返回查询到的数据的 平均值,不是数字没有意义
MAX([DISTINCT] expr) :返回查询到的数据的 最大值,不是数字没有意义
MIN([DISTINCT] expr) :返回查询到的数据的 最小值,不是数字没有意义
聚合函数可以选择对去重后的数据操作,通常和数据查找共同使用,例如查找某表总共有多少行:
SELECT COUNT(*) FROM 表名称;
使用 * 做统计,不受 NULL 影响。
8.数据分组
在select中使用group by 子句可以对指定列进行分组查询。
select 列名称… from table group by 列名称;
所谓分组查询,就是对表中某一列中的相同数据组合,例如,有一张完整的学生表数据,其中包含名称为班级号的字段,现在要查询每个班级分别有多少学生,就可以通过分组查询:
select class_id count(*)from studentgroup by class_id;
having和group by配合使用,对group by结果进行过滤,作用类似用where:
select 列名称… from table group by 列名称 having 过滤条件;
相关文章:
MySQL——表操作及查询
一.表操作 MySQL的操作中,一些专用的词无论是大写还是小写都是可以通过的。 1.插入数据 INSERT [INTO] table_name (列名称…)VALUES (列数据…), (列数据…); "[]"表示可有可无,插入时,如果不指定要插入的列,则表示默…...
SAP-ABAP:ROLLBACK WORK使用详解
在SAP ABAP 中,ROLLBACK WORK 语句用于回滚当前事务(LUW,Logical Unit of Work),撤销自上次提交或回滚以来的所有数据库更改。它通常与 COMMIT WORK 配合使用,确保数据一致性。 关键点: 回滚作…...
C#中深度解析BinaryFormatter序列化生成的二进制文件
C#中深度解析BinaryFormatter序列化生成的二进制文件 BinaryFormatter序列化时,对象必须有 可序列化特性[Serializable] 一.新建窗体测试程序BinaryDeepAnalysisDemo,将默认的Form1重命名为FormBinaryDeepAnalysis 二.新建测试类Test Test.cs源程序如下: using System; us…...
Git提交错误解决:missing Change-Id in message footer
问题现象: 提交的commit中没有插入change id导致push代码失败。 问题解决: 针对该错误,Git已经给出了解决方案: 1、to automatically insert a Change-Id, install the hook: gitdir$(git rev-parse --git-dir); scp -p -P 2…...
51单片机之引脚图(详解)
8051单片机引脚分类与功能笔记 1. 电源引脚 VCC(第40脚):接入5V电源,为单片机提供工作电压。GND(第20脚):接地端,确保电路的电位参考点。 2.时钟引脚 XTAL1(第19脚&a…...
jupyterLab插件开发
jupyter lab安装、配置: jupyter lab安装、配置教程_容器里装jupyterlab-CSDN博客 『Linux笔记』服务器搭建神器JupyterLab_linux_布衣小张-腾讯云开发者社区 Jupyter Lab | 安装、配置、插件推荐、多用户使用教程-腾讯云开发者社区-腾讯云 jupyterLab插件开发教…...
配置#include “nlohmann/json.hpp“,用于处理json文件
#include “nlohmann/json.hpp” // 需要安装 nlohmann/json.hpp 头文件 using json = nlohmann::json; 下载链接:https://github.com/nlohmann/json/tree/develop 1.下载并解压:首先,需要从nlohmann/json的GitHub仓库下载源代码,并解压得到的文件。 地址: nlohmann/json…...
MATLAB | 基于Theil-Sen斜率和Mann-Kendall检验的栅格数据趋势分析
最近看到一些博主分享关于 SenMK 检验的代码,对于新手来说可能有点复杂。我们编写了一段 MATLAB 代码,能够一次性解决这些问题,简化操作流程。我们还准备了几个关于趋势检验的空间分布图,供大家参考。 一、Sens Slope和Mann-Kenda…...
python连点器
要实现一个用于抖音点赞的鼠标连点工具,可以通过编程或现有软件实现。以下是两种常见方法(但请注意:频繁自动化操作可能违反平台规则,需谨慎使用): 方法 1:使用现成工具(如 AutoClic…...
C#程式状态机及其Godot实践
前言 今天是周日,马上就要迎来新的一周了,前几周都没干什么事,为了减缓偷懒症状,立个Flag从今往后每周至少更新两次文章。内容虽然无法保证优质,但重在坚持,全当写周记了。希望不要三分钟热度吧。 今天记录…...
Windows 系统下使用 Ollama 离线部署 DeepSeek - R1 模型指南
引言 随着人工智能技术的飞速发展,各类大语言模型层出不穷。DeepSeek - R1 凭借其出色的语言理解和生成能力,受到了广泛关注。而 Ollama 作为一款便捷的模型管理和部署工具,能够帮助我们轻松地在本地环境中部署和使用模型。本文将详细介绍如…...
Docker、Ollama、Dify 及 DeepSeek 安装配置与搭建企业级本地私有化知识库实践
在现代企业中,管理和快速访问知识库是提升工作效率、促进创新的关键。为了满足这些需求,企业越来越倾向于构建本地私有化的知识库系统,这样可以更好地保护企业数据的安全性和隐私性。本文将介绍如何利用 **Docker**、**Ollama**、**Dify** 和…...
【漫话机器学习系列】087.常见的神经网络最优化算法(Common Optimizers Of Neural Nets)
常见的神经网络优化算法 1. 引言 在深度学习中,优化算法(Optimizers)用于更新神经网络的权重,以最小化损失函数(Loss Function)。一个高效的优化算法可以加速训练过程,并提高模型的性能和稳定…...
react-native fetch在具有http远程服务器后端的Android设备上抛出“Network request failed“错误
问题描述: 在具有http远程服务器后端的Android设备上,使用react-native fetch时抛出"Network request failed"错误。 回答: "Network request failed"错误通常表示在进行网络请求时出现了问题。可能的原因包括网络连接…...
【JVM详解四】执行引擎
一、概述 Java程序运行时,JVM会加载.class字节码文件,但是字节码并不能直接运行在操作系统之上,而JVM中的执行引擎就是负责将字节码转化为对应平台的机器码让CPU运行的组件。 执行引擎是JVM核心的组成部分之一。可以把JVM架构分成三部分&am…...
route 与 router 之间的差别
简述: router:主要用于处理一些动作, route:主要获得或处理一些数据,比如地址、参数等 例: videoInfo1.vue: <template><div class"video-info"><h3>二级组件…...
[vue3] Ref Reactive
【b站-【前端面试】Vue3 ref 与 reactive 区别】 Ref:Ref用于创建一个响应式的基本数据类型,比如数字、字符串等。它将普通的数据变成响应式数据,可以监听数据的变化。使用Ref时,我们可以通过.value来访问和修改数据的值。 Reac…...
SamWaf开源轻量级的网站应用防火墙(安装包),私有化部署,加密本地存储的数据,易于启动,并支持 Linux 和 Windows 64 位和 Arm64
一、SamWaf轻量级开源防火墙介绍 (文末提供下载) SamWaf网站防火墙是一款适用于小公司、工作室和个人网站的开源轻量级网站防火墙,完全私有化部署,数据加密且仅保存本地,一键启动,支持Linux,Wi…...
极客说|利用 Azure AI Agent Service 创建自定义 VS Code Chat participant
作者:卢建晖 - 微软高级云技术布道师 「极客说」 是一档专注 AI 时代开发者分享的专栏,我们邀请来自微软以及技术社区专家,带来最前沿的技术干货与实践经验。在这里,您将看到深度教程、最佳实践和创新解决方案。关注「极客说」&a…...
22.2、Apache安全分析与增强
目录 Apache Web安全分析与增强 - Apache Web概述Apache Web安全分析与增强 - Apache Web安全威胁Apache Web安全机制Apache Web安全增强 Apache Web安全分析与增强 - Apache Web概述 阿帕奇是一个用于搭建WEB服务器的应用程序,它是开源的,它的配置文件…...
理邦仪器嵌入式(C/C++开发)开发面试题及参考答案
C++ 虚函数的概念和作用 C++ 中的虚函数是一种非常重要的机制,它在实现多态性方面起着关键作用。 概念上来说,虚函数是在基类中使用关键字 virtual 声明的成员函数。当基类的指针或引用指向派生类的对象时,通过这个基类的指针或引用调用虚函数,实际执行的是派生类中重写的该…...
windows + visual studio 2019 使用cmake 编译构建静、动态库并调用详解
环境 windows visual studio 2019 visual studio 2019创建cmake工程 1. 静态库.lib 1.1 静态库编译生成 以下是我创建的cmake工程文件结构,只关注高亮文件夹部分 libout 存放编译生成的.lib文件libsrc 存放编译用的源代码和头文件CMakeLists.txt 此次编译CMak…...
Chrome 浏览器 支持多账号登录和管理的浏览器容器解决方案
根据搜索结果,目前没有直接提到名为“chrometable”的浏览器容器或插件。不过,从功能描述来看,您可能需要的是一个能够支持多账号登录和管理的浏览器容器解决方案。以下是一些可能的实现方式: 1. 使用 Docker 容器化部署 Chrome …...
GrassWebProxy
GrassWebProxy第一版: using System; using System.Collections.Generic; using System.Linq; using System.Net.Sockets; using System.Net; using System.Text; using System.Threading; using System.Threading.Tasks; using System.IO; using Newtonsoft.Json;…...
DeepSeek API 调用 - Spring Boot 实现
DeepSeek API 调用 - Spring Boot 实现 1. 项目依赖 在 pom.xml 中添加以下依赖: <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId></depe…...
【DeepSeek】Deepseek辅组编程-通过卫星轨道计算终端距离、相对速度和多普勒频移
引言 笔者在前面的文章中,介绍了基于卫星轨道参数如何计算终端和卫星的距离,相对速度和多普勒频移。 【一文读懂】卫星轨道的轨道参数(六根数)和位置速度矢量转换及其在终端距离、相对速度和多普勒频移计算中的应用 Matlab程序 …...
【kafka实战】05 Kafka消费者消费消息过程源码剖析
1. 概述 Kafka消费者(Consumer)是Kafka系统中负责从Kafka集群中拉取消息的客户端组件。消费者消费消息的过程涉及多个步骤,包括消费者组的协调、分区分配、消息拉取、消息处理等。本文将深入剖析Kafka消费者消费消息的源码,并结合…...
[EAI-033] SFT 记忆,RL 泛化,LLM和VLM的消融研究
Paper Card 论文标题:SFT Memorizes, RL Generalizes: A Comparative Study of Foundation Model Post-training 论文作者:Tianzhe Chu, Yuexiang Zhai, Jihan Yang, Shengbang Tong, Saining Xie, Dale Schuurmans, Quoc V. Le, Sergey Levine, Yi Ma 论…...
算法与数据结构(字符串相乘)
题目 思路 这道题我们可以使用竖式乘法,从右往左遍历每个乘数,将其相乘,并且把乘完的数记录在nums数组中,然后再进行进位运算,将同一列的数进行相加,进位。 解题过程 首先求出两个数组的长度,…...
DeepSeek从入门到精通:全面掌握AI大模型的核心能力
文章目录 一、DeepSeek是什么?性能对齐OpenAI-o1正式版 二、Deepseek可以做什么?能力图谱文本生成自然语言理解与分析编程与代码相关常规绘图 三、如何使用DeepSeek?四、DeepSeek从入门到精通推理模型推理大模型非推理大模型 快思慢想&#x…...
