前言:
关于查询操作(概念+习题)请看以下两篇文章
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)];
SQL> update myemp set sal=2000,job='MANAGER',hiredate=sysdate where empno=7369;
SQL> update myemp set sal=20000;
不添加限定条件,即就是对所有的数据项进行修改
DELETE FROM 表名称 [WHERE 删除条件(s)];
SQL> delete from myemp where TO_CHAR(hiredate,'yyyy')=1987;
注意:如果删除的时候没有相应匹配条件的时候,则更新记录为0,更新操作也一样。
可见,1987年入职的员工的信息被删除了
不加限制条件则根更新操作相同,即对表的全部数据项进行操作,
删除myemp表
SQL> delete from myemp;
ROLLBACK,更新操作回到原点
演示:
回滚刚才删除的表,可见,删除的表就这么恢复了
COMMIT,真正的发出更新请求,一旦提交后无法回滚
死锁:
此时新开一个会话,如果会话1对7369数据项进行修改sal为2000,那么在没有提交前,只有会话1可以对这个数据继续进行修改,其他会话将不能修改这个数据
一旦提交,其他会话才能进行操作
概述:OWNUM为每一个显示的记录都会自动的随着查询生成的行号。
注意:该行号不是永久的,会随着查询的显示变化而变化
举例+演示:
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;
思路:利用子查询
SQL>select * from (select rownum rn,empno,ename,job,hiredate,sal from emp where rownum<=10) temp where temp.rn>5;
概述:每一条记录的ROWID都不会重复,所以即使所有列的内容重复,ROWID也不会重复.
格式为:AAAL+XAAEAAAAANAAA
数据对象号:AAAL+X
相对文件号:AAE
数据块号: AAAAAN
数据行号: AAA
老规矩文末有彩蛋~