MySQL—表的增删改查

CRUD :

Create(创建), Retrieve(读取),Update(更新),Delete(删除)

一、Create

语法:

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

创建表:
在这里插入图片描述

1.1、单行数据 + 全列插入

在这里插入图片描述

1.2、多行数据 + 指定列插入

单行数据+指定列插入:
在这里插入图片描述

多行数据+指定列插入:

在这里插入图片描述

1.3、插入否则更新

由于 主键 或者 唯一键 对应的值已经存在而导致插入失败

可以选择性的进行同步更新操作 语法:

INSERT … ON DUPLICATE KEY UPDATE
column = value [, column = value] …

在这里插入图片描述

1.4 替换

主键 或者 唯一键 没有冲突,则直接插入;
主键 或者 唯一键 如果冲突,则删除后再插入

在这里插入图片描述

多个信息冲突时:

在这里插入图片描述

二、Retrieve

语法:

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

2.1、全列查询

通常情况下不建议使用 * 进行全列查询

  1. 查询的列越多,意味着需要传输的数据量越大;
  2. 可能会影响到索引的使用。(索引待后面课程讲解)

在这里插入图片描述

2.2、指定列查询

指定列的顺序不需要按定义表的顺序来

在这里插入图片描述

2.3、查询字段为表达式

表达式不包含字段

在这里插入图片描述

表达式包含一个字段

在这里插入图片描述

表达式包含多个字段

在这里插入图片描述

2.4、为查询结果指定别名

语法:

SELECT column [AS] alias_name […] FROM table_name;

在这里插入图片描述

2.5 结果去重

select distinct 列名 from 表名;

在这里插入图片描述

没有去重,因为ID这一列不重复,去重必须要求一行内容都重复。

在这里插入图片描述

2.6 WHERE 条件

比较运算符:

运算符说明
>, >=, <, <=大于,大于等于,小于,小于等于
=等于,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 个)任意字符;_ 表示任意一个字符

逻辑运算符:

运算符说明
AND多个条件必须都为 TRUE(1),结果才是 TRUE(1)
OR任意一个条件为 TRUE(1), 结果为 TRUE(1)
NOT条件为 TRUE(1),结果为 FALSE(0)

>, >=, <, <=,=

在这里插入图片描述

<=> : 等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)

直接=NULL无法找到(不进行任何数值运算)

在这里插入图片描述

想找到空字段必须:
在这里插入图片描述

NOT:条件为 TRUE(1),结果为 FALSE(0)
如上图:取反

AND :语法:
多个条件必须都为 TRUE(1),结果才是 TRUE(1)

BETWEEN a0 AND a1
范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1)

在这里插入图片描述

OR: 任意一个条件为 TRUE(1), 结果为 TRUE(1)

在这里插入图片描述

IN (option, …):如果是 option 中的任意一个,返回 TRUE(1)

在这里插入图片描述

LIKE:模糊匹配

% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符

在这里插入图片描述

where可以用别名进行查找嘛?

在这里插入图片描述
我们发现并不可以,为什么,这里的where语句中,无法使用别名呢?

因为我们需要先按照条件进行筛选我们的数据再按照要求计算数据
不先筛选出我们需要的数据,计算出来的数据毫无意义。

在这里插入图片描述

2.7、结果排序

语法:

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

注意:没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序

在这里插入图片描述

2.8、筛选分页结果

语法:

– 起始下标为 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;

建议:对未知表进行查询时,最好加一条 LIMIT 1,避免因为表中数据过大,查询全表数据导致数据库卡死

在这里插入图片描述

在这里插入图片描述

三、Update

语法:

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

对查询到的结果进行列值更新

在这里插入图片描述

四、 Delete

语法:

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

在这里插入图片描述

4.1、Delete删除整张表数据

在这里插入图片描述

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

4.2、截断表

语法:

TRUNCATE [TABLE] table_name

注意:这个操作慎用

  1. 只能对整表操作,不能像 DELETE 一样针对部分数据操作;
  2. 实际上 MySQL 不对数据操作,所以比 DELETE 更快,但是TRUNCATE在删除数据的时候,并不经过真正的事物,所以无法回滚;
  3. 会重置 AUTO_INCREMENT 项

在这里插入图片描述

在这里插入图片描述

五、聚合函数

函数说明
COUNT([DISTINCT] expr)返回查询到的数据的 数量
SUM([DISTINCT] expr)返回查询到的数据的 总和,不是数字没有意义
AVG([DISTINCT] expr)返回查询到的数据的 平均值,不是数字没有意义
MAX([DISTINCT] expr)返回查询到的数据的 最大值,不是数字没有意义
MIN([DISTINCT] expr)返回查询到的数据的 最小值,不是数字没有意义

七、group by

在select中使用group by 子句可以对指定列进行分组查询

select column1, column2, … from table group by column;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清晨白米稀饭.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值