表中数据的更新
更新操作包括:插入数据、修改数据、删除数据
一、插入数据
1.1、向所有字段添加值
语法:insert into 表名 values(值1,值2,……);
insert into employee values('0001','张三',5000.00,'manager',sysdate,'设计部');
1.2、向指定字段添加值
语法:insert into 表名(字段名1,字段名2,……) values(值1,值2,……);
insert into employee(emp_id,emp_name) values('0002','李四');
1.3、向表中添加默认值
在创建表或修改表的时候设置默认值
创建表时设置默认值:create table userinfo(id number(6),rdate date default sysdate,email varchar2(100));
向表中插入数据: insert into userinfo(info_id) values(2);
覆盖默认值:insert into userinfo values(3,sysdate-1,'hh');
修改表时设置默认值:alter table userinfo modify email default '无';
备注:在插入数据时,有默认值的列不写数据时,必须向指定字段添加值,若有默认值的列也插入了值,以插入的值为准,否则插入默认值
二、复制表数据
2.1、在建表时复制表数据 顺便把表结构复制过来
语法:create table 新表名 as select 字段1,字段2,…… from 旧表名;(若要将所有字段复制过来,字段处写*就行)create table new_userinfo as select * from userinfo;复制全部字段
create table new_userinfo_01 as select info_id from userinfo; 复制部分字段
2.2、在添加数据时复制别的表的数据
语法:insert into 新表名(字段1,……) select 字段1,……from 旧表名;
insert into new_userinfo_01 select info_id from userinfo;
备注:旧表的字段和新表的字段名可以不一致,但数据类型必须一致三、修改表数据语法:update 表名 set 字段1=值1,…… where 条件;
update userinfo set email='jjjjj' where info_id=1;
update userinfo set email='new' ;email列中所有的数据均被更改
备注:若不加where条件,则会更新该列中的所有数据四、删除表数据语法:delete from 表名 where 条件;
delete from userinfo where info_id=1;
delete from userinfo;表中的数据都被删除
备注:若不加where条件,则会删除表中的所有数据,其速度比truncate慢
truncate 和delete的区别:
1、truncate 属于DDL(数据库定义语言)范畴,delete使用DML(数据库操作语言)范畴
2、truncate 将一次性删除数据表的所有数据,delete语句对数据表中所有的记录进行循环处理
3、truncate 删除的数据不能回滚,delete删除的数据在修改提交之前,仍可以回滚操作
五、数据的提交与回滚
5.1、数据的回滚 rollback;
回滚动作是指当DML修改数据库时,用于存储原数据影像的存储空间
回滚动作有两种情况,一是用户在提交动作之前,手动执行rollback动作,二是事务执行失败,数据库自动执行rollback操作
备注:rollback一般会回滚到上一事务数据库状态,当前事务所做的更改操作无效,条件是当前事务未提交5.2、数据的提交 commit;
提交动作是指将数据库的修改操作反映到数据库,不再允许使用回滚操作