SQL的数据更新操作(增、删、改)

前言:

关于查询操作(概念+习题)请看以下两篇文章

SQL的简单查询语句

SQL语句练习题

目录

 

数据更新

增(数据的增加)

语法:

注意:

演示:  

改(数据的修改)

语法:

举例+演示:

删(数据的删除)

语法:

举例+演示:

事务处理

事务的回滚:

事务的提交:

数据伪列

ROWNUM

ROWID


数据更新

增(数据的增加)

语法:

INSERT INTO 表名称 [(字段1,字段2,字段3,...)] VALUES(值1,值2,值3,...)

注意:

如果需要进行增加数据的话,则以下的几种数据类型要分别处理:

     增加数字:直接编写数字,如:123;

     增加字符串:字符串应该使用‘声明;

     增加DATE数据:

         第一种:可以按照已有的字符串的格式编写字符串,如:‘20-6月-06’;

         第二种:利用TO_DATE函数将字符串变为DATE型数据;

         第三种:如果设置的时间为当前系统时间,则使用SYSDATE;

 

演示:  

添加雇佣员工的数据信息

完整添加数据字段,需填写每个列的字段

语句:

SQL>insert into  myemp
(empno,ename,hiredate,sal,comm,job)
values(7777,'Eichi',TO_DATE('1998-09-12','yyyy-mm-dd'),15000, 700,8888,'BOSS');

结果:

语句:

SQL>insert into myemp (empno,ename,hiredate,sal,comm, job )
values (8888,'yichen',SYSDATE,3000,7777,'KING');

结果:

 

简便添加数据的话,需要按照表的列的原始顺序来进行添加

SQL>insert into myemp values (9999,'heisenberg','BOSS2',9999,sysdate,10000,null,30);

 

改(数据的修改)

语法:

UPDATE 表名称 SET 更新字段1=更新值1,更新字段2=更新值2,...[WHERE 更新条件(s)];

 

举例+演示:

  • 更新员工编号为7369的员工的工资为5000,奖金为2000,职位升级为'MANAGER',职位更新时间为当前时间
SQL> update myemp set sal=2000,job='MANAGER',hiredate=sysdate where empno=7369;

 

  • 所有员工的工资统一改为20000
SQL> update myemp set sal=20000;

不添加限定条件,即就是对所有的数据项进行修改

 

删(数据的删除)

语法:

DELETE FROM 表名称 [WHERE 删除条件(s)];

 

举例+演示:

  • 删除1987年入职的员工的信息
SQL> delete from myemp where TO_CHAR(hiredate,'yyyy')=1987;

注意:如果删除的时候没有相应匹配条件的时候,则更新记录为0,更新操作也一样。

 

可见,1987年入职的员工的信息被删除了

 

不加限制条件则根更新操作相同,即对表的全部数据项进行操作,

删除myemp表

SQL> delete from  myemp;

 

事务处理

事务的回滚:

ROLLBACK,更新操作回到原点

 

演示:

回滚刚才删除的表,可见,删除的表就这么恢复了

事务的提交:

COMMIT,真正的发出更新请求,一旦提交后无法回滚

死锁:

此时新开一个会话,如果会话1对7369数据项进行修改sal为2000,那么在没有提交前,只有会话1可以对这个数据继续进行修改,其他会话将不能修改这个数据

 

一旦提交,其他会话才能进行操作

 

数据伪列

ROWNUM

概述:OWNUM为每一个显示的记录都会自动的随着查询生成的行号。

注意:该行号不是永久的,会随着查询的显示变化而变化

举例+演示:

  • 查询emp表的部门是30的rownum,empno,ename,job,hiredate和sal
SQL>select rownum,empno,ename,job,hiredate,sal from emp where deptno=30;

  • 查询前五条记录
SQL>select rownum,empno,ename,job,hiredate,sal from emp where rownum<=5;

  • 查询6-10行记录

思路:利用子查询

SQL>select * from (select rownum rn,empno,ename,job,hiredate,sal from emp where rownum<=10) temp where temp.rn>5;

ROWID

概述:每一条记录的ROWID都不会重复,所以即使所有列的内容重复,ROWID也不会重复.

格式为:AAAL+XAAEAAAAANAAA

             数据对象号:AAAL+X

              相对文件号:AAE

              数据块号: AAAAAN

              数据行号: AAA


老规矩文末有彩蛋~

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值