首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【数据库】MySQL数据库 增删改查-->CRUD

【数据库】MySQL数据库 增删改查-->CRUD

作者头像
那我掉的头发算什么
发布2026-01-12 18:46:32
发布2026-01-12 18:46:32
1430
举报

CRUD

CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写。

新增(Create)

语法

代码语言:javascript
复制
INSERT [INTO] table_name
 [(column [, column] ...)] 
 VALUES (value_list) [, (value_list)] ...
 
value_list: value, [, value] .。。

案例: 先创建一个学生表:

代码语言:javascript
复制
create table student (
    -> id int,
    -> name varchar(10),
    -> point decimal(4,1)
    -> );
代码语言:javascript
复制
insert into student (id,name,point) values(1,'张三',95),(2,'李四',95.5);

此时学生表里面就出现了两行数据。

可以通过省略写表名的方法来实现全列插入,也可以不完全插入、指定列插入。但是不可以用通配符*来代表全列。

没有被插入的列的值默认为null。

查询(Retrieve)

语法:

代码语言:javascript
复制
SELECT
 [DISTINCT] {* | {column [, column] ...} 
 [FROM table_name]
 [WHERE ...]
 [ORDER BY column [ASC | DESC], ...]
 LIMIT ...
在这里插入图片描述
在这里插入图片描述

我们可以用这种方法导入一个sql文件并且运行它。 如果大家想要跟我使用一样的案例,可以去我的码云找到这个文件的源码: 码云链接直达

全列查询

通常情况下不建议使用 * 进行全列查询 – 1. 查询的列越多,意味着需要传输的数据量越大; – 2. 可能会影响到索引的使用。(索引待后面课程讲解) 全列查询从某种意义来说是一个比较危险的操作。

在这里插入图片描述
在这里插入图片描述

指定列查询

在这里插入图片描述
在这里插入图片描述

查询字段为表达式&别名

给一个常数:

在这里插入图片描述
在这里插入图片描述

在原来列的值的基础上加上一个常数

在这里插入图片描述
在这里插入图片描述

列与列之间也可以进行运算:

在这里插入图片描述
在这里插入图片描述

可以使用as关键字给表达式起一个别名 语法:

代码语言:javascript
复制
SELECT column [AS] alias_name [...] FROM table_name;

具体操作如下:

在这里插入图片描述
在这里插入图片描述

补充别名相关的性质: 1.省略as:

在这里插入图片描述
在这里插入图片描述

2.字符串可以不加’ ’

在这里插入图片描述
在这里插入图片描述

3.如果字符串中间有空格,必须加’ ’

在这里插入图片描述
在这里插入图片描述

去重:DISTINCT

语法:

代码语言:javascript
复制
select distinct 列名 from 表名
在这里插入图片描述
在这里插入图片描述

数学成绩里有两个98分

在这里插入图片描述
在这里插入图片描述

如果使用distinct查询就会发现这时候只剩下了一个98分。

在这里插入图片描述
在这里插入图片描述

注意:只有完全相同的两个数据才会被去重,像上面这种情况:只有数学成绩是重复的其他的都不是重复的,这时候不会被去重。

在这里插入图片描述
在这里插入图片描述

就算插入了一个孙行者,跟孙悟空成绩一摸一样,也不可以被去重。

排序:ORDER BY

语法:

代码语言:javascript
复制
-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为 ASC
SELECT ... FROM table_name [WHERE ...] 
 ORDER BY column [ASC|DESC], [...]
  1. 没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序
  2. 没标明升序还是降序,默认是升序排列
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  1. NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面
在这里插入图片描述
在这里插入图片描述

插入两个数据之后进行比较会发现,null在最上面,比负数还要靠上面,视为比任意数都要小。

  1. 使用表达式或者别名排序
在这里插入图片描述
在这里插入图片描述

null与任意数相加还是null

在这里插入图片描述
在这里插入图片描述

注意:上面这种写法是错误的,因为系统将后面order by 那里的‘总分’看作了一个字符常量,排序无效。要想如此做,应该用到反引号:``。

在这里插入图片描述
在这里插入图片描述
  1. 可以对多个字段进行排序,排序优先级随书写顺序
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

还可以一个升序一个降序。

条件查询:WHERE

比较运算符:

在这里插入图片描述
在这里插入图片描述

逻辑运算符:

在这里插入图片描述
在这里插入图片描述

**注:

  1. WHERE条件可以使用表达式,但不能使用别名。
在这里插入图片描述
在这里插入图片描述

图中的语句执行顺序为2314 在执行where时还没执行select后面的句子,系统不知道使用了别名,所以会报错

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

基本查询:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

and 和 or:

在这里插入图片描述
在这里插入图片描述

使用起来与其他语言没啥区别。 但是and的优先级比or更大,所以使用时会出现下面的情况:

在这里插入图片描述
在这里插入图片描述

范围查询:

在这里插入图片描述
在这里插入图片描述

模糊查询:

xx%匹配任意多个字符 xx_匹配严格的一个字符

在这里插入图片描述
在这里插入图片描述

null的查询:

在这里插入图片描述
在这里插入图片描述

除此以外还可以使用 <=>来判断是否为Null。 但是不可以使用=。

在这里插入图片描述
在这里插入图片描述

分页查询:LIMIT

语法:

代码语言:javascript
复制
-- 起始下标为 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;
在这里插入图片描述
在这里插入图片描述

基本用法:

在这里插入图片描述
在这里插入图片描述

每页包含多少个数据,意味着偏移量为多少。 我们就用这个表来实现一下分页。

在这里插入图片描述
在这里插入图片描述

最开始的时候设置偏移量为0,后面依次 + 2。 或者偏移量 = (第几次 - 1)*2。

修改(Update)

语法:

代码语言:javascript
复制
UPDATE table_name SET column = expr [, column = expr ...]
 [WHERE ...] [ORDER BY ...] [LIMIT ...]
在这里插入图片描述
在这里插入图片描述

从上面这段代码可以看出: 一次性可以更新符合要求的多条数据 与更新之后的数据相同的数据,只会匹配,不算做更改过。

练习: 将总成绩倒数前三的 3 位同学的数学成绩减去 30 分

在这里插入图片描述
在这里插入图片描述

删除(Delete)

语法:

代码语言:javascript
复制
DELETE FROM  table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]

删除孙悟空的所有成绩:

在这里插入图片描述
在这里插入图片描述

通过where条件匹配了两条数据,所以删除了两条数据。

删除英语成绩倒数前三的考试成绩:

总结

SQL 的 CRUD 操作是数据库基础,包含新增、查询、更新和删除四大核心功能。新增(Create)通过 INSERT 语句实现,可指定列或全列插入,未插入列默认为 NULL,且不支持用 * 代表全列,同时支持批量插入多条数据。查询(Retrieve)依赖 SELECT 语句,全列查询因可能增加数据传输和影响索引不建议常用;可指定列查询,也能对字段用表达式计算,并用 AS(可省略)起别名,字符串别名无空格可省引号、有空格需加引号;DISTINCT 仅对完全相同的数据去重;ORDER BY 默认升序,NULL 视为最小值,可按表达式、别名或多字段排序,优先级按书写顺序;WHERE 条件查询支持比较和逻辑运算符,且 AND 优先级高于 OR,需注意条件中不能用别名;LIMIT 用于分页,起始下标为 0,可指定起始位置和获取数量。更新(Update)用 UPDATE 语句,能批量更新符合条件的数据,可结合 WHERE、ORDER BY、LIMIT 精准定位范围。删除(Delete)通过 DELETE 语句实现,同样可借助 WHERE、ORDER BY、LIMIT 指定删除范围,实现精准删除。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-10-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CRUD
  • 新增(Create)
  • 查询(Retrieve)
    • 全列查询
    • 指定列查询
    • 查询字段为表达式&别名
    • 去重:DISTINCT
    • 排序:ORDER BY
    • 条件查询:WHERE
    • 分页查询:LIMIT
  • 修改(Update)
  • 删除(Delete)
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档