【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,否则你会发现自己更新或删除了错误的数据。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 《SQL必知必会》第三版样例数据包括以下内容: 1. 表格(Tables):包含数据的结构,用于存储和组织数据。每个表格由一个或多个列(Columns)组成,每一列定义了特定类型的数据。 2. 行(Rows):也称为记录(Record),表示表格中的一条数据。每一行由表格的列组成,每一列都包含一个相关的值。 3. 值(Values):表示在表格中的特定位置上的数据。每一个单元格都包含一个值,该值与特定列和行的交汇处相对应。 4. 主键(Primary Key):用于唯一标识表格中的每一行的列。主键列包含唯一的值,并且不能包含空值(NULL)。 5. 外键(Foreign Key):用于建立表格之间的关系。外键列包含与在另一表格中定义的主键列相对应的值。 6. SQL语句(SQL Statements):用于在数据库中执行操作的命令。包括数据查询(SELECT)、数据插入(INSERT)、数据更新UPDATE)和数据删除(DELETE)等。 7. 样例数据(Sample Data):用于演示和练习的虚拟数据集。这些数据集包含不同类型的数据和关系,以帮助读者理解和应用SQL的概念和技巧。 样例数据被用于书中的案例分析和实践示例,读者可以通过运行相关的SQL语句来操作和查询这些数据。通过这种方式,读者可以更好地理解SQL的基本概念和操作技巧,并将其应用于实际的数据库开发和管理中。 ### 回答2: 《SQL 必知必会 第三版》这本书是一本经典的SQL学习教材,旨在帮助初学者了解和掌握SQL语言。在书中涵盖了丰富的样例数据,以便读者能够通过实例理解SQL的相关概念和运用。 样例数据是指书中提供的用于演示和练习的具体数据集合,这些数据集合包括各种表格和表中的记录。通过使用这些样例数据,读者可以进行实践操作,实现各种SQL查询和数据处理的练习。 书中的样例数据通常涵盖了各个SQL操作的场景,如创建数据库、创建表格、插入记录、查询记录、更新记录和删除记录等。这些样例数据有助于读者更好地理解SQL语言的基本语法和操作方法。 此外,书中还提供了一些复杂和实际场景的样例数据,以帮助读者应用SQL技术解决实际问题。通过对这些样例数据的操作和分析,读者可以学习到如何使用SQL语言进行数据分析、数据挖掘和决策支持等工作。 总之,《SQL 必知必会 第三版》的样例数据是读者学习和实践SQL语言的重要资源。通过实际操作这些样例数据,读者可以更好地理解SQL的相关概念和应用,提升SQL编程和数据处理的能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值