当前位置: 首页 > news >正文

MySQL中表的增删改查

目录

一、CRUD

二、新增(Create)        

(1)语法

(2)单行数据+全列插入

(3)多行数据+指定列插入

三、查询(Retrieve)

(1)语法

(2)全列查询

(3)指定列查询

(4)查询字段为表达式

        1、表达式不包含字段:

        2、表达式包含一个字段

       表结构如下:

        3、表达式包含多个字段

(5)别名

(6)去重:DISTINCT        

(7)排序:ORDER BY

1、语法:

2、升序

3、降序

4、使用表达式及别名排序

5、可以对多个优先级进行排序,排序优先级随书写顺序

(8)条件查询:WHERE

 1、比较运算符

2、逻辑运算符

3、基本查询:

4、AND和OR:

5、范围查询

        (1) BETWEEN ... AND

        (2)IN

6、模糊查询:LIKE

7、NULL的查询:IS [NOT] NULL        

8、分页查询:LIMIT

四、修改(Update)

案例:

-- 将孙悟空同学的数学成绩变更为 80 分

-- 将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分

-- 将总成绩倒数前三的 3 位同学的数学成绩加上 30 分

-- 将所有同学的语文成绩更新为原来的 2 倍

五、删除(Delete)

案例:

-- 删除孙悟空同学的考试成绩

-- 删除整张表数据

六、内容重点总结

新增​编辑

查询​编辑

修改​编辑

删除​编辑

都看到这了,点个赞再走吧,谢谢谢谢谢!!!


一、CRUD

注释:在SQL中可以使用“--空格+描述”来表示注释说明
CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写
 


二、新增(Create)        

已有的表结构和表数据:

(1)语法

INSERT [INTO] table_name
[(column [, column] ...)]
VALUES (value_list) [, (value_list)] ...
value_list: value, [, value] ...

 

(2)单行数据+全列插入

语法:insert into 表名 values(要插入的数据, ...)

注意:插入的数据顺序要和表结构相同,不然插入会失败

代码展示:

insert into books values('数学', '张三', 6.66, '数学类');
insert into books values('英语', '李四', 8.88, NULL);

结果如下:

(3)多行数据+指定列插入

语法:insert into 表名 (指定的列名, ...) values(指定列名数据)

代码展示

insert into books (name, price, sort) values('语文', 5.55, '语文类'), ('物理', 7.77, '物理类');

结果如下:


三、查询(Retrieve)

(1)语法

SELECT
[DISTINCT] {* | {column [, column] ...}
[FROM table_name]
[WHERE ...]
[ORDER BY column [ASC | DESC], ...]
LIMIT ...

 

(2)全列查询

注意:select查询操作的全都是临时表,不会改变原本的数据

语法:select * from 表名

代码展示:

select * from books;

结果如下:

注意:通常情况下不建议使用 * 进行全列查询
-- 1. 查询的列越多,意味着需要传输的数据量越大;(要处理的信息太多,服务器可能会堵塞,大量的硬盘IO和网络IO就可能把硬盘或者网卡的宽带给吃满,一旦宽带吃满了,此时服务器就无法正常响应其他的客户端的请求了,在其他的客户端视野中,就会认为服务器挂了)
-- 2. 可能会影响到索引的使用

(3)指定列查询

语法:select 指定的列名,... from 表名

代码展示:

select name, author, price from books;

结果如下:

注意:指定列查询可以不按这个表的列顺序查询,如图

(4)查询字段为表达式

        1、表达式不包含字段:

语法:select 表达式, ... from books

代码演示:

 select name, price, 10 from books;

结果如下

因为没有10,所以会创建一个字段10,下面都放10

        2、表达式包含一个字段

语法:select 含有一个字段的表达式, ... froms 表名

代码演示:

select name, author, price + 10 from books;

结果如下:

       表结构如下:

        3、表达式包含多个字段

语法:select 含有多个字段的表达式,... from 表名

整型数据代码演示:

 select name, chinese + math + english from report;

结果如下:

不是整型数据代码演示:

select price, name + author + sort from books;

结果如下:

可以看到,表达式包含多行字段,有只要有NULL都为NULL,字符串相加等于0的现象

(5)别名

语法:select 列名,... as 别名 from report

注意(as可以不加,但是加上更好,容易区分)

代码演示:

 select id, chinese + math + english as 总分 from report;

结果如下:

(6)去重:DISTINCT        

现有的表:

语法:select distinct 列名,... from 表名

代码展示:

 select distinct math from exam_result;

结果如下:

(7)排序:ORDER BY

1、语法:

-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为 ASC
SELECT ... FROM table_name [WHERE ...]
ORDER BY column [ASC|DESC], [...];

 

2、升序

语法:select * (或者其他列名也可以) from 表名 order by 列名

代码展示:

 select * from exam_result order by math;

结果如下:

3、降序

语法:select * (或者其他列名也可以) from 表名 order by 列名 desc

代码展示:

select * from exam_result order by math desc;

结果如下:

4、使用表达式及别名排序

语法:select 列名, 表达式 from 表名 order by 表达式;

代码展示:

 select name, math + chinese + english as total from exam_result order by math + chinese + english;

结果如下:

注意:

这里order by后面可以使用别名

5、可以对多个优先级进行排序,排序优先级随书写顺序

语法:select 要查询的列 exam_result order by 列名,列名...;

代码演示:

 select * from exam_result order by math, english;

结果如下:

(8)条件查询:WHERE

 1、比较运算符

2、逻辑运算符

注意:1. AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分

           2. WHERE条件可以使用表达式,但不能使用别名

如图示例:

                sql语句的执行顺序:

                第一步:取出一条记录(遍历表)

                第二步:把记录带入条件带入条件,判断是否满足

                第三步:如果条件满足,再把select指定的列取出来,并进行一些表达式运算

所以条件查询的where后面不能用别名

3、基本查询:

查询英语成绩大于70分的同学:

代码如下:

 select name, english from exam_result where english > 70;

结果如下:

查询英语成绩大于语文成绩的同学:

代码如下:

 select name, english, chinese from exam_result where english > chinese;

结果如下:

查询总成绩小于200的同学:

代码如下:

 select name, chinese + math + english from exam_result where (chinese + math + english) < 200;

结果如下:

4、AND和OR:

查询语文成绩大于80分,且英语成绩大于80分的同学

代码如下:

select name, chinese, english from exam_result where (chinese > 80) and (english > 80);

结果如下:

查询语文成绩大于80分,或英语成绩大于80分的同学

代码如下:

 select name, chinese, english from exam_result where (chinese > 80) or (english > 80);

结果如下:

5、范围查询

        (1) BETWEEN ... AND

        代码展示:

select * from exam_result where chinese between 80 and 90;

        结果展示:


     这里用and也可以实现

代码:

 select * from exam_result where chinese >= 80 and chinese <= 90;

        (2)IN

代码如下:

 select name, math from exam_result where math in(58, 59, 98, 99);

结果展示:

这里也可以用or

代码:

select name, math from exam_result where math = 58 or math = 59 or math = 98 or math = 99;

6、模糊查询:LIKE

        % 匹配任意多个(包括 0 个)字符
        _ 匹配严格的一个任意字符


代码展示:

 select name from exam_result where name like '孙%';

结果如下:

代码展示:

 select name from exam_result where name like '孙_';

结果如下:

7、NULL的查询:IS [NOT] NULL        

判断表里面某个列是否为NULL,或者不是NULL

代码如下:

select name from exam_result where name is not null;

结果如下:

代码如下:

select name from exam_result where name is NULL;

结果如下:

8、分页查询:LIMIT

语法:
-- 起始下标为 0
-- 从 0 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;
-- 从 s 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n;
-- 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;
 

                 


四、修改(Update)
 

语法:

UPDATE table_name SET column = expr [, column = expr ...]
[WHERE ...] [ORDER BY ...] [LIMIT ...]

 

案例:
 

-- 将孙悟空同学的数学成绩变更为 80 分

语法:

update 表名 set 要修改的列名 = 要修改的值 where 列名 = 要指定修改的列里的值

代码如下:

mysql> update exam_result set math = 80 where name = '孙悟空';

结果如下:

-- 将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分

代码如下:

 update exam_result set math = 60, chinese = 70 where name = '曹孟德';

结果如下:


-- 将总成绩倒数前三的 3 位同学的数学成绩加上 30 分

代码如下:

结果如下:


-- 将所有同学的语文成绩更新为原来的 2 倍

代码如下:

 update exam_result set chinese = chinese * 2;

结果如下:


五、删除(Delete)

语法:

DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]
 

案例:
 

-- 删除孙悟空同学的考试成绩

代码如下:

delete from exam_result where name = '孙悟空';

结果如下:


-- 删除整张表数据

准备一张表,如下:

代码如下:

 delete from for_delete;

结果如下:


六、内容重点总结

新增

查询

修改

删除


都看到这了,点个赞再走吧,谢谢谢谢谢!!!

相关文章:

MySQL中表的增删改查

目录 一、CRUD 二、新增&#xff08;Create&#xff09; &#xff08;1&#xff09;语法 &#xff08;2&#xff09;单行数据全列插入 &#xff08;3&#xff09;多行数据指定列插入 三、查询&#xff08;Retrieve&#xff09; &#xff08;1&#xff09;语法 …...

web.py python服务器两种模板template使用方法

【版权声明】 本文为博主原创文章&#xff0c;未经博主允许严禁转载&#xff0c;我们会定期进行侵权检索。 更多python应用或算法总结请关注我的博客&#xff1a;https://blog.csdn.net/suiyingy&#xff0c;或”乐乐感知学堂“公众号。 web.py是Python Web框架之一&#xff0c…...

Flutter 01 目录结构入门

一、Flutter目录结构&#xff1a; 二、Flutter入口文件、入口方法&#xff1a; 三、Flutter Demo&#xff1a; demo1&#xff1a; import package:flutter/material.dart;//MaterialApp 和 Scaffold两个组件装饰App void main() {runApp(MaterialApp(home: Scaffold(appBar: A…...

Esxi安装OpenWrt

最近折腾下软路由主要就是实现局域网内的上网。 1.StarWind V2V Converter下载 先去下载个StarWind V2V Converter&#xff0c;觉得麻烦我在网上有找到一个博主的地址点击这里。 这是官网地址传送门&#xff0c;然后一阵乱输入点击下载 然后 双击之后无脑下一步即可。 2.Op…...

tuple 简易实现(C++ 模板元编程)

std::tuple 在标准库里面&#xff0c;tuple主要有下面四个类模板 or 函数模板 tupletuple_sizetuple_elementget 在后续有实现&#xff1a;tuple_size_v tuple_size::value和tuple_element_t tuple_element::type。 事例Example&#xff1a; auto tup std::tuple<in…...

Http代理与socks5代理有何区别?如何选择?(二)

上篇文章我们基本分别了解了http代理与socks5代理的定义与优缺点&#xff0c;接下来我们继续来了解http代理与socks5代理之间的比较与区别。 一、两者的比较 1、功能比较 HTTP代理专门用于Web流量&#xff0c;并在处理HTTP和HTTPS协议方面非常高效。它们可以修改正在传输的数…...

java中main方法和@Test注解的区别

Java的main方法和Test注解在用途和功能上有很大的区别。 main方法是Java应用程序的入口点。当你运行一个Java程序时&#xff0c;JVM会首先查找具有public static void main(String[] args)签名的类&#xff0c;并从这个方法开始执行程序。main方法通常用于控制程序的启动、执行…...

C++进阶语法——STL 标准模板库(下)(Standard Template Library)【学习笔记(七)】

文章目录 STL 代码示例1、迭代器2、算法3、array容器示例4、vector示例5、deque&#xff08;double ended queue&#xff0c;双端数组&#xff09;示例6、list&#xff08;链表&#xff09;容器7、set示例8、map示例9、stack 示例10、queue示例11、priority_queue &#xff08;…...

力扣:求最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 示例1: 输入: strs ["flower", "flow" , "flight"] 输出: "fl" 示例2: 输入: strs ["dog","racecar","car&…...

Redis入门04-消息通知

目录 Redis中的消息通知 命令行操作 Redis中的管道 Redis中的消息通知 Redis可以用作消息队列的中间件&#xff0c;它提供了一种轻量级、高性能的消息传递机制&#xff0c;适用于实时通信、任务队列、事件处理等各种应用。以下是有关如何使用Redis作为消息队列的一些重要信…...

关于idea使用的一些操作设置

关于idea使用的一些操作设置 1. 常用的一下设置1.1 快捷键相关1.2 配置自动生成注释&#xff08;类、方法等&#xff09;1.3 maven项目相关1.4 常见其他的一些操作设置 2. IntelliJ IDEA 取消param注释中参数报错提示3. idea同时打开多个文件&#xff0c;导航栏不隐藏、自动换行…...

CLion 2023.2.2(C ++ IDE智能代码编辑器)

CLion 2023是一款跨平台C/C集成开发环境&#xff08;IDE&#xff09;。它为Mac用户提供了高效的编程体验&#xff0c;帮助程序员们在Mac平台上进行C/C开发。 CLion 2023支持多种编译器和调试器&#xff0c;并具有强大的代码分析和导航功能。它还为用户提供了许多便捷的工具和插…...

企业级API资产如何管理

在当今数字化时代&#xff0c;API已成为企业开发和创新的重要工具&#xff0c;如何高效地管理和调度这些资产成为了企业发展的重要课题。API资产管理的出现&#xff0c;为企业解决了这一难题&#xff0c;通过合理管理和利用API资产&#xff0c;企业可以更好地推动业务发展&…...

Git https方式拉的代码IDEA推送代码报错

报错信息 fatal: could not read Username for ‘https://codehub-cn-south-1.devcloud.huaweicloud.com’: No such file or directory 18:18:39.885: [recovery_pattern] git -c credential.helper -c core.quotepathfalse -c log.showSignaturefalse push --progress --porc…...

C++ capacity()用法总结

1. 容器的容量 容器的size是指它已经保存的元素的数目&#xff1b;而capacity则是在不分配新的内存空间的前提下它最多可以保存多少元素。capacity()&#xff0c;size()&#xff0c;reserve()&#xff0c;resize()这几个都是不太容易区分的函数 functionmeancapacity()获得容…...

TensorFlow2.0教程1-Eager

文章目录 张量极其操作1 张量自定义层一、网络层layer的常见操作二、实现自定义网络层三、网络层组合自动求导一、Gradient tapes二、记录控制流三、高阶梯度自定义训练(基础)一、Variables二、示例:拟合线性模型1、定义模型2.定义损失函数3.获取训练数据4.定义训练循环张…...

Redis学习系统(持续更新中)

RedisExample 课程介绍 目标是提供一个高效、可靠的学习和实践Redis的环境。我们将通过搭建Redis集群、实现缓存数据的持久化存储、制定缓存数据的淘汰策略以及同步缓存数据等步骤来深入了解和学习Redis的特性和功能。通过这个项目&#xff0c;你可以掌握Redis的核心概念和技…...

el-select获取id和name

一般选中节点只会返回:value绑定的数据给v-model中&#xff0c;要想获取id和name一并传给后端&#xff0c;需要如下几步&#xff1a; 1、给选择框添加点击事件 input"selectChangeParent" 2、v-for中多添加一个参数 index <el-select v-model"inputForm.pr…...

最简单的驱动程序

简介 在 Linux 内核中,Makefile 和 Kconfig 是两个重要的文件,它们分别承担着不同的作用。 Makefile Makefile 是一个文本文件,用于定义编译和构建内核的规则。它使用 make 工具来管理和自动化构建过程。Makefile 定义了编译器、链接器、编译选项、目标文件、源文件等信息…...

MFC String类的初始化学习

之前写过CString的用法&#xff1b; VC CString 编程实例图解_bcbobo21cn, cstring-CSDN博客 下面单独看一下CString的各种初始化方式&#xff1b; void CTest2View::OnDraw(CDC* pDC) {CTest2Doc* pDoc GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for nati…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...