【SQL 必知必会】- 第十六课 更新和删除数据

目录

更新数据

        不要省略WHERE 子句

        在UPDATE 语句中使用子查询

删除数据

        不要省略WHERE 子句

        友好的外键

        删除表的内容而不是表

        更快的删除

更新和删除的指导原则


        这一课介绍如何利用UPDATE 和DELETE 语句进一步操作表数据。

更新数据

        更新(修改)表中的数据,可以使用UPDATE 语句。有两种使用UPDATE的方式:

  • 更新表中的特定行;
  • 更新表中的所有行。

        不要省略WHERE 子句

        在使用UPDATE 时一定要细心。因为稍不注意,就会更新表中的所有行。

        使用UPDATE 语句非常容易,甚至可以说太容易了。基本的UPDATE 语句由三部分组成,分别是:

  • 要更新的表;
  • 列名和它们的新值;
  • 确定要更新哪些行的过滤条件。
UPDATE Customers
SET cust_email = 'kim@thetoystore.com'
WHERE cust_id = '1000000005';

        UPDATE 语句以WHERE 子句结束,它告诉DBMS 更新哪一行。没有WHERE子句,DBMS 将会更新表中的所有行,这不是我们希望的。

        更新多个列的语法稍有不同:

UPDATE Customers
SET cust_contact = 'Sam Roberts',
cust_email = 'sam@toyland.com'
WHERE cust_id = '1000000006';

        在更新多个列时,只需要使用一条SET 命令,每个“列=值”对之间用逗号分隔(最后一列之后不用逗号)。


        在UPDATE 语句中使用子查询

        UPDATE 语句中可以使用子查询,使得能用SELECT 语句检索出的数据更新列数据。关于子查询及使用的更多内容,请参阅第11 课。

        要删除某个列的值,可设置它为NULL(假如表定义允许NULL 值)。如下进行:

UPDATE Customers
SET cust_email = NULL
WHERE cust_id = '1000000005';

        其中NULL 用来去除cust_email 列中的值。这与保存空字符串很不同(空字符串用''表示,是一个值),而NULL 表示没有值


删除数据

        从一个表中删除(去掉)数据,使用DELETE 语句。有两种使用DELETE的方式:

  • 从表中删除特定的行;
  • 从表中删除所有行。

        不要省略WHERE 子句

        在使用DELETE 时一定要细心。因为稍不注意,就会错误地删除表中所有行。在使用这条语句前,请完整地阅读本节。

        前面说过,UPDATE 非常容易使用,而DELETE 更容易使用。
        下面的语句从Customers 表中删除一行:

DELETE FROM Customers
WHERE cust_id = '1000000006';

        这条语句很容易理解。DELETE FROM 要求指定从中删除数据的表名,WHERE 子句过滤要删除的行。在这个例子中,只删除顾客1000000006。如果省略WHERE 子句,它将删除表中每个顾客。


        友好的外键

        第12 课介绍了联结,简单联结两个表只需要这两个表中的常用字段。也可以让DBMS 通过使用外键来严格实施关系。存在外键时,DBMS 使用它们实施引用完整性。例如,要从Products 表中删除一个产品,而这个产品用在OrderItems 的已有订单中,那么DELETE 语句将抛出错误并中止。这是总要定义外键的另一个理由。

        DELETE 不需要列名或通配符。DELETE 删除整行而不是删除列。要删除指定的列,请使用UPDATE 语句。


        删除表的内容而不是表

        DELETE 语句从表中删除行,甚至是删除表中所有行。但是,DELETE不删除表本身

        更快的删除

        如果想从表中删除所有行,不要使用DELETE。可使用TRUNCATE TABLE语句,它完成相同的工作,而速度更快(因为不记录数据的变动)。


更新和删除的指导原则

        下面是许多SQL 程序员使用UPDATE 或DELETE 时所遵循的重要原则。

  • 除非确实打算更新和删除每一行,否则绝对不要使用不带WHERE 子句的UPDATE 或DELETE 语句。
  • 保证每个表都有主键(如果忘记这个内容,请参阅第12 课),尽可能像WHERE 子句那样使用它(可以指定各主键、多个值或值的范围)。
  • 在UPDATE 或DELETE 语句使用WHERE 子句前,应该先用SELECT 进行测试,保证它过滤的是正确的记录,以防编写的WHERE 子句不正确。
  • 使用强制实施引用完整性的数据库(关于这个内容,请参阅第12 课),这样DBMS 将不允许删除其数据与其他表相关联的行。
  • 有的DBMS 允许数据库管理员施加约束,防止执行不带WHERE 子句的UPDATE 或DELETE 语句。如果所采用的DBMS 支持这个特性,应该使用它。

        若是SQL 没有撤销(undo)按钮,应该非常小心地使用UPDATE 和DELETE,否则你会发现自己更新或删除了错误的数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/11859.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CSDN粉丝首破一千关,有你名字

2023-4-11,CSDN粉丝首破一千关。 感谢词版本1,哈哈哈哈哈哈哈哈 在编程世界里,人们可以像创造生命一样创造程序,而我对这种创造和创新的热情,从我的csdn博客社区粉丝首次突破一千人的消息中得到了极大的满足和激励。作为一个Pyth…

全面解析反欺诈(羊毛盾)API,助你识别各类欺诈风险

前言 反欺诈(羊毛盾)反机器欺诈 API,是一种基于大数据分析和模型产品的技术,通过输入手机号、手机 IP 地址进行检测,帮助客户识别大量存在恶意的账号。 反欺诈(羊毛盾)API 的作用 反欺诈&…

智慧工厂可视化合集,推动行业数字化转型

图扑软件基于 HTML5(Canvas/WebGL/WebVR)标准的 Web 技术,满足了工业物联网跨平台云端化部署实施的需求,以低代码的形式自由构建三维数字孪生、大屏可视化、工业组态等等。从 SDK 组件库,到 2D 和 3D 编辑,…

【Camunda】 -- Docker 安裝及使用

【Camunda】 -- Docker 安裝及使用1. Docker install Camunda platform1.1 Web2. Big Data -- Postgres1.1 Big Data -- Postgres3.Awakening1.1 Big Data -- PostgresCamunda platform 是一個任務監控的平台。 Camunda Modeler是建模工具。 1. Docker install Camunda platfor…

SpringSecurity之基础认知

前言 之前一直说开一个SpringSecurity的专栏,今天抽空整理一下,准备开始更新。 也欢迎大家订阅此专栏! 什么是SpringSecurity? Spring是非常成功的Java应用框架,目前是非常主流的开发框架。Spring Securtiy正是我们…

基于K-最近邻算法构建红酒分类模型

基于K-最近邻算法构建红酒分类模型 描述 Wine红酒数据集是机器学习中一个经典的分类数据集,它是意大利同一地区种植的葡萄酒化学分析的结果,这些葡萄酒来自三个不同的品种。数据集中含有178个样本,分别属于三个已知品种,每个样本…

移动App测试实战—专项测试

移动App测试实战—专项测试 我们在进行了手工的功能测试之后,也开发了一些自动化测试用例,并且做了性能测试之后,测试工作看似比较完整了。但是当我们的App在大量的用户那里被安装和使用的时候,还是会有很多我们之前没有预料的问题…

微服务+springcloud+springcloud alibaba学习笔记【Hystrix(豪猪哥)的使用】(6/9)

Hystrix(豪猪哥)的使用 6/91、Hystrix熔断器概述2、HyStrix重要概念3、hystrix案例3.1 新建模块 Cloud-provider-hystrix-payment80013.2 创建带降级的order模块 Cloud-comsumer-feign-hystrix-order803.3 配置服务降级:3.3.1 服务降级 Cloud-provider-h…

3年功能测试无情被裁,3个月学习自动化测试重新开始........

前言 不知不觉在软件测试行业工作了3年之久,虽然说我是主做的功能测试,但是我也一直是兢兢业业的呀,不曾想去年7月份无情被辞的消息让我感到一阵沉重。我曾经一直坚信自己的技能和经验足以支撑我在这个领域的未来,但现实却告诉我&…

日撸 Java 三百行day31

文章目录day31 整数矩阵及其运算面向对象思想java异常处理java中的getter和setter方法代码day31 整数矩阵及其运算 面向对象思想 结合之前day7和day8面向过程开发,只关注了矩阵加法和矩阵乘法的功能。而day31是面向对象开发,一个矩阵类,在这…

傅盛“追风”GPT,猎户星空春天来了?

GPT的横空出世,让冷清已久的商用服务机器人市场,又有了“新故事”。 从技术底层逻辑而言,服务机器人受到这类新技术的影响会更为明显。因为抛开硬件,服务机器人的内核其实就是AI,GPT大模型的出现显然成了现阶段该产业进…

KDSL-82轻型升流器

一、产品概述 KDSL-82 1000A大电流发生器是一种作为检验用的电流源,大电流试验器采用ARM芯片控制输出工艺和大容量的环形变压器,并且配有液晶屏显示的表计,同时显示一、二次电流、变比和秒表接点(或电位)的动作时间。外配铝合金机箱&#xff…

Mybatis核心

文章目录前言一、Configuration二、MappedStatement三、SqlSession四、Executor五、StatementHandler六、ParameterHandler七、ResultSetHandler八、TypeHandler总结前言 SqlSession是MyBatis提供的面向用户的操作数据库API。那么MyBatis底层是如何工作的呢?为了解…

SpringCloud-Gateway实现网关

网关作为流量的入口,常用的功能包括路由转发、权限校验、限流等Spring Cloud 是Spring官方推出的第二代网关框架,由WebFluxNettyReactor实现的响应式的API网关,它不能在传统的servlet容器工作,也不能构建war包。基于Filter的方式提…

​破除“内卷”,什么才是高阶智能座舱更优方案?

下一代智能座舱雏形已现。 从多屏互动到舱内全场景交互,从中控娱乐快速延伸到更多元化的车内娱乐平台;越来越多元化功能集中上车,座舱空间的营造(包括氛围灯、香氛等)以及AR技术的应用等等,开始深刻影响着…

关于ROS机器人-文心一言和CatGPT怎么看-

交流截图: 文字版本如下(W-文心;C-猿如意): 如何通过蓝桥云课学习ROS机器人? W: 如果你想通过蓝桥云课学习ROS机器人,可以按照以下步骤进行: 确认ROS机器人的版本和教…

能自动翻译的软件-最精准的翻译软件

批量翻译软件是一种利用自然语言处理技术和机器学习算法,可以快速翻译大量文本内容的工具。批量翻译软件可以处理多种格式的文本,包括文档、网页、邮件、PDF等等,更符合掌握多语言的计算机化需求。 147CGPT翻译软件特点: 1.批量任…

opencv:介绍 SIFT(尺度不变特征变换)及其使用(一)

在本章中 我们将了解 SIFT 算法的概念 我们将学习如何找到 SIFT 关键点和描述符。 理论 在过去的几章中,我们了解了一些角点检测器,如 Harris 等。它们具有旋转不变性,这意味着即使图像旋转,我们也可以找到相同的角点。这是显而易见的,因为旋转后的图像中的角点仍然是角点…

(链表专题) 328. 奇偶链表 ——【Leetcode每日一题】

328. 奇偶链表 给定单链表的头节点 head ,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。 第一个 节点的索引被认为是 奇数 , 第二个 节点的索引为 偶数 ,以此类推。 请注意,偶…

腾讯云轻量应用服务器搭建网站教程(WordPress为例)

腾讯云轻量应用服务器搭建WordPress网站教程,先安装WordPress应用镜像,然后远程连接轻量应用服务器获取WP用户名和密码,域名DNS解析到轻量服务器IP地址,登陆WordPress后台管理全过程,腾讯云百科来详细说下腾讯云轻量服…
最新文章