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;

结果如下:


六、内容重点总结

新增

查询

修改

删除


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

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

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

相关文章

SortableJS:vuedraggable实现元素拖放排序

文档&#xff1a;https://sortablejs.github.io/Sortable/github&#xff1a;https://github.com/SortableJS/SortableVue2: https://github.com/SortableJS/Vue.DraggableVue3: https://github.com/SortableJS/vue.draggable.nextnpm https://www.npmjs.com/package/vuedragga…

k8s-服务网格实战-入门Istio

istio-01.png 背景 终于进入大家都比较感兴趣的服务网格系列了&#xff0c;在前面已经讲解了&#xff1a; 如何部署应用到 kubernetes服务之间如何调用如何通过域名访问我们的服务如何使用 kubernetes 自带的配置 ConfigMap 基本上已经够我们开发一般规模的 web 应用了&#xf…

c++-二叉树进阶

文章目录 前言一、二叉搜索树1、二叉搜索树介绍2、二叉搜索树循环实现3、二叉搜索树递归实现4、二叉搜索树的性能分析5、二叉搜索树的应用6、二叉树练习题6.1 根据二叉树创建字符串6.2 二叉树的层序遍历6.3 二叉树的层序遍历 II6.4 二叉树的最近公共祖先6.5 二叉搜索树与双向链…

ElasticSearch搜索技术深入与聚合查询实战

ES分词器详解 基本概念 分词器官方称之为文本分析器&#xff0c;顾名思义&#xff0c;是对文本进行分析处理的一种手段&#xff0c;基本处理逻辑为按照预先制定的分词规则&#xff0c;把原始文档分割成若干更小粒度的词项&#xff0c;粒度大小取决于分词器规则。 分词发生时…

R语言绘图-5-条形图(修改坐标轴以及图例等)

0. 说明&#xff1a; 1. 绘制条形图&#xff1b; 2. 添加文本并调整位置&#xff1b; 3. 调整x轴刻度的字体、角度及颜色&#xff1b; 4. 在导出pdf时&#xff0c;如果没有字体&#xff0c;该怎么解决问题&#xff1b; 1. 结果&#xff1a; 2. 代码&#xff1a; library(ggp…

文本批量处理,一键转换HTML文件编码,释放您的繁琐工作!

亲爱的用户&#xff0c;您是否曾经为需要手动转换HTML文件编码而耗费大量时间和精力而感到困扰&#xff1f;现在&#xff0c;我们为您提供了一款强大的文本批量处理工具&#xff01;让您一键将HTML文件编码进行转换&#xff0c;轻松释放您的繁琐工作&#xff01; 首先&#xf…

【带货案例】从美区十月带货达人身上寻找商品爆款秘诀!

2023只剩下最后两个月&#xff0c;年底也是各大商家冲刺卖货的黄金时期&#xff01; 带货过程中的一个重要环节即【达人营销】&#xff0c;背受跨境卖家关注。 下面选取美区十月带货达人TOP3&#xff0c;分析其带货秘诀。 据超店有数达人榜单显示&#xff1a;美区十月带货达人…

Qt中正确的设置窗体的背景图片的几种方式

Qt中正确的设置窗体的背景图片的几种方式 QLabel加载图片方式之一Chapter1 Qt中正确的设置窗体的背景图片的几种方式一、利用styleSheet设置窗体的背景图片 Chapter2 Qt的主窗口背景设置方法一&#xff1a;最简单的方式是通过ui界面来设置&#xff0c;例如设置背景图片方法二 &…

leetCode 198.打家劫舍 动态规划入门:从记忆化搜索到递推

leetCode 198.打家劫舍 198. 打家劫舍 - 力扣&#xff08;LeetCode&#xff09; 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一…

LuaHttp库写的一个简单的爬虫

LuaHttp库是一个基于Lua语言的HTTP客户端库&#xff0c;可以用于爬取网站数据。与Python的Scrapy框架类似&#xff0c;LuaHttp库也可以实现网站数据的抓取&#xff0c;并且可以将抓取到的数据保存到数据库中。不过需要注意的是&#xff0c;LuaHttp库并不像Scrapy框架那样具有完…

3 数据库系统核心知识点

一、事务 先回顾一下事务的概念&#xff1a; 事务指的是满足 ACID 特性的一组操作&#xff0c;可以通过 Commit 提交一个事务&#xff0c;也可以使用 Rollback 进行回滚ACID 1. 原子性(Atomicity) 1.事务被视为不可分割的最小单元&#xff0c;事务的所有操作要么全部提交成…

pytorch dropout 置零 + 补偿性放缩

一句话概括&#xff1a;&#xff08;训练过程中&#xff09;Dropout 操作 随机置零 非置零元素进行后补偿性放缩。以保证dropout前后数据scale不变。 详细解释(来自chatgpt): 在 PyTorch 中&#xff0c;dropout 的操作不仅仅是将某些元素置零。为了确保期望输出在训练和测试…

Java NIO 编程

1. 简介 Java NIO 是 JDK 1.4 中引入的新的 IO 方式&#xff0c;它主要包含 Buffer、Channel、Selector 这三个核心的组件&#xff0c;它与传统 IO 的区别如下&#xff1a; NIO IO 面向缓冲 面向流 同步非阻塞 同步阻塞 多路复用&#xff08;选择器&#xff09; 无 1.1…

php语言

文章目录 常用命令Apache命令php命令 常用命令 Apache命令 查看版本号 D:\cjm\soft-work\phpStudy\phpstudy_pro\Extensions\Apache2.4.39\bin>httpd -v检测运行环境 httpd -tphp命令 PHP版本号 需要进入php目录 php -v

人工智能-深度学习计算:层和块

我们关注的是具有单一输出的线性模型。 在这里&#xff0c;整个模型只有一个输出。 注意&#xff0c;单个神经网络 &#xff08;1&#xff09;接受一些输入&#xff1b; &#xff08;2&#xff09;生成相应的标量输出&#xff1b; &#xff08;3&#xff09;具有一组相关 参数…

我的创作纪念日--AI小怪兽打怪进阶路

目录 自我介绍 时间轴 收获 日常 成就 憧憬 自我介绍 希望您持续关注AI小怪兽的不断进化、打怪&#xff01;&#xff01;&#xff01; AI小怪兽&#xff1a;1&#xff09;YOLO骨灰级玩家&#xff0c;YOLOv5、v7、v8优化创新&#xff0c;复现计算机视觉顶会&#xff0c;…

k8s的概念

概念 它是一种开源的容器编排平台&#xff0c;用于自动化部署&#xff0c;扩展和管理容器化的应用程序&#xff0c;它提供了一种容器编排和管理的方式&#xff0c;可以帮助开发人员更轻松地管理容器化的的应用程序&#xff0c;并且提供了一种跨多个主机的自动化部署和管理机制…

[python 刷题] 2866 Beautiful Towers II

[python 刷题] 2866 Beautiful Towers II 题目如下&#xff1a; You are given a 0-indexed array maxHeights of n integers. You are tasked with building n towers in the coordinate line. The ith tower is built at coordinate i and has a height of heights[i]. A co…

Win YAPI + Jenkins 实现接口自动化测试

自动化测试 传统的接口自动化测试成本高&#xff0c;大量的项目没有使用自动化测试保证接口的质量&#xff0c;仅仅依靠手动测试&#xff0c;是非常不可靠和容易出错的。 为了解决这个问题&#xff0c;使用YAPI接口自动化测试功能&#xff0c;只需要配置每个接口的入参和对 RE…

windows docker desktop 更换镜像 加速

最近 docker hub 访问不了; 经过研究 可以通过添加 代理镜像网址 添加代理服务器的方式 实现完美访问 1添加镜像网站 修改成国内镜像地址就能享受到飞一般的速度&#xff0c;但有一个问题&#xff0c;部分站点镜像不全或者镜像比较老&#xff0c;建议使用多个镜像站。 https…