3.3 表记录的更新与删除

SQL的常用数据更新操作 应用INSERT,UPDATE,DELETE语句进行更新操作: 1)插入如下学生记录(学号:95030,姓名:李莉,年龄:18) 2)插入如下选课记录(95030,1) 阅读详情


1. 更新数据

为了更新(修改)表中的数据,可以使用 update 关键字,共有俩种更新数据的方式:
- 更新表中特定的行
- 更新表中所有的行

在更新数据时,千万注意不要省略where 子句,稍不注意,就会更新表中所有的行,在执行语句前一定要了解语句可能对哪些内容做出更改;

1.1 更新单行数据

update 语句十分简便,只要注意好作用范围即可,其由三部分组成:
- 要更新的表;
- 列名和它们的新值;
- 确定要更新行的过滤条件

如 customers 表中 tom 要设置新的电子邮箱,那么只需要以下的语句即可:

update customers 
set cust_email = 'tom@email.com'
where cust_name = 'tom';

当没有where 条件语句时,update 操作会更新 customers 表中所有的 cust_email 字段,将其全部设置为新提供的值;

1.2 更新多行数据

当更新多个列时,语句有所不同,如:

update customers 
set cust_email = 'tom@email.com',
	cust_city = 'newyourk'
where cust_name = 'tom';

只需要将需要更新的多个列使用逗号分隔,分别给定它们对应的值即可,最后一列不需要逗号;

1.3 更新数据时出现错误的情况

在使用update 更新多行数据时,如果其中一行的数据未正确更新,如对一个设置了 ont null 属性的字段进行更新为null 值时,会返回错误信息,而且会将其他已经更新了数据列全部恢复到更新之前;

但是如果想发生错误时,也继续更新正确的值,那么可以使用 IGNORE 关键字,如:UPDATE IGNORE customers ;

1.4 更新数据时使用子查询

update 中可以使用子查询,使用 select 语句检索出的数据更新列数据,只要在对应的字段后用括号将子查询包裹即可,如:

update customers 
set cust_email = 'tom@email.com',
	cust_city = (select city from table_name where ids = id)
where cust_name = 'tom';

1.5 批量替换某列特定部分的值

使用 update 语句时,我们可以同时使用 replace 关键字来达到替换表中限定部分值的实现,例如,我们的 goods 表中有 name名字列,现在我们需要修改列中所有包含 “zhang” 字段的数据,将字母“a”修改为字母“A”,我们可以使用下列的命令来实现:

update goods set name = replace(name,'a','A') where name like '%zhang%';

replace 关键字用于替换指定列中,需要替换的特定字符;

1.6 删除某个列的值

想要达到删除表中某个列的值的效果,只需要将该列的值更新为 null 即可,但此操作的前提是该字段允许设置为 null 值,否则无法操作成功;

2.删除数据

想要删除表中的数据,使用 DELETE 关键字,一般有俩种使用方式:
- 删除表中特定的行
- 删除表中所有的行

与 UPDATE 一样,在删除数据时一定要注意 WHERE 条件子句的使用,稍不注意就会删除表中全部的行;

2.1 删除特定的行

delete from customers 
where cust_id = 1006;

如上面的SQL语句,就是删除 cust_id = 1006 的行,语句十分简便,只需要注意给定表名及限定条件即可;

2.1 删除全部的行

如条上述语句中如果省略 where 子句,那么则会删除此表中所有的行;

DELETE 语句删除的是表中的内容,并不直接删除表,删除表使用 DROP 语句;

如果表中数据较多,使用 DELETE 语句有时效率不是那么快捷,如果想快速删除表中所有的行,也可以使用

TRUNCATE TABLE 表名;

其本质是直接删除这张表,然后按照此前的表结构重新新建一张表,它可以完成相同的工作,但是效率更高;

3.更新与删除的原则

想要更新或删除表记录时,一定要遵循以下的原则,这样可以保证你尽可能的少出错:

  1. 除非明确打算删除或更新全部的行,否则一定要使用 WHERE 子句;
  2. 保证每个表都有主键,且尽可能的在 WHERE 子句中使用主键限制范围;
  3. 在对更新或删除操作使用 WHERE 子句前,应该先使用 SELECT 语句测试子句条件,确认其过滤的结果是自己想要的;
  4. 使用强制实施引用完整性的数据库,这样 MySql 将不允许删除具有与其它表相关联的数据的行;
利用gprMax与Matlab实现SFCW雷达信号的高效仿真与优化 本文详细介绍了如何结合gprMax与Matlab实现SFCW雷达信号的高效仿真与优化。通过利用gprMax获取地下场景的冲激响应,并在Matlab中运用卷积与信号处理技术,可大幅提升SFCW雷达系统仿真的效率与灵活性,为探地雷达研究与设计提供强大工具。 阅读详情

相关推荐

FoundationPose实战:从零部署到Demo运行全记录

本文详细记录了FoundationPose从零部署到Demo运行的全过程,包括Ubuntu环境配置、项目部署、依赖安装及常见问题解决方案。特别针对复现过程中的关键步骤如CUDA版本选择、Eigen3安装等提供了实用技巧,帮助开发者高效完成FoundationPose的部署与调试。

weixin_27102543的博客 259

【MySQL】更新和删除数据

目录更新数据删除数据更新和删除的指导原则 更新数据 为了更新(修改)表中的数据,可使用UPDATE语句。可采用两种方 式使用UPDATE: 更新表中特定行; 更新表中所有行。 下面分别对它们进行介绍。 注意 不要省略WHERE子句 在使用UPDATE时一定要注意细心。因为稍不注意,就会更新表中所有行。 UPDATE语句非常容易使用,甚至可以说是太容易使用了。基本的 UPDATE语句由3部分组成,分别是: 要更新的表; 列名和它们的新值; 确定要更新行的过滤条件。 举一个简单例子。客户10005现在有了

xiangjunyes的博客 922

CMOS反相器版图设计全解析:PMOS/NMOS布局与VDD/VSS连接门道

版图设计是芯片从电路原理图迈向物理实现的必经桥梁,而CMOS反相器作为最基础的数字单元,恰好是理解这一过程的最佳切入点。在版图绘制中,PMOS与NMOS因导电类型和迁移率差异,需要在N阱与P衬底上分别规划,并呈现出不同的有源区尺寸。真正决定版图好坏的关键,往往在于VDD/VSS的完整连接——不仅要接通源漏,还要通过阱接触和衬底接触固定阱与衬底电位,防止寄生PN结正偏和闩锁效应。合理布局电源地线轨道、优化接触孔数量,能显著降低寄生电阻与电迁移风险。这些原理不仅适用于反相器,也是所有CMOS数字标准单元版图设计

weixin_29159441的博客 288

13.SQL之数据的删除与更新

一、删除 使用DELETE语句删除表中数据,它删除对象并不是表或者列,而是记录(行)。 语法: # 删除全部数据行 DELETE FROM <表名>; # 删除部分指定的数据行 DELETE FROM <表名> WHERE <条件>; 实例: # 清空Product表 DELETE FROM Product; # 删除销售单价(sale_price)大于等...

weixin_37714766的博客 1131

pe卸载win10更新补丁_禁用Win10系统更新

众所周知,最近WIN10的强制更新导致了很多问题。如:(部分专业软件系统更新后无法使用,硬件中键盘、鼠标、指纹之类的硬件,更新补丁后失灵等问题)。而之前的禁用WindowsUpdate的方法已经失效。下面我们另辟蹊径,利用系统权限的方法使Win10无法更新,达到禁用更新的目的。1.计算机管理-服务中禁用Windows Update服务。2.打开C:\Windows\softwareDistribu...

weixin_39702479的博客 1万+

TSMC65nm工艺下Virtuoso仿真gm-id曲线的保姆级教程(含ADE设置详解)

本文提供了一份在TSMC 65nm工艺下使用Cadence Virtuoso绘制gm-id曲线的详细教程。内容涵盖从理解gm/id方法学、搭建仿真环境、深度解析ADE设置,到运行DC仿真、提取数据并生成对数坐标曲线的完整流程。教程重点解析了Virtuoso ADE中的关键设置与常见避坑点,旨在帮助模拟集成电路设计初学者快速掌握这一核心设计工具,为高性能电路设计奠定基础。

grpc6streamer的博客 1165

我的MYSQL学习心得(八) 插入 更新 删除

我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(九) 索引 我的MYSQL学习心...

weixin_33980459的博客 327

国产机载操作系统天脉ACoreOS实战:从零搭建开发环境到应用移植

本文详细介绍了国产机载操作系统天脉ACoreOS的实战开发流程,从核心特性解析到开发环境搭建,再到VxWorks应用移植策略。重点阐述了其符合ARINC 653标准的时空分区架构如何保障高可靠性,并提供了从零创建分区工程、重构通信与任务代码的具体步骤,为开发者向这一国产化平台迁移提供了实用指南。

flower的专栏 627

MySQL数据库的增删改操作总结

MySQL数据库的增删改操作总结 数据库的增删改操作又称为DML操作,包括表记录的插入、删除、更新。 一、插入记录 语法格式如下: insert into tablename(field1,field2,…) values (value1,values2,…)[,(value1,values2,…)…]; 说明: (1)value的数量和字段(field)的数量必须相等,且value的类型需要和对...

睿思达DBA 1212

QGIS003:【02标注工具栏】-标注的样式、放置和属性修改

摘要:文本介绍了QGIS标注的样式、放置和属性修改

qq_31762031的博客 1911

基于卷积神经网络的球罐结构损伤识别

球罐结构损伤识别方法研究 摘要:本研究针对球形储罐(球罐)结构健康监测需求,提出基于卷积神经网络(CNN)的损伤识别方法。通过ANSYS有限元仿真构建包含5种裂纹深度的500组振动信号数据集,设计包含卷积层、池化层和全连接层的CNN网络架构。实验结果表明,该方法在训练集和测试集上分别达到98.4%和96.0%的准确率,验证了其在球罐焊缝损伤识别中的有效性。研究提供了完整的MATLAB实现代码,为球罐结构智能化监测提供了技术参考。 关键词:球罐结构;卷积神经网络;损伤识别;振动信号;深度学习

AI的内部世界的博客 115

java多线程操作mysql,同时更新或者删除操作线程安全吗?

1.简单创建一张表 CREATE TABLE `user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `username` varchar(32) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 2.插入几条数据 INSERT INTO `user` VALUES (1, '张三', 18); IN

qq_42569136的博客 2709

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

表的插入、更新、删除、合并操作_3_插入新的多条记录

插入新的多条记录 需求描述 需求:向dept表中插入部门编号为50,部门名称为Production,部门位置为Shanghai和部门编号为60,部门名称为Programming,部门位置为Beijing的数据. 解决方法:这里通过INSERT INTO TableName VALUES (…),(…),(…) 注: 数据库数据集SQL脚本详见如下链接地址 员工表结构和数据初始化SQL脚本 SQL代码 -- Sql server 、My...

数据科学汇集 680

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

mysql 多表删除和更新_MySQL多表更新与多表删除的实现方法

本节主要内容:MySQL多表更新和多表删除1,首先,来看MySQL多表更新在 MySQL 3.23 中,可以使用 LIMIT # 来确保只有给定的记录行数目被更改。如果一个 ORDER BY 子句被使用(从 MySQL 4.0.0 开始支持),记录行将以指定的次序被更新。这实际上只有连同LIMIT 一起才有用。从 MySQL 4.0.4 开始,可以执行一个包含多个表的 UPDATE 的操作:复制代...

weixin_36111764的博客 509

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

linux环境下sqlite3数据库操作命令

1.sqlite3数据库的安装 (1)本地安装 sudo dpkg -i *.deb (2)在线安装 sudo apt-get install sqlite3 2.sqlite3基本命令 (1)系统命令:以“ . ”开头的命令 .help 帮助命令 .exit 退出命令 .quit 退出命令 .schema 查看表记录(显示表名及结构) .data...

qq_43499599的博客 1029

网络编程笔记之sqlite3

1.安装方式: apt-get install sqlite3 —>sqlite3数据库软件 apt-get install libsqlite3-dev —>sqlite3数据库开发支持库 apt-get install sqlite3-doc —>sqlite3数据库说明文档 apt-get install sqlitebrowser —>sqlite3数据库操作...

qq_41938745的博客 346

SQLite初体验

SQLite基础知识

zsslt的博客 493

sqlit3基本操作--python

示例: #导入数据库驱动 import sqlite3 import os #打开数据库,不存在则创建数据库 conn = sqlite3.connect('test.db') print("Opened database successfully") c = conn.cursor() #创建表,表名字COMPANY c.execute('''CREATE TABLE COMPANY (ID INT PRIMARY KEY NOT NULL, NAME ...

u010743406的博客 262

SQL中的关联更新和关联删除

在SQL中,经常用到关联查询,比如select a.* from A a inner join B b on a.PId=b.FId where 条件,SQL中也支持类似的关联更新和关联删除。 关联更新语法: update a set a.字段=” from A a inner join B b on a.PId=b.FId where 条件 关联删除语法: delete from a f...

weixin_34040079的博客 1877

Linux下数据库sqlite3常用命令

在Linux下使用sqlite3,要先安装好,不然无法使用。 特点: 1.数据库(database)文件的后缀为xx.db 2.数据库相关命令都是以.开头。 ------------以下使用的people和student是我们制定的表的名字,不是命令名------------------------- 一:命令 打开某个数据库文件中 sqlite3  test

想挣五斗米的博客 1万+

Python操作sqllite3

import sqlite3 #操作Sqlite3 con=sqlite3.connect(r"F:\\baidu download\\test.db") cour=con.cursor() # cour.execute("create table mytab(id integer primary key autoincrement not null,name text,passwd

douyunqian668的博客 961

【SQL】删除数据库表

'(一)SQLite3数据库中的删除表和设置自增长为0' '删除表,只用DELETE就够了' DELETE FROM INFORMATION;/*INFORMATION为您所需要删除的表名*/ '删除表并且设置自增长为0' DELETE FROM INFORMATION;/*INFORMATION为您所需要删除的表名*/ SELECT * FROM sqlite_sequence; UPDATE...

xueshan007050的专栏 416

使用aws cli命令删除athena表中的记录

使用aws cli命令,删除athena表中的记录

finalcj的博客 678

sqlite3 常用语句

sqlite3 常用语句 1、创建数据库 cmd当前路径下:sqlite3 test.db 2、附加一个数据库: ATTACH DATABASE ‘testDB.db’ as ‘TEST’; 3、分离数据库出来: DETACH DATABASE ‘currentDB’; 4、创建一个表:CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL); 5...

二米的博客 408

SQLite3 基础

一、SQLite3 数据库的安装 1、安装 (1)本地安装 sudo dpkg -i *.deb sudo -----以管理员身份执行 dpkg -----软件包管理器 -i -----安装 *.deb -----所有deb软件包 (2)在线安装 sudo apt-get install sqlite3 ...

qq_40674996的博客 501

4.MySQL更新和删除数据

1.MySQLi更新数据 2.MySQLi删除数据

小阿宁的猫猫 314
上一篇: 3.1.1 表的相关设计
下一篇: 3.1.4 删除表、重命名表、复制表、查看表结构
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值