Oracle------第九章Manipulating Data
第九章:处理数据
-
插入一条数据
insert into 表名[字段1....] values (值1,值2.....);
注意:
1)如果表后没有跟字段,给所有字段插入值
2)插入的值必须和表中字段声明的顺序对应,个数相同
3)注意不要违反了完整性约束
4)插入空值---- null
5)如果表后有跟字段,给指定字段插入值
6)先插入父表的值,插入子表的值如:向s_stu表插入一条数据
insert into s_stu values (1,'lisi',20,'f','18625034533',41);
向s_stu表值插入id的值
insert into s_stu values (2,'lisi',null,null,null,null); --------------------------------------- insert into s_stu(id,name) values (3,'wangwu');
-
插入多条数据,没有values关键字
insert into 表名(字段...) 子查询; insert into s_stu(id,name,c_id) select id,last_name,dept_id from s_emp where id>10;
-
更新数据:update
update 表名 set 字段名=值,字段名=值,.... where 条件;
注意:
1)不加where,修改表中所有数据
2)加where,修改表中满足where条件的数据学生gender=f,age=22?
update s_stu set gender='f',age=22;
zhangsan学生的电话号码10010?
update s_stu set phone='10010' where name='zhangsan';
-
删除数据delete
delete [from] 表名 where 条件;
注意:
1)不加where,删除表中所有数据
2)加where,删除表中满足where条件的数据
3)先删除子表的数据,再删除父表的数据delete from s_stu where id>20; delete from s_stu delete from s_dept where id=41;
-
事务
a)事务是一个操作单元中的一系列原子操作,
这些原子操作是不可再分的,
这些原子操作要么同时成功,要么同时失败。b)事务开始
1)当打开SQL*PLUS工具开启一个事务
2)上一个事务结束就代表新的事务开始c)事务结束
1)commit,rollback回滚事务
2)执行DDL,DCL会自动提交
3)非正常情况:系统错误,系统崩溃,退出工具d)事务的特点:ACID
1)原子性:事务是不可再分的原子操作
2)一致性:事务操作前后的总数据要保存一致
3)隔离性:一个事务不能看到另外一个事务的数据
4)持久性:将数据持久化保存e)DML语句不会自动提交事务,需要手动提交事务。
insert,delete,update -
事务结束边界的声明:
-
正常结束: commit
a) 数据改变写入数据库;
b) 之前数据永久丢失;
c) 所有用户均可看到改变后的结果;
d) 作用于记录上的锁丢失,其它用户可对这些记录进行更新操作
e) 所有的回滚点擦除。
注: DDL和DCL命令的执行(自动提交),
DML不会自动提交,正常退出会自动提交 -
异常回滚: rollback
a) 事务进行过程中的状态丢失;
b) 恢复到事务开始前的状态;
c) 作用于记录上的锁丢失,其它用户可对这些记录进行更新操作;
注: 系统失败或非正常地终止SQL*Plus,将会自动回滚 -
回滚到特定位置:
a) 通过命令savepoint a设置回滚点a;
b) 通过命令rollback to a回退到a位置;转账:
try{
开启事务
你的账号扣钱update
我的账号加钱update
提交事务commit
}catch(Exception e){
回滚事务rollback
}commit; insert.... savepoint a update.... savepoint b insert.... delete... rollback to a;
-