DEPTNO COUNT(*) SUM(SAL) 20 5 10875 30 6 9400
67.ORDER BY 用于对查询到的结果进行排序输出
SQL> select deptno,ename,sal from scott.emp order by deptno,sal desc; DEPTNO ENAME SAL 10 KING 5000 10 CLARK 2450 10 MILLER 1300 20 SCOTT 3000 20 FORD 3000 20 JONES 2975 20 ADAMS 1100 20 SMITH 800 30 BLAKE 2850 30 ALLEN 1600 30 TURNER 1500 30 WARD 1250 30 MARTIN 1250
30 JAMES 950
常用SQL语句总结
1.曾经不小心把开发库的数据库表全部删除,当时吓的要死。结果找到下面的语句恢复到了1个小时之前的数据!很简单。 注意使用管理员登录系统:
select * from 表名 as of timestamp sysdate-1/12 //查询两个小时前的某表数据!既然两小时以前的数据都得到了,继续怎么做,知道了吧。。 drop table 表名;
数据库误删除表之后恢复:( 绝对ok,我就做过这样的事情,汗 )不过要记得删除了哪些表名。
flashback table 表名 to before drop; 2.查询得到当前数据库中锁,以及解锁:
查锁
SELECT /*+ rule */ s.username, decode(l.type,'TM','TABLE LOCK', 'TX','ROW LOCK', NULL) LOCK_LEVEL,
o.owner,o.object_name,o.object_type,
s.sid,s.serial#,s.terminal,s.machine,s.program,s.osuser FROM v$session s,v$lock l,dba_objects o WHERE l.sid = s.sid
AND l.id1 = o.object_id(+) AND s.username is NOT NULL;
解锁
alter system kill session 'sid,serial';
如果解不了。直接倒os下kill进程kill -9 spid 3.关于查询数据库用户,权限的相关语句:
Sql代码
1.查看所有用户:
1. select * from dba_user; 2. select * from all_users; 3. select * from user_users; 4. 5.
2.查看用户系统权限:
6. select * from dba_sys_privs; 7. select * from all_sys_privs; 8. select * from user_sys_privs;
3.查看用户对象权限:
9. select * from dba_tab_privs; 10.select * from all_tab_privs; 11.select * from user_tab_privs;
4.查看所有角色:
12.select * from dba_roles;
5.查看用户所拥有的角色:
13.select * from dba_role_privs; 14.select * from user_role_privs;
4.几个经常用到的oracle视图:注意表名使用大写....................
1. 查询oracle中所有用户信息
select * from dba_user;
2. 只查询用户和密码
select username,password from dba_users;
3. 查询当前用户信息
select * from dba_ustats;
4. 查询用户可以访问的视图文本
select * from dba_varrays;
5. 查询数据库中所有视图的文本
select * from dba_views;
6.查询全部索引
select * from user_indexes;
7.查询全部表格
select * from user_tables;
8.查询全部约束
select * from user_constraints;
9.查询全部对象
select * from user_objects;
5.查看当前数据库中正在执行的语句,然后可以继续做很多很多事情,例如查询执行计划等等
(1).查看相关进程在数据库中的会话
1. Select a.sid,a.serial#,a.program, a.status , 2. substr(a.machine,1,20), a.terminal,b.spid
3. from v$session a, v$process b 4. where a.paddr=b.addr 5. and b.spid = &spid; 6.
(2).查看数据库中被锁住的对象和相关会话
7. select a.sid,a.serial#,a.username,a.program, 8. c.owner, c.object_name
9. from v$session a, v$locked_object b, all_objects
c
10. where a.sid=b.session_id and 11. c.object_id = b.object_id; 12.
(3).查看相关会话正在执行的SQL
13. select sql_text from v$sqlarea where address =
14. ( select sql_address from v$session where sid =
&sid );
6.查询表的结构:表名大写!!
select t.COLUMN_NAME, t.DATA_TYPE,
nvl(t.DATA_PRECISION, t.DATA_LENGTH), nvl(T.DATA_SCALE, 0), c.comments
from all_tab_columns t, user_col_comments c whEre t.TABLE_NAME = c.table_name and t.COLUMN_NAME = c.column_name
and t.TABLE_NAME = UPPER('OM_EMPLOYEE_T') order by t.COLUMN_ID