DML :数据操作语言,对应增删改查
一、数据插入
insert 语句:insert into tablename[col1,„] values(val1,„);
(1)插入全部列:插入一行数据,对应 3 列的数据分别是 51, ‘51name’ , ‘51loc’
insert into dept values(51,'51name','51loc');
(2)插入部分列:插入一行数据,在 deptno, dname 插入值,55, ‘55name’ ,该行其他列值默认为空
insert into dept(deptno, dname) values(55, '55name');
(3)隐式插入 null
insert into dept(deptno,dname) values(52,'52name');
(4)显示插入 null
insert into dept(deptno,dname,loc) values(53,'53name',null);
(5)&符号的使用
insert into dept(deptno, dname, loc) values(&t1, „&t2‟, &t3); // t1 是数值,t2 是字符串
(6)拷贝表结构
create table tname_YYYY_MM_DD as select * from tname_xxxxx
where 1=2; // where 条件为假,之拷贝表结构,为真,拷贝表
(7)批量插入
insert into tname_bak select * from tname where .....;
二、数据的修改
update tablename set 列 1=val1, 列 2=val where 条件;
(1)修改 emp 表的员工名字为 TOM_CAT 的员工的薪水为原有薪水加 100
update emp set sal=sal+100 where ename='TOM_CAT';
(2)修改 emp 表的员工名字为 TOM_CAT 的员工的薪水为原有薪水加空
update emp set sal=null where ename='TOM_CAT';
注意:在 update 的时候, null 可以使用等号;并且一定要使用 where 条件,否则会修改表中所有的记录
三、数据的删除
通用语句:
delete from tablename where 条件
在使用 delete 删除的时候,一定要有 where 条件, 否则会删除整个表的记录
delete 和 truncate 的区别:
(1)delete 逐条删除表"内容",其他不动,truncate 先摧毁表再重建。
(2)delete 可以闪回(flashback):做错了一个操作并且 commit 了,对应的撤销行为;truncate 不可以闪回。
(3)由于 delete 是逐条操作数据,所以 delete 会产生碎片,truncate 不会产生碎片。
(4)delete 不会释放空间,truncate 会释放空间。
(5)delete 可以回滚 rollback,truncate 不可以回滚 rollback。
(6)数据量非常大的时候,truncate 效率更高,但是不建议使用 truncate,因为会先摧毁表,所以过于危险.