SQL之数据更新 文章目录数据插入INSERT语句从其他表中复制数据INSERT ... SELECT语句数据备份数据删除DELETE语句指定删除对象的DELETE语句搜索型DELETE数据更新UPDATE语句指定条件的UPDATE语句搜索型UPDATE多列更新事务数据插入INSERT语句使用INSERT语句可以向表中插入数据行。原则上INSERT语句每次执行一行数据的插入。● 将列名和值用逗号隔开分别括在内这种形式称为清单。● 对表中所有列进行INSERT操作时可以省略表名后的列清单。● 插入NULL时需要在VALUES子句的值清单中写入NULL。● 可以为表中的列设定默认值初始值默认值可以通过在CREATE TABLE语句中为列设置DEFAULT约束来设定。● 插入默认值可以通过两种方式实现即在INSERT语句的VALUES子句中指定DEFAULT关键字显式方法或省略列清单隐式方法。● 使用INSERT…SELECT可以从其他表中复制数据。INSERTINTO表名(列1,列2,列3,……)VALUES(值1,值2,值3,……);-- 向表中插入一行数据INSERTINTOProductIns(product_id,product_name,product_type,sale_price,purchase_price,regist_date)VALUES(0001,T恤衫,衣服,1000,500,2009-09-20);表名后面的列清单和 VALUES 子句中的值清单的列数必须保持一致,但是使用默认值时列数无需完全一致-- 包含列清单INSERTINTOProductIns(product_id,product_name,product_type, sale_price,purchase_price,regist_date)VALUES(0005,高压锅,厨房用具,6800,5000,2009-01-15);-- 省略列清单INSERTINTOProductInsVALUES(0005,高压锅,厨房用具,6800,5000,2009-01-15);-- 通常的INSERTINSERTINTOProductInsVALUES(0002,打孔器,办公用品,500,320,2009-09-11);INSERTINTOProductInsVALUES(0003,运动T恤,衣服,4000,2800,NULL);INSERTINTOProductInsVALUES(0004,菜刀,厨房用具,3000,2800,2009-09-20);-- 多行INSERT Oracle以外INSERTINTOProductInsVALUES(0002,打孔器,办公用品,500,320,2009-09-11),(0003,运动T恤,衣服,4000,2800,NULL),(0004,菜刀,厨房用具,3000,2800,2009-09-20);-- Oracle中的多行INSERTINSERTALLINTOProductInsVALUES(0002,打孔器,办公用品,500,320,2009-09-11)INTOProductInsVALUES(0003,运动T恤,衣服,4000,2800,NULL)INTOProductInsVALUES(0004,菜刀,厨房用具,3000,2800,2009-09-20)SELECT*FROMDUAL;默认值的使用方法通常有显式和隐式两种。-- 通过显式方法插入默认值在 VALUES 子句中指定 DEFAULT 关键字建议使用INSERTINTOProductIns(product_id,product_name,product_type,sale_price,purchase_price,regist_date)VALUES(0007,擦菜板,厨房用具,DEFAULT,790,2009-04-28);-- 通过隐式方法设定默认值在列清单和VALUES 中省略设定了默认值的列INSERTINTOProductIns(product_id,product_name,product_type,purchase_price,regist_date)VALUES(0007,擦菜板,厨房用具,790,2009-04-28);省略INSERT语句中的列名就会自动设定为该列的默认值没有默认值时会设定为NULL。从其他表中复制数据INSERT … SELECT语句数据备份INSERT语句的SELECT语句中可以使用WHERE子句或者GROUP BY子句等任何 SQL语法但使用ORDER BY子句并不会产生任何效果。-- 将商品表中的数据复制到商品复制表中INSERTINTOProductCopy(product_id,product_name,product_type,sale_price,purchase_price,regist_date)SELECTproduct_id,product_name,product_type,sale_price,purchase_price,regist_dateFROMProduct;-- 插入其他表中数据合计值的INSERT ... SELECT语句INSERTINTOProductType(product_type,sum_sale_price,sum_purchase_price)SELECTproduct_type,SUM(sale_price),SUM(purchase_price)FROMProductGROUPBYproduct_type;数据删除DELETE语句DELETE语句的删除对象并不是表或者列而是记录行。-- 保留数据表仅删除全部数据行的DELETE语句DELETEFROM表名;-- 清空Product表DELETEFROMProduct;指定删除对象的DELETE语句搜索型DELETE可以通过WHERE子句指定对象条件来删除部分数据。DELETE 语句中不能使用 GROUP BY、HAVING 和 ORDER BY 三类子句而只能使用WHERE 子句-- 删除部分数据行的搜索型DELETEDELETEFROM表名WHERE条件;-- 删除销售单价sale_price大于等于4000元的数据DELETEFROMProductWHEREsale_price4000;数据更新UPDATE语句● 使用UPDATE语句可以更改更新表中的数据。● 更新部分数据行时可以使用WHERE来指定更新对象的条件。通过WHERE子句指定更新对象的UPDATE语句称为搜索型UPDATE语句。● UPDATE语句可以将列的值更新为NULL。● 同时更新多列时可以在UPDATE语句的SET子句中使用逗号分隔更新对象的多个列。-- 改变表中数据的UPDATE语句UPDATE表名SET列名表达式;-- 将登记日期全部更新为“2009-10-10”UPDATEProductSETregist_date2009-10-10;指定条件的UPDATE语句搜索型UPDATE-- 更新部分数据行的搜索型UPDATEUPDATE表名SET列名表达式WHERE条件;-- 将商品种类为厨房用具的记录的销售单价更新为原来的10倍UPDATEProductSETsale_pricesale_price*10WHEREproduct_type厨房用具;## NULL 清空sql-- 将商品编号为0008的数据圆珠笔的登记日期更新为NULLUPDATEProductSETregist_dateNULLWHEREproduct_id0008;使用UPDATE语句可以将值清空为NULL但只限于未设置NOT NULL约束的列。多列更新-- 使用逗号对列进行分隔排列在所有的 DBMS 中都可以使用实际应用中通常都会使用UPDATEProductSETsale_pricesale_price*10,purchase_pricepurchase_price/2WHEREproduct_type厨房用具;-- 将列用()括起来的清单形式UPDATEProductSET(sale_price,purchase_price)(sale_price*10,purchase_price/2)WHEREproduct_type厨房用具;事务事务是需要在同一个处理单元中执行的一系列更新处理的集合。通过使用事务可以对数据库中的数据更新处理的提交和取消进行管理。● 事务处理的终止指令包括COMMIT提交处理和ROLLBACK取消处理两种。● DBMS的事务具有原子性Atomicity、一致性Consistency、隔离性Isolation和持久性Durability四种特性。通常将这四种特性的首字母结合起来统称为ACID特性。

相关新闻

最新新闻

Prometheus 监控 Ceph 全栈实战:从 OSD 心跳到 RGW 请求的分布式存储可观测性

Prometheus 监控 Ceph 全栈实战:从 OSD 心跳到 RGW 请求的分布式存储可观测性

Prometheus 监控 Ceph 全栈实战:从 OSD 心跳到 RGW 请求的分布式存储可观测性Ceph 作为软件定义存储的王者,支撑着无数云平台的块、文件、对象存储。然而,其复杂的组件(OSD、MON、MDS、RGW)和分布式一致性要求&#xf…

2026/7/26 8:32:23
你的描述符为何“失忆”?——Python __set_name__ 的属性名自动捕获与常见踩坑指南

你的描述符为何“失忆”?——Python __set_name__ 的属性名自动捕获与常见踩坑指南

你的描述符为何“失忆”?——Python __set_name__ 的属性名自动捕获与常见踩坑指南 在 Python 的描述符世界里,对象属性访问的三大魔术方法——__get__、__set__、__delete__——让你能自定义属性的存取行为,实现类型校验、延迟加载、ORM 映射…

2026/7/26 8:32:23
消息源加载“走火入魔”:Spring Boot 多文件国际化顺序混乱的终结指南

消息源加载“走火入魔”:Spring Boot 多文件国际化顺序混乱的终结指南

消息源加载“走火入魔”:Spring Boot 多文件国际化顺序混乱的终结指南 你的 Spring Boot 应用精心准备了多套国际化资源:messages.properties 存放公共文案,validation.properties 存放校验消息,还有各个模块自己的 module-messag…

2026/7/26 8:32:23
在线考试系统稳定性保障:高并发与编译器故障排查优化

在线考试系统稳定性保障:高并发与编译器故障排查优化

这次我们来看一个比较特殊的主题——GESP202606现场考试系统遇到的技术问题。虽然标题看起来像日常吐槽,但背后涉及的是在线考试系统的稳定性、开发流程管理和技术实施质量等实际问题。 从材料看,这次考试出现了网站报错、编译器故障、官网直接崩溃等问…

2026/7/26 8:32:23
Azure Linux 4.0深度解析:微软官方云原生发行版的技术特性与实践指南

Azure Linux 4.0深度解析:微软官方云原生发行版的技术特性与实践指南

这次我们来看微软最新发布的Azure Linux 4.0发行版。作为微软自家的Linux发行版,它基于Fedora构建,专门针对Azure云环境和WSL(Windows Subsystem for Linux)优化。对于需要在微软生态中运行Linux工作负载的开发者来说,…

2026/7/26 8:32:23
数组作为函数参数为什么要多传一个长度_Day10

数组作为函数参数为什么要多传一个长度_Day10

数组作为函数参数为什么要多传一个长度?——Day10 学习记录,从数组传参到日历打印 学完函数之后,我开始用函数封装各种功能。但很快就遇到了问题——把数组传给函数后,用 sizeof 计算长度,结果根本不是数组的大小。 后…

2026/7/26 8:27:23

月新闻