mysql数据库的表的增删查改

目录

表的增删查改

6.1:增加

6.2:查找

6.3:更新

6.4:删除

6.5: 插入查询结果

6.6:聚合函数

6.7:group by分组


关键字的先后顺序:from > on> join > where > group by > with > having > select > distinct > order by > limit

表的增删查改

6.1:增加

6.1.1:直接插入

语法:

INSERT [INTO] table_name
        [(column [, column] ...)]
        VALUES (value_list) [, (value_list)] ...


value_list: value, [, value] ...

主表: 

单行全列插入:

多行指定列插入:

6.1.2:判断插入时候是否更新:

语法:

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

-- 0 row affected: 表中有冲突数据,但冲突数据的值和 update 的值相等
-- 1 row affected: 表中没有冲突数据,数据被插入
-- 2 row affected: 表中有冲突数据,并且数据已经被更新(更新值为update后的值)

通过mysql函数获取收到影响的最近数据行数

语法:SELECT ROW_COUNT();

6.1.3:替换

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

-- 1 row affected: 表中没有冲突数据,数据被插入
-- 2 row affected: 表中有冲突数据,删除后重新插入

6.2:查找

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

6.2.1:select查询

通常情况下不建议使用 * 进行全列查询
1. 查询的列越多,意味着需要传输的数据量越大
2. 可能会影响到索引的使用

全列查询:

指定列查询:

查询字段为表达式:

 

 为查询结果指定别名:

语法:SELECT column [AS] alias_name [...] FROM table_name;

结果去重:

6.2.2:where条件查询

比较运算符和逻辑运算符:

运算符说明
=等于,NULL不安全,NULL = NULL结果为NULL
<=>等于,NULL安全,NULL <=> NULL的结果是TRUE(1)
>大于
<小于
>=大于或等于
<=小于或等于
<> 或 !=不等于
BETWEEN ... AND ...在两个值之间
LIKE模糊搜索模式,% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符
IN (...)在给定列表中
IS NULL是空值
IS NOT NULL不是空值
AND逻辑"与",如果两个操作数都为TRUE,则条件成立
OR逻辑"或",如果两个操作数中任何一个为TRUE,则条件成立
NOT逻辑"非",如果条件为TRUE,则逻辑NOT条件为FALSE,反之亦然

6.2.3:排序

语法:

-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为 ASC


SELECT ... FROM table_name [WHERE ...]
        ORDER BY column [ASC|DESC], [...];

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

升序:

降序:

6.2.4:分页筛选 

语法:

-- 起始下标为 0


-- 从 s 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n


-- 从 0 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;

-- 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;

实例:

6.3:更新

语法:

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

注意:没有where时候将会全表修改,慎用!

实例: 

6.4:删除

6.4.1:普通删除

语法:

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

注意:没有where时候将会全表删除,慎用!

实例:

6.4.2:截断表

语法:

TRUNCATE [TABLE] table_name

注意:这个操作慎用
1. 只能对整表操作,不能像 DELETE 一样针对部分数据操作;

2. 实际上 MySQL 不对数据操作,所以比 DELETE 更快,但是TRUNCATE在删除数据的时候,并不经过真正的事物,所以无法回滚

3. 会重置 AUTO_INCREMENT 项

6.5: 插入查询结果

语法:

INSERT INTO table_name [(column [, column ...])] SELECT ...

实例:

创建一张表sstu像stu一样

插入查询结果:

6.6:聚合函数

函数说明
COUNT(column)返回某列的行数
AVG(column)返回某列的平均值,不是数字没有意义
MAX(column)返回某列的最大值,不是数字没有意义
MIN(column)返回某列的最小值,不是数字没有意义
SUM(column)返回某列之和,不是数字没有意义

6.7:group by分组

语法:

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

实例:

having和group by配合使用,对group by结果进行过滤:

 

注意:虽然having语句和where类型,但是having的执行是靠后的,等全部筛选完才过滤,而where是先过滤在筛选

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一起慢慢变强

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

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

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

打赏作者

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

抵扣说明:

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

余额充值