数据库造神计划第七天---增删改查(CRUD)(3)

发布于:2025-09-15 ⋅ 阅读:(17) ⋅ 点赞:(0)

      🔥个人主页:寻星探路

🎬作者简介:Java研发方向学习者

📖个人专栏:《从青铜到王者,就差这讲数据结构!!!》、 《JAVA(SE)----如此简单!!!》、《数据库那些事!!!》

⭐️人生格言:没有人生来就会编程,但我生来倔强!!!


目录

一、Retrieve 检索

 1、分页查询

1.1语法

1.2示例

 二、Update修改

1、语法

2、示例

三、Delete 删除

1、语法

2、示例

四、截断表

1、语法

2、示例

3、Truncate注意事项


续接上一话:

一、Retrieve 检索

 1、分页查询

        当我们在浏览器上搜索某个内容时,会有很多的搜索结果,这些结果都给用户也看不完,就不如用分页的模式一部分一部分的进行展示!!!

1.1语法

-- 起始下标为 0 
-- 从 0 开始,筛选 num 条结果 
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT num;
-- 从 start 开始,筛选 num 条结果 
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT start , num;
-- 从 start 开始,筛选 num 条结果,⽐第⼆种⽤法更明确,建议使⽤ 
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT num OFFSET start;

1.2示例

# 查询第⼀⻚数据
select * from exam order by id asc limit 0, 3;

# 查询第⼆⻚数据
select * from exam order by id asc limit 3, 3;

 # 查询第三⻚数据,没有达到limit的条数限制,也不会有任何影响,有多少条就显⽰多少条
select * from exam order by id asc limit 6, 3;

 二、Update修改

        这是真正在修改数据库的原始数据!!!

1、语法

UPDATE [LOW_PRIORITY] [IGNORE] table_reference
  SET assignment [, assignment] ...
  [WHERE where_condition]
  [ORDER BY ...]
  [LIMIT row_count]

#注:

(1)对符合条件的结果进行列值更新

(2)要先查找,找到之后再进行修改

2、示例

        将孙悟空同学的数学成绩变更为80分

# 查看原始数据
select * from exam where name = '孙悟空';

# 更新操作
update exam set math = 80 where name = '孙悟空';
# 查看结果,数学成绩更新成功
select * from exam where name = '孙悟空';

        将曹孟德同学的数学成绩变更为60分,语文成绩变更为70分

 # 查看原始数据
select name, math, chinese from exam where name = '曹孟德';

# 更新操作
update exam set math = 60, chinese = 70 where name = '曹孟德';
# 查看结果
select name, math, chinese from exam where name = '曹孟德';

        将总成绩倒数前三的3位同学的数学成绩加上30分

# 查看原始数据
select name, math,chinese + math + english as 总分 from exam where chinese + math + english is not null order by 总分 asc limit 3;

# 更新操作
update exam set math = math +30 where chinese + math + english is not null order by chinese + math + english asc limit 3;
# 查看结果
select name, math, chinese + math + english as 总分 from exam where name in ('宋公明','刘⽞德','曹孟德');

# 修改后总成绩倒数前三的 3 位同学和数据成绩
select name, math,chinese + math + english as 总分 from exam where chinese + math + english is not null order by 总分 asc limit 3;

        将所有同学的语文成绩更新为原来的2倍

# 查看原始数据
select * from exam;

# 更新操作
update exam set chinese = chinese * 2;
# 查看结果
select * from exam;

#注:

(1)以原值的基础上做变更时,不能使用math+=30这样的语法

(2)不加where条件时,会导致全表数据被更新,谨慎操作

三、Delete 删除

        drop 删库,删表.
        delete 删记录/删行

1、语法

DELETE FROM tbl_name [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]

2、示例

        删除孙悟空同学的考试成绩

# 查看原始数据
select * from exam where name = '孙悟空';

# 删除操作
delete from exam where name = '孙悟空';
# 查看结果
select * from exam where name = '孙悟空';

        删除整张表数据

# 准备测试表
CREATE TABLE t_delete (
  id INT,
  name VARCHAR(20)
);
# 插⼊测试数据
INSERT INTO t_delete (id, name) VALUES (1, 'A'), (2, 'B'), (3, 'C');
# 查看测试表
select * from t_delete;

# 删除整张表中的数据
delete from t_delete;
# 查看结果
select * from t_delete;

3、Delete注意事项

        执行Delete时不加条件会删除整张表的数据,谨慎操作

四、截断表

        截断表,更快速更高效的删除表操作,直接站在文件的角度,把表对应的文件内容清空了,只能删全表(不能指定条件,删除某个部分)

1、语法

TRUNCATE [TABLE] tbl_name

2、示例

# 准备测试表
CREATE TABLE t_truncate (
     id INT PRIMARY KEY AUTO_INCREMENT,
     name VARCHAR(20)
     );
# 插⼊测试数据
INSERT INTO t_truncate (name) VALUES ('A'), ('B'), ('C');
# 查看测试表
select * from t_truncate;

# 查看建表结构,AUTO_INCREMENT= 4
show create table t_truncate;

# 截断表,注意受影响的⾏数是0
truncate table t_truncate;
# 查看表中的数据
select * from t_truncate;

# 查看表结构,AUTO_INCREMENT已被重置为0
show create table t_truncate\G

# 继续写⼊数据
INSERT INTO t_truncate (name) VALUES ('D');
# ⾃增主键从1开如计数
select * from t_truncate;

# 再次查看表结构,AUTO_INCREMENT=2
show create table t_truncate;

3、Truncate注意事项

(1)只能对整表操作,不能像DELETE⼀样针对部分数据

(2)不对数据操作所以比DELETE更快,TRUNCATE在删除数据的时候,不经过真正的事物,所以无法回滚

(3)会重置AUTO_INCREMENT项

        由于内容较多,会分为多篇讲解,预知后续内容,请看后续博客!!!