DML数据更新部分

DML数据操作语言分为两大部分:一个是查询,一个是更新,现在整理更新部分:
数据增加:
语法:insert into 表名{ (列名1,列名2,,,,)} values (值1,值2,)

当插入日期的时候:当前日期(sysdate) to_date()转换,按照日期格式编写字符串自动转换

例:
insert into mycaozy(caozydm,caozyxm,mim,qiy,pinym) values (0300,'殷守恩','',0,'yse');
注:如果省略掉列名,后面值的顺序一定要与表中列的顺序相同;建议使用完整格式
对空值的处理:
(1)明确的设置一个空值:

insert into mycaozy(caozydm,caozyxm,mim,qiy,pinym) values (0300,'殷守恩',null,0,'yse');

(2)可以不编写不需要的内容(列和值都要去掉):

insert into mycaozy(caozydm,caozyxm,qiy,pinym) values (0300,'殷守恩',0,'yse');

将一个表中的某些字段批量插入到另个表中:

insert into caozy (caozydm,caozyxm)  select caozydm,caozyxm from mycaozy;

修改数据:
语法:update 表名 set 列1 = 值1,列2 = 值2, where ,,,,,

在数据库更新的时候,其他用户是不能针对你正在更新的表进行操作的,需要在你更新提交之后,其他用户才可以操作
将一行数据的某些字段表的和另一条数据的对应字段相同:

update mycaozy 
set (caozydm,caozyxm) = (select caozydm,caozyxm 
												from mycaozy 
												where caozydm = 1) 
where caozydm = 2

修改中的性能问题:
假设一个大型网站,有3亿的用户,存储在一个用户表中,每个用户登录的时候都会实现一个记录用户最后一次登录日期的功能,某天需要你修改一下全部的用户表,假设修改10条数据需要1秒的时间,怎么处理
首先,百分百的更新全部数据,是不可取的,可以拆分操作,首先活跃用户,每次进入的时候都需要登录(免登陆的实际都在后台完成的),登录的时候除了验证用户民和密码,在额外执行一条更新操作,以时间换空间,可能一年或者n年完成操作,但这完全不影响程序的运行。
所以我们在执行更新操作的时候,一定要加上where子句进行限定更新。

数据删除:
语法:delete from 表名 where ……
在操作中,删除操作一定要慎重,但实际上,我们delete有两种删除操作方式:
物理删除:delete from,,直接删除掉
逻辑删除:增加一个逻辑字段flag,如果flag=1,则表示已经被删除,flag= 0表示没有被删除。如果执行的删除操作,就相当于将flag的值改为了1,同时,在每次查询的时候,只需要增加一个where限定条件,where flag = 1.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值