尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

SQL之数据更新

SQL之数据更新
📅 发布时间:2026/7/26 7:35:42

文章目录

  • 数据插入(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_price>=4000;

数据更新(UPDATE语句)

● 使用UPDATE语句可以更改(更新)表中的数据。
● 更新部分数据行时可以使用WHERE来指定更新对象的条件。通过WHERE子句指定更新对象的UPDATE语句称为搜索型UPDATE语句。
● UPDATE语句可以将列的值更新为NULL。
● 同时更新多列时,可以在UPDATE语句的SET子句中,使用逗号分隔更新对象的多个列。

-- 改变表中数据的UPDATE语句UPDATE<表名>SET<列名>=<表达式>;-- 将登记日期全部更新为“2009-10-10”UPDATEProductSETregist_date='2009-10-10';

指定条件的UPDATE语句(搜索型UPDATE)

-- 更新部分数据行的搜索型UPDATEUPDATE<表名>SET<列名>=<表达式>WHERE<条件>;-- 将商品种类为厨房用具的记录的销售单价更新为原来的10倍UPDATEProductSETsale_price=sale_price*10WHEREproduct_type='厨房用具';``## NULL 清空````sql-- 将商品编号为0008的数据(圆珠笔)的登记日期更新为NULLUPDATEProductSETregist_date=NULLWHEREproduct_id='0008';

使用UPDATE语句可以将值清空为NULL(但只限于未设置NOT NULL约束的列)。

多列更新

-- 使用逗号对列进行分隔排列(在所有的 DBMS 中都可以使用,实际应用中通常都会使用)UPDATEProductSETsale_price=sale_price*10,purchase_price=purchase_price/2WHEREproduct_type='厨房用具';-- 将列用()括起来的清单形式UPDATEProductSET(sale_price,purchase_price)=(sale_price*10,purchase_price/2)WHEREproduct_type='厨房用具';

事务

事务是需要在同一个处理单元中执行的一系列更新处理的集合。通过使用事务,可以对数据库中的数据更新处理的提交和取消进行管理。
● 事务处理的终止指令包括COMMIT(提交处理)和ROLLBACK(取消处理)两种。
● DBMS的事务具有原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)四种特性。通常将这四种特性的首字母结合起来,统称为ACID特性。

相关新闻

  • springboot餐饮管理系统
  • TI CC32xx相机接口与PRCM电源管理API深度解析与实战
  • 大模型系统实战:从理论到落地的技术演进与挑战

最新新闻

  • Android V4L2 `devm_kmalloc` 功能解释
  • C++与OpenCV实战:从零构建视频运动检测系统
  • 2026年无锡系统门窗厂家怎么选?5家本地工厂实测对比,一站式门窗定制配套更适配家装工装 - 海棠依旧大
  • CC115L射频设计实战:晶体振荡器与PCB布局的精准设计与避坑指南
  • C++里氏替换原则:面向对象设计的基石与实战指南
  • FastAPI+Docker构建AI微服务:金融问答机器人实战架构

日新闻

  • 大连理工大学与东京大学联手打造的“主动型AI助手“
  • 170.2026年国家级科研瓶颈:超精密单点金刚石切削(SPDT)光学表面生成
  • SongBloom:革命性歌曲生成框架深度解析——如何通过交织自回归与扩散模型创作完整音乐

周新闻

  • 大连理工大学与东京大学联手打造的“主动型AI助手“
  • 170.2026年国家级科研瓶颈:超精密单点金刚石切削(SPDT)光学表面生成
  • SongBloom:革命性歌曲生成框架深度解析——如何通过交织自回归与扩散模型创作完整音乐

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号