在操作之前,我们需要明确自己操作的是哪部分的数据。

一、新增(create)
1.单行数据
insert into [(字段1,字段2)] values (值,值);
insert into student(id,name) values (1,'张三');

执行成功,有一条数据被写入数据表。
- 1.如果列与值的个数不匹配就会报一个错误,这条记录无法写入数据表

- 2.简写方式:不用在表名后面指定列名,在values列表中按定义字段的顺序设置相应的值。
insert into 表名 values (值,值...);

2.指定列插入
insert into 表名(列名) values (值);

3.多行插入
insert into 表名[(列名...)] values (值),(值)...

二、查询(retrieve)
1.全列查询
select *from 表名;

⚠️ 注意:这个一个非常危险的操作,因为在生产环境中,一个表中的数据量可能会很多很多,当一个查询开始的时候,磁盘会开销,网络会开销,这些都是非常紧缺的资源。这一条语句开始执行的时候,可能会吃光服务器所有资源,其他程序或数据库操作就要等待当前sql语句执行完以后才能继续执行。
2.指定列查询
select 列名[,列名]...from 表名;
指定查询id,姓名,和语文成绩。

- 查询的结果是一个表达式

- 把所有学生的语文成绩在原来的基础上加上十分

- 列与列之间也可以参与运算,计算总分

还可以利用as关键字给表达式取别名
3.去重:distinct
select distinct 列名 from 表名;
这里没有加distinct关键字查询出来的成绩有两个98分

加上distinct关键字查询出来的记录如下

重复的记录只保留了一条。
⚠️ 注意:在查询结果中,每一列都相同mysql才认为他们是重复的数据,也就是数据行与数据行之间,两条记录完全一致才是重复的数据。
例如:
在查询数学成绩时,加上id这一列,第一列和第三列记录,虽然数学成绩一致,但是他们的id不一致,所以distinct关键字也就不把他们当做重复的数据行。

4.排序:order by
排序规则
1.升序 asc(不指定时,默认是升序)
2.降序 desc
select 列名 from 表名 order by 列名[asc | desc];
- 1.按语文成绩从高到低排序(desc)

- 2.对数学成绩进行升序排序

- 3.null数据排序,视为比任何值都笑,升序出现在最上面,降序出现在最下面。

- 4.使用表达式及别名排序
⚠️ 注意:mysql中null的特殊性
不论什么值和null进行运算,返回值都是null
null始终被判定为false
null的值不是我们以前学过的其他编程语言中的0,在mysql中它就是null
- 5.可以对多个字段进行排序,排序的优先级与书写有关
例如:先按数学降序排序,再按语文升序排序,再按英语进行升序排序
5.条件查询:where
语法:
select *from 表名 where 列名/表达式 运算符 条件;
5.1 运算符说明表
| 运算符 | 说明 |
|---|---|
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
= | 等于,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 个)任意字符,_ 表示任意一个字符 |
5.5逻辑运算符说明表
| 运算符 | 说明 |
|---|---|
and | 多个条件必须都为 true(1),结果才是 true(1) |
or | 任意一个条件为 true(1),结果为 true(1) |
not | 条件为 true(1),结果为 false(0) |
⚠️ 注意:
- where条件可以使用表达式,但不能使用别名。
- and的优先级高于or,在同时使用时,需要使用小括号()包裹优先执行的部分
例如
- 1.like模糊匹配
%表示多个任意字符,_表示任意一个字符


- 2.查询英语成绩不及格的同学(<60)

- 3.查询语文成绩好于英语成绩的同学

.⚠️ 注意:在一行数据中的两个列是可以进行比较的,但不能跨行比较
。 - 4.查询总分在200分一下的同学

.⚠️ 注意:在where子句中不能用别名作为过滤条件,在where条件中使用了表达式,那么就要把表达式完整的写在where子句中,不能使用别名。
出现这种现象和mysql执行sql语句的顺序有关
1.如果要在数据中查某些数据,首先要确定表,先执行from;
2.在查询过程中要根据指定的查询条件把符合条件的数据过滤出来,这时执行的就是where子句
3.执行select后面的指定的列,这些列最终需要加入到结果集
4.排序操作,根据order by子句中指定的列名和排序规则进行排序。

- 5.查询语文成绩大于80且英语成绩大于80的同学

- 6.查询语文成绩大于80或英语成绩大于80的同学

- 7.观察and和or的优先级
and的优先级高于or
- 8.查询语文成绩在[80,90]分的同学的语文成绩

- 9.查询数学成绩是58 或者 59 或者 98 或者 99 分的同学
查询方法 1.用or把所有的条件关联起来
用in(集合)
- 10.null的查询:is[not] null

- 11.分页查询:limit
作用:限制查询结果集中的条数
分页查询在项目开发中运用的非常多,只要查询的是一个记录的集合(多条记录)都在使用分页查询。
--起始下标为0 --从0开始,筛选n条结果 select....from 表名 [where...] [order by...] limit n;

--从s开始,筛选n条结果 select....from 表名 [where...] [order by...] limit s, n;

⚠️ 注意:如果起始位置超过了整个结果集的范围,也是可以执行的,只不过是一个空集

--从s开始,筛选n条结果,比第二种用法更明确,推荐使用 --offset偏移量,也就是从哪开始的意思 select....from 表名 [where...] [order by...] limit n offset s;

⚠️ 注意:s = (当前页号-1)*每页显示的记录数
三、修改(update)
update 表名 set 列名1 = 值1, 列名2 = 值2 where 条件;
- 1.将孙悟空的数学成绩变更为80分

- 2.将孙权的数学成绩变更为60分,语文成绩变更为73分

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

四、删除(delete)
delete from 表名 [where ...] [order by ...] [limit...]
- 1.删除孙悟空的考试成绩

- 2.删除英语成绩倒数前三的同学的考试成绩
先对英语成绩进行升序排序,再限制删除的条数。
⚠️ 注意:delete不加where条件是个非常危险的操作,会把表中的所有记录都删除。
五、文章知识总结
一、create(新增)
- 使用
insert into向数据表中插入数据 - 支持:
- 单行插入
- 指定列插入
- 多行插入(推荐,效率更高)
- ⚠️ 插入时必须保证 列数与值的个数一致
二、retrieve(查询)
查询是数据库中最常用的操作,重点掌握以下内容:
基础查询
select *(生产环境慎用)- 指定列查询(推荐)
表达式查询
- 列可以参与运算
- 可以使用
as起别名
distinct 去重
- 只有整行数据完全一致才会被认为重复
order by 排序
- 默认升序
asc - 降序
desc - 支持多字段排序(前面的优先级更高)
- null 在升序中最小,在降序中最大
where 条件过滤(重点)
- 支持比较运算符:
> >= < <= = != - 支持逻辑运算符:
and、or、not - 支持
between、in、like、is null - ⚠️
and优先级高于or - ⚠️
where不能使用别名
mysql 执行顺序(高频考点)
from → where → select → order by → limit
理解执行顺序可以帮助我们:
- 明白为什么 where 不能使用别名
- 理解排序为什么最后执行
- 理解分页为什么写在最后
三、update(修改)
- 使用
update ... set ... where ... - ⚠️ 不加
where会更新整张表(极度危险)
四、delete(删除)
- 使用
delete from ... where ... - 可以结合
order by + limit精准删除 - ⚠️ 不加
where会删除整张表数据
高频易错点总结
null不能使用=判断,要使用is nullwhere中不能使用select定义的别名and优先级高于or- 分页公式:
s = (当前页号 - 1) * 每页条数
- 生产环境慎用:
select *- 不带
where的update - 不带
where的delete
一句话总结
先确定数据来源(from)
再过滤数据(where)
再选择字段(select)
再排序(order by)
最后限制条数(limit)
掌握这条主线,mysql 的 crud 操作基本就能熟练掌握。
到此这篇关于mysql数据库增删改查的文章就介绍到这了,更多相关mysql增删改查内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!


发表评论