关于SQL的学习记录(十四、更新和删除数据)

更新和删除数据

更新表中的数据:
可以使用UPDATE语句更新表中的数据。

  • 更新单个字段的数据

    • 语法格式:
    UPDATE 表名
    SET 字段名=更新值
    WHERE 条件表达式
    #UPDATE子句指定要更改哪个表中的数据
    #SET子句指定将哪个字段的数据用什么值替换
    #WHERE子句设置要更新的记录的条件
    
    • 以上三个子句的执行顺序和工作原理是:
      1.UPDATE子句。告诉DBMS要使用哪个表,并打开该表
      2.WHERE子句。将表中满足条件的记录放入结果集
      3.SET子句。更新结果集中所有记录的特定字段的数据

    注意:UPDATE语句中的WHERE子句可以被省略,但是这么做的后果是,更新在所有记录上进行。因此,在省略WHERE子句前应当考虑清楚,是否真的要更新所有记录的数据。

  • 更新多个字段的数据

    • 语法格式:
    UPDATE 表名
    SET 字段名1=更新值1,
    	字段名2=更新值2,
    	......
    	字段名n=更新值n
    WHERE 条件表达式
    #SET子句中的表达式之间用逗号(,)隔开 
    
  • 使用子查询更新数据
    UPDATE语句的WHERE子句中,可以使用子查询选择需要更新的记录。利用其这一特点,UPDATE语句可以基于其它表中的数据进行更新。

  • 使用表连接更新数据
    UPDATE语句中还可以使用FROM子句。通过FROM子句和WHERE子句配合,可以进行多表连接,就是说在UPDATE语句中可以通过多表连接进行数据更新。(UPDATE代替FROM)

  • 使用UPDATE语句删除指定字段的数据
    UPDATE语句除了更新数据以外,还有一个作用,即删除指定字段的数据。
    其实,所谓的删除,只是使用NULL值替换原有的字段值而已。

注意:用NULL值替换字段值时,首先必须保证该字段可以为空,否则会出现错误。

删除表中的数据:

  • 使用DELETE语句删除表中的数据
    • 使用DELETE语句删除的是整行记录,而并非是记录中的某个字段值。
    • 语法格式:
    DELETE FROM 表名
    WHERE 条件表达式
    #DELETE FROM指定要从哪个表删除数据
    #WHERE用于设置删除记录的条件
    #即DELETE语句从表中删除那些满足WHERE子句条件的所有记录
    #当省略WHERE子句时,DELETE语句删除表中的所有记录(不删除表)
    #要删除表用语句:DROP TABLE 表名
    
  • DELETE语句中使用多表连接
    • DELETE语句中也可以使用多表连接,就是说可以根据其它表的数据删除本表记录
    • 语法格式:
    DELETE 需要删除数据的表名
    FROM 连接的表名以及连接的方式
    WHERE 条件表达式
    
  • 使用TRUNCATE语句删除所有记录
    • TRUNCATE是删除表中所有记录的另一种语句,将其与DELETE语句相比,其运行效率非常的高
    • 因为使用TRUNCATE语句时,DBMS不会写入任何内容,换个角度说,就是TRUNCATE语句所做的修改是不能回滚
    • TRUNCATE语句只是删除了表中的所有数据,而并没有删除表本身
    • 语法格式
    TRUNCATE TABLE 表名
    

通过视图更新表:

  • 不能用于更新的视图
    • 并不是所有视图,都能用于更新数据
    • 不能用于更新数据的视图:
      SELECT子句的字段列表中包含了聚合函数的视图不能用于更新数据
      SELECT语句中包括GROUP BY子句的视图不能用于更新数据
      SELECT子句中包含了DISTINCT关键字的视图不能用于更新数据
      SELECT语句中包含了计算字段的视图不能用于更新数据
      ❀基于多表连接的视图不能用于更新数据
      ❀如果视图不包含具有非空约束而且没有默认值的字段,则该视图不能用于更新数据
      ❀视图中的数据要改为不属于该视图的权限范围时,不能更新数据

通过视图删除表数据:

  • 语法格式:
    DELETE FROM 视图名
    WHERE 条件表达式
    

    可以知道,使用视图删除数据和直接删除表中数据的方法是相同的,只是将表名改为视图名即可。
    通过视图删除数据和通过视图更新数据一样,只能删除所能看到的记录数据,而不能删除无法看到的数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值