Nodejs 第三十五章 SQL语句之增删改
Nodejs 第三十五章 SQL语句之增删改
前提回顾
- 上一章节中,我们学习了数据库的各种常用的查询语句,接下来的这章节中,我们就要学习
增删改查
中的其他三个部分增删改
新增
- 开头还是以操作类型关键字为首
- 操作类型关键字:
INSERT INTO
,这是一个用来添加数据到数据库表中的SQL命令。 - 目标对象:
user
,这是操作的目标表名,表示数据将被插入到这个名为user
的表中。
- 操作类型关键字:
VALUES 关键词
VALUES
是 SQL 语言中的一个关键词,它用于指定在INSERT
操作中要插入表中的数据值。这个关键词后面通常会跟一组括号,括号内包含了与表中列相对应的数据值,按照表中列的顺序排列- 通过对
VALUES
的介绍了解,我们就知道填充内容的规律是以对应顺序进行依次填充 - 并且新增是可以新增多个的,只需要在填充内容后面加上逗号就能继续延续下去。在我们上一章节中有讲到,逗号也是可以作为
并列
来理解的,此时我们就能明白要如何去进行使用 - 填充的时候,要记得看下是否符合填充规则(也就是我们一开始创建表所设立的),例如有的表内容允许为空,有的不允许,都是需要在心中有所预估
- 通过对
新增案例
# INSERT INTO 表名(列名,....) VALUES (值,....)
INSERT INTO `user`(`name`,`age`,`address`) VALUES('小余2',22,'北京')
# 新增多个
INSERT INTO `user`(`name`,`age`,`address`) VALUES('小余3',23,'浙江') ,('小余4',24,'四川')
编辑(改)
- 操作类型关键字:
UPDATE
,这是用来修改表中现有记录的 SQL 命令。 - 目标对象:表名,指定要更新数据的目标表。
接下来是设置新值的部分,这不是通过 VALUES
关键词,而是通过 SET
关键词来完成。
SET 关键词
SET
是 SQL 语言中用于 UPDATE
语句的一个关键词,它用于指定要更新的列和新的值。我们可以一次更新一个或多个列。如果需要更新多个列,一样可以使用逗号来分隔每个列的赋值语句。
WHERE
:这个子句用于指定哪些行将被更新。没有WHERE
子句会导致表中的所有行都被更新,这通常不是预期的效果,因此使用WHERE
子句来限定操作的范围是非常重要的安全措施。- 将
WHERE
子句放在SET
之后,能帮助我们在定义了所有要更改的列和值之后,进一步明确这些更改应用于哪些特定的行。这种顺序使 SQL 语句的读写更加直观,因为它遵循了人们处理任务的自然逻辑:先决定做什么(设置值),然后确定对谁做(选择行)。如果WHERE
子句放在SET
之前,它可能会在逻辑上造成混淆,因为还没有定义要进行的更改就已经在限定更改的范围 - 可以理解为,我先决定要吃什么菜,在根据要吃的菜去挑选餐厅。我想在点外卖的时候,大家应该都是这个逻辑,很少有人点外卖是输入店名的吧?大多数应该都是搜索自己想吃什么菜。而这个就是我们的基础逻辑,先决定吃什么,再确定去哪家店吃
UPDATE 表名
SET 列名1 = 新值1, 列名2 = 新值2, ...
WHERE 条件;
更改案例
- 我们可以通过三行来拆开了解
- 在这个例子中,我们选择了
user
表中名为 '小余2' 的用户,将其年龄改为 25,地址改为 '上海'。 - 使用
SET
关键字来指定我们想要更新的列和对应的新值。 WHERE
子句确保只有名字为 '小余2' 的记录被更新。
- 在这个例子中,我们选择了
-- 更新 `user` 表中,名为 '小余2' 的记录的年龄为 25
UPDATE `user`
SET `age` = 25
WHERE `name` = '小余2';
删除
删除是最简单的案例,只是最好是一定要在最后添加
WHERE
子句(删除不规范,亲人两行泪)
- 操作类型关键字:
DELETE
,这是用来删除表中记录的 SQL 命令。 - 目标对象:表名,指定从哪个表中删除数据。
DELETE 关键词
DELETE
是 SQL 语言中用于删除数据的关键词,它用于从表中移除满足特定条件的行。在使用 DELETE
语句时,我们需要非常小心,因为如果不正确使用,可能会导致删除过多的数据。
WHERE
:这个子句在DELETE
语句中扮演着至关重要的角色。它用于指定哪些行将被删除。如果省略WHERE
子句,将会删除表中的所有行,这通常是非常危险且不可取的操作,因为一旦执行,数据无法恢复。- 将
WHERE
子句放在DELETE
关键字之后,可以确保我们在指定删除操作之前明确了哪些行应该被删除。这种布局符合直观的逻辑处理顺序和前面编辑是一样的- 可以这么理解:决定扔掉不再需要的衣物。我们需要先整理衣柜,然后才挑选出哪些衣物不再需要,而不是盲目地开始扔掉衣服。
DELETE FROM 表名
WHERE 条件;
删除案例
- 删除是可以删除多个的,使用
IN操作符
就行- 使用
IN操作符
能够更加精准的去操作,这里也是可以使用各种算术表达式的。比如说我们案例好像是有点傻,要删除id是1-5的,我们直接IN(id<6)
就稳健了对吧,越复杂就越考验自己的数学和逻辑功底了 - 剩下没有什么好需要讲解的,最需要注意的就是,自己到底想要删除什么?所以精髓都在
WHERE
判断子句里面
- 使用
# 删除id为6的
DELETE FROM `user`
WHERE id=6;
# 把id是1-5的全删了
DELETE FROM `user`
WHERE id IN(1,2,3,4,5);
子句
在 SQL 中,子句是构成 SQL 语句的各个组成部分,用于定义和限制 SQL 操作的具体行为和作用范围。子句的使用极大地提高了 SQL 语句的灵活性和表达力,能让数据操作更加精确和高效。
- 在MySQL这几章节中,涉及到了各种子句,子句又是什么?有哪些子句?子句的作用对于写SQL语句有什么意义吗?我们为什么那么需要子句?
- 一个个问题都值得我们去解答
常见的 SQL 子句
- SELECT - 指定要查询的列。
- FROM - 指定查询的主要数据源或表。
- WHERE - 对结果集进行条件限制,只返回满足条件的行。
- ORDER BY - 指定结果集的排序方式。
- GROUP BY - 指定对结果集进行分组的列,通常与聚合函数一起使用。
- HAVING - 对 GROUP BY 生成的分组结果进行条件限制。
- JOIN - 指定如何将行从两个或多个表结合起来。
- SET - 在 UPDATE 语句中使用,指定要更新的列和对应的新值。
- LIMIT - 限制结果集的数量,常用于分页处理。
子句的作用
- 结构化和组织:子句帮助在 SQL 语句中清晰地定义操作的具体部分,使语句的结构更加有条理。
- 精确控制:通过使用各种子句,可以精确控制数据操作的细节,如筛选、排序、限制结果集等。
- 性能优化:合理使用子句可以优化查询的性能,如通过 WHERE 子句减少处理的数据量。
- 灵活性和功能性:子句的组合使用为 SQL 提供了极高的灵活性,能够应对复杂的数据查询和处理需求。
子句的位置
- 子句在SQL命令中的位置通常取决于它的功能和SQL语句的结构。
- 我们来通过以下一些例子来观察一下规律吧,都是有对应的内在合理逻辑的
- FROM子句:
- 位置:通常紧跟在SELECT关键字之后。
- 原因:FROM子句用于指定SELECT操作要查询的表。因为在进行字段选择之前,SQL解析器需要知道数据来自哪个表,以便能正确解析和检索指定的列。
- WHERE子句:
- 位置:通常位于FROM子句之后,任何GROUP BY或ORDER BY子句之前。
- 原因:WHERE子句用于过滤记录,它需要在数据被聚合或排序之前应用,以确保只处理符合条件的记录。
- GROUP BY子句:
- 位置:在WHERE子句之后,ORDER BY子句之前。
- 原因:GROUP BY用于根据一个或多个列对结果集进行分组。因为分组操作必须在记录筛选之后和排序操作之前进行,以确保正确的数据聚合。
- ORDER BY子句:
- 位置:通常是SELECT语句的最后部分。
- 原因:ORDER BY用于对结果集进行排序。它位于语句的末尾是因为排序通常是查询处理的最后一步,确保所有的筛选、分组和聚合操作已完成。
- LIMIT子句:
- 位置:在SELECT语句的最末端,通常跟在ORDER BY子句之后。
- 原因:LIMIT用于限制查询结果的数量,放在最后确保先完成所有的选择、过滤、分组和排序操作,然后才对最终结果集应用数量限制。
转载自:https://juejin.cn/post/7368421971384221708