SQL更新数据
1、插入数据——insert操作
语法格式如下:
insert into 表名 (列名1,列名2……,列名n) values (值1,值2……,值n);
在insert操作中,列名列表中的各列需要以逗号分隔;而值列表指定各列的值,列名与值需要一一对应。
如果insert语句所指定的列名列表包含了表中的所有列,那么可以将列名列表省略。
create table student08 ( id number,
name varchar2(20),
sex varchar2(20),
age number,
address varchar2(20)
) tablespace test
select * from student08;
insert into student08(id,name,sex,age,address) values(2,'yuanling','nv',27,'zhejiang');
insert into student08 values(1,'shenweiwei','nan',31,'jiangsu');
insert into student08 values(4,'wangli','nv',32,'jiangsu04');
insert into student08 values(3,'fenglei','nan',22,'jiangsu03');
2、批量插入
在插入语句中可以使用子查询,以实现批量插入
create table student09 ( id number,
name varchar2(20),
sex varchar2(20),
age number,
address varchar2(20)
) tablespace test
select * from student09;
insert into student09 values(5,'fengtian','nan',31,'jiangsu');
insert into student09 values(6,'bentian','nv',32,'jiangsu');
insert into student09 values(7,'dazong','nan',31,'shanghai');
insert into student09 values(8,'nisang','nv',32,'zhejiang');
insert into student09 values(9,'bieke','nan',31,'zhejiang');
insert into student09 values(10,'xuefulan','nv',32,'shanghai');
-------------------------------------------------------------------------
insert into student08(id,name,sex,age) select id,name,sex,age from student09 where id in(5,6,8)
select * from student08;
----------------------------------------------------------------------------------------------------------
3、更新数据——update操作
update命令用于更新已有数据,其后紧跟表名,set命令用于重新设置列值,其后紧跟列名,并用等号指定新值。
语法格式如下:
update 表名 set 列 = 新值
使用update语句同样可以用于更新多列
语法格式如下:
update 表名 set 列1 = 新值1,列2 = 新值2,……
注意事项,使用update语句一般和where条件一起执行,没有where条件,就会更新整个表的数据
select * from student08;
update student08 set name = 'yuanxin' where age = 27;
update student08 set sex = 'nan',age = 18,address = 'wulumuqi' where id = 8 or id = 6;
update student08 set address = 'zhejiang' where id between 5 and 8;
---------------------------------------------------------------------------------------------------------
delete操作与truncate table操作
除了delete命令,oracle还可以利用truncate table命令删除表中的数据。但是,truncate table语句与delete语句是有本质区别的:
delete语句和insert、update语句都是可以做回滚操作的,数据修改后,可以做还原。
truncate table语句执行后,数据无法还原,即无法做到回滚。
delete操作与truncate table操作具有不同的应用场景:
当删除部分数据时,应当使用delete语句,并添加where条件;
删除全部数据时,使用truncate table语句。而且truncate table语句删除全部数据时,效率也要高于delete语句
select * from student08;
delete from student08 where address in ('jiangsu' , 'jiangsu04');
delete from student08 where address like '%3';
delete from student08 where name not like '%e%';
truncate table student08;
drop table student08;