Oracle数据库——数据的更新操作-10

数据的更新操作 (重点)

在之前讲解过的内容都属于DML的范畴(DQL也包含DML之中),而对于DML除了查询之外,另外一个最为重要
的功能就是数据的更新。
由于emp表等一系列数据表在日后学习过程之中依然要使用到,为了保证表的数据不被破坏,建议将emp表
复制为myemp表,执行如下的语句:
 CREATE TABLE myemp AS SELECT * FROM emp;
这个时候emp表中的数据全部保留了myemp表,而且复制表也是为了避免约束对现在学习的影响


数据增加操作
如果要想进行数据增加使用如下语法

INSERT INTO 表名称[(列1,列2,...)]VALUES(值1,值2,...);

在进行数据增加的时候主要会接触到如下几类数据
字符串:使用“'”声明。例如:'hello'
数字:直接编写,例如:123
日期:有三种方式进行日期的定义
    可以按照已有的日期格式编写字符串“17-9月-81”,因为oracle会实现自动转型
    建议使用TO_DATE()函数,将字符串格式化为日期:=<也只是针对于直接编写SQL
    如果为当前的日期时间使用SYSDATE表示


范例:增加一条新的数据
INSERT INTO myemp(empno,job,hiredate,ename,sal,deptno,comm,mgr) 
VALUES(8888,'清洁工',TO_DATE('1991-09-19','yyyy-mm-dd'),'张见',100,40,1,7369);
简写语法:
INSERT INTO myemp
VALUES(9999,'张2见','清洁工',7369,TO_DATE('1991-09-19','yyyy-mm-dd'),1000,5000,40);

在日后的开发之中所有的增加操作都建议完整语法。 
数据修改
修改数据的使用语法
UPDATE 表名称 SET 字段1=值1,字段2=值2,...[WHERE 更新条件(s)];

在更新的时候WHERE子句与之前限定查询之中使用的判断符完全相同


范例:将7369的雇员工资修改为9000,职位修改为MANAGER
UPDATE myemp SET sal=9000,job='MANAGER' WHERE empno=7369;

范例:将7934的职位修改为与7839相同的职位
首先知道7839的职位
SELECT job FROM myemp WHERE empno=7839;
进行数据更新
UPDATE myemp SET job=(
SELECT job FROM myemp WHERE empno=7839)
WHERE empno=7934;


范例:一次性上涨所有雇员的工资,涨幅为10%
UPDATE myemp SET sal=sal*1.1;

此时的更新操作里面没有使用任何WHERE子句作为限定,所以在这种情况下就变为了更新全部数据,可是
为什么会有这种问题呢?
在进行更新的过程之中,只能有一个用户进行操作,其他的用户无法进行更新操作(可以执行查询操作)
,如果说现在有一个网站的数据库里面有一个用户表,存在有5000W条记录,但是发现有一个字段的内容设置的不合理,
实现更新。那么如果按照每更新100条要花费1S的时间,5000W要大约6天,那么就表示在这6天之内,其他任何
用户都不能够修改此用户表数据
项目开发之中只有两个原则:
以时间换空间:当电脑性能不足的时候只能够利用时间拉长完成工作的目的
以空间换时间:加大电脑的使用量(性能提升)减少消耗的时间。
 
数据删除操作
如果某些数据不再使用则删除,删除语法
DELETE FROM 表名称 [WHERE 删除条件(s)];


范例:删除雇员编号是8888,9999,7566的雇员信息
DELETE FROM myemp WHERE empno IN(8888,9999,7566);

更新操作之中返回的数据更新行数是开发之中判断操作是否成功的依据
范例:删除公司的所有领导
DELETE FROM myemp WHERE empno IN(SELECT mgr FROM myemp);

范例:删除所有工资高于2500的雇员
DELETE FROM myemp WHERE sal>2500;

范例:清除表
DELETE FROM myemp;
在工作之中这种删除表中全部数据的操作也是不能出现的。

删除分为两种:
逻辑删除:设置一个删除标志位(flag),flag=0表示未删除,flag=1表示已删除
物理删除:直接执行DELETE语句实现的删除,一般不要出现

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值