当前位置: 首页 > 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…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...