1.表数据备份
create table bak_AAA as
select * from AAA;
把表AAA里所有的查询结果备份到表bak_AAA 里
也可以把表AAA的部分数据备份,只要把“*”换成字段,在AAA后面加where条件即可
2.备份好的数据进行恢复
2.1 先把和备份表里重复的数据删掉
delete from full_request_info_t where request_id in(select request_id from bak_full_request_info_t);
注:request_id是主键
2.2 把备份得数据再插入到表内
insert into AAA select * from bak_AAA;
恢复部分数据,可在sql后面加响应的条件
3.case when函数
select
c.owner,
case c.owner when ‘2010401’ then ‘1001’ when ‘1001’ then ‘移动’ when ‘1002’ then ‘移动’ when ‘1003’ then ‘电信’
end as PROPERTY_TYPE
from AAA;
把表AAA中的owner字段查出来,用PROPERTY_TYPE来表示,如果值是“2010401”则显示为“1001”,如果值是“1001”则显示为“移动”,“1002”显示为“联通”,“1003”显示为“电信”
结果如下:
4.merge into 原来更新表数据
当数据量较大的时候 merge into比直接insert效率高
MERGE INTO AAA A USING (select B.request_id,B.site_name,B.cust_company from BBB B) C ON (A.request_id=C.request_id)
WHEN MATCHED THEN
UPDATE SET A.site_name=C.site_name
,A.cust_company=C.cust_company
WHEN NOT MATCHED THEN
INSERT(A.request_id,A.site_name,A.cust_company)
VALUES(C.request_id,C.site_name,C.cust_company);
commit;
用表BBB内的数据来更新AAA表内的数据。
5.drop table 表名,删除表
drop table AAA;
可删除表,包括表内数据和表结构。