[学习笔记] Oracle基础增删改查用法
程序员文章站
2022-07-06 11:41:55
查询 备份查询数据 插入 插入查询结果 更新 通过查询结果更新 删除 截断表 删除和截断的区别 TRUNCATE 是 DDL 命令,命令执行完就提交,删除的数据不能恢复; DELETE 命令是 DML 命令,命令执行完需提交后才生效,删除后的数据可以通过日志文件恢复。 TRUNCATE 的执行速度比 ......
查询
select *|列名|表达式 from 表名 where 条件 order by 列名 select t.* from student.stuinfo t where t.stuname = '李四'; select t.stuid,t.classno,t.stuaddress,t.grade from student.stuinfo t where t.stuname = '李四'; select t.* from student.stuinfo t where t.classno = 'c201801' order by t.age asc;
备份查询数据
create table 表名 as select 语句 create table student.stuinfo2 as select * from student.stuinfo; select * from student.stuinfo2;
插入
insert into 表名(列名1,列名2,列名3.....) values(值1,值2,值3.....); insert into student.stuinfo (stuid, stuname, sex, age, classno, stuaddress, grade, enroldate, idnumber) values ('sc201801005', '龙七', '1', 26, 'c201801', '福建省厦门市xxx号', '2018', to_date('01-09-2018', 'dd-mm-yyyy'), '3503021992xxxxxxxx'); select * from student.stuinfo t where t.stuid='sc201801005';
插入查询结果
insert into 表名 select 子句 delete from student.stuinfo t where t.stuid in (select b.stuid from student.stuinfo2 b); insert into student.stuinfo select * from student.stuinfo2; select * from student.stuinfo;
更新
update 表名 set 列名1=值1,列名2=值2,列名3=值3... where 条件 update student.stuinfo t set t.age = '24', t.idnumber = '3503021994xxxxxxxx' where t.stuname = '张三'; commit; select * from student.stuinfo t where t.stuname='张三';
通过查询结果更新
update 表1 set 列名=(select 列名 from 表2 where 表1.列名=表2.列名) where exists (select 1 from 表2 where 表1.列名=表2.列名) update student.stuinfo t set (age, idnumber) = (select age, idnumber from student.stuinfo2 b where b.stuid = t.stuid) where exists (select 1 from student.stuinfo2 b where b.stuid = t.stuid and b.stuname = '张三'); select *from student.stuinfo t where t.stuname='张三';
删除
delete from 表名 where 条件 delete from stuinfo t where t.stuname='张三';
截断表
truncate table 表名 truncate table stuinfo2;
删除和截断的区别
- truncate 是 ddl 命令,命令执行完就提交,删除的数据不能恢复; delete 命令是 dml 命令,命令执行完需提交后才生效,删除后的数据可以通过日志文件恢复。
- truncate 的执行速度比 delete 速度快很多。
- truncate 会重置索引,delete 不会。
- delete 会触发触发器,truncate 不会。
- delete 的原理是一条一条从表中删除数据,并将删除操作当做事务记录在数据库日志中,可以回滚;truncate 是一次性将数据页删除,不能回滚。