SQL-cookbook学习笔记(四)~插入,更新与删除

本文是关于SQL语句的学习笔记,重点介绍了如何插入新纪录、使用默认值、复制行、编辑记录以及删除记录。内容涵盖了一次插入多行、使用default和null、复制表结构、多表插入、更新语句的使用以及复杂的合并记录操作,特别提到了Oracle的merge功能。同时,还讨论了如何安全地删除记录,包括删除重复记录和处理参照完整性的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                    第四章 插入,更新与删除

  1. 插入新纪录
    1. 使用带有values子句的insert into语句来插入一行
    2. 对于DB2和MySQL,可以选择一次插入一行,或者用多个值列表一次插入多行
    3. 如果语句中没有列出要插入行中的目标字段,则必须要插入表中的所有列
  2. 插入默认值
    1. 使用default显式的指定某列插入默认值
    2. 当不需要将表所有列都插入值时,也可以明确的地指出要使用默认值的名称
    3. Oracle9i之前不支持显式插入默认值
    4. MySQL中,如果所有列都定义了默认值,可以用一个空的值列表来解决此问题
    5. PostgreSQL和SQL server支持default values子句
  3. 使用null代替默认值
    1. 在值列表中明确地指定null值
  4. 从一个表向另外的表中复制行
    1. 在insert into 语句后面跟随一个查询,通过该查询返回想要得到的行
  5. 复制定义表(创建新表,该表与已有表的列设置相同)
    1. DB2:
      1. 使用带有like子句的create table 表名 like 目标表
    2. Oracle,MySQL和PostgreSQL:
      1. 在create table命令中,使用一个不反悔任何行的子查询(比如1=0)
  6. 一次向多个表中插入记录
    1. Oracle:
      1. 使用insert all或insert first语句,除了关键字不同,用法完全相同
    2. DB2
      1. 将所有目标表用union all构成一个内联视图,并以该内联视图作为insert into的目标。
    3. MySQL,PostgreSQL和SQL server不支持多表插入
  7. 组织对某几列插入(防止用户或是错误的软件应用程序对某几列插入数据)
    1. 在表中创建一个视图,该视图只显示允许用户进行操作的列,强制所有的插入操作都通过该视图进行
  8. 在表中编辑记录(要修改表中某些(或全部)行的值)
    1. 使用update语句来修改数据库表中已有行
  9. 当相应行存在时更新
    1. 在update中的where子句中使用子查询
  10. 用其他表中的值更新(使用一个表中的值来更新另外一个表中的行)
    1. 在表之间做联接,查找目标值并给update语句
    2. DB2和MySQL:
      1. 使用相关的子查询来设置表中的值,同样使用相关的子查询判别 表中哪些行需要被更新。
    3. Oracle:
      1. 可以使用2方法
      2. 也可以选择使用内联视图来进行更新
    4. PostgreSQL
      1. 可以使用2方法
      2. 也可以在update语句中直接使用联接
    5. SQL server:
      1. 可以使用2方法
      2. 也可以在update中直接使用联接
  11. 合并记录(根据表中记录存在状况,响应进行插入,更新或删除记录,条件为是否有响应的记录(如果记录存在,则更新;如果不存在,则插入;如果在更新之后不满足特定的条件,删除))
    1. 目前只有Oracle可以解决此问题,使用merge,它能够按需执行update或insert操作
  12. 从表中删除所有记录
    1. delete from 表名
  13. 删除指定记录
    1. delete from 表名 where 条件
  14. 删除单个记录
    1. delete from 表名 where 条件(条件要小)
  15. 删除违反参照完整性的记录
    1. 使用not exists和子查询来判断
    2. 也可使用not in来书写此查询
  16. 删除重复记录
    1. 使用 带有聚集函数的子查询,如min等,任意选择保留的ID
  17. 删除从其他表引用的记录
    1. 使用子查询和聚集函数count来查找目标,然后删除
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值