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

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

老规矩文末有彩蛋~

相关推荐

bet体育365正规吗 《上古卷轴5》随从强度排行榜
足球365是什么意思 2025年十大薅羊毛赚钱平台(盘点10款最新薅羊毛赚钱软件)
bet体育365正规吗 《天天世界杯》新手攻略:从入门到精通的实战小技巧全解析