由于笔者在操作数据库时,遇到几个以前不太常见的操作,感觉有必要记录一下,如下:
1.查被锁表
SELECT object_name, machine, s.sid, s.serial#
FROM gv$locked_object l, dba_objects o, gv$session s
WHERE l.object_id = o.object_id
AND l.session_id = s.sid;
2.解被锁表
ALTER system kill session '43, 9151';
3.数据库解锁
ALTER USER gb_report ACCOUNT UNLOCK;
4.查询表中某一列重复
select *from table t where t.name in
(select s.name from table s group by s.name having count(*) > 1 );
5.数据库授权
grant resource,connect,DBA to gb;(gb为数据库用户)
6.批量修改表某个字段
update 要修改的表 set 字段名=replace(字段名,‘要修改的字符’,‘修改为什么字符’) where 条件;
7.基于 as of timestamp 的闪回查询
select * from 表 as of timestamp to_timestamp('2016-4-8 17:30:00','YYYY-MM-DD HH24:MI:SS');
8.sql 之 left join,right join,inner join;
left join:左边显示全,右边满足条件的显示,用null补全;
right join: 右边全部显示,左边满足条件的显示,用null补全;
inner join: 左右两边满足条件的显示。
9.只创建表,不添加数据
create table user as select* from temp where 1=0;
创建表,也添加数据
create table user as select* from temp;
10.将varchar类型转换为date
select to_date('2017-01-23','YYYY-MM-DD') from DUAL;
由于笔者水平有限,难免有误,还望有心的读者斧正!