美文网首页
oracle语句

oracle语句

作者: 薛西亚斯 | 来源:发表于2019-07-30 21:28 被阅读0次
  1. with…as…

不同于MySQL,Oracle不能直接使用as来为子查询获得的表命名,在Oracle中要为子查询获得的表指定名称需要使用with…as…语句才行

Mysql:

select tt.* from (select * from emp) as tt;

oracle:

with tt as (select * from emp) select * from tt;

或者:

select tt.* from (select * from emp)  tt;
  1. rownum伪列

由于Oracle中没有像MySql中limit函数以及SQLServer中的top关键字等,所以只能通过伪列的方式去限定查询行数

rownum字段是Oracle中为用户准备的伪列字段,相当于MySQL中的自增字段,可以使用rownum来限定查询结果显示行数

例:用rownum伪列为emp表的查询结果增加自增序号列,提取前10行

select rownum, emp.* from emp where rownum < 11;
查询结果

取倒数N列(grade列按行数递增):

select rownum,s.* from salgrade s where rownum<4 order by grade desc;
查询结果

网上有人说当排序列为主键时,执行顺序是先排序,后取rownum,但在我的环境上结果是一样的(我的是oracle 11g),有待进一步验证

基础查询指令

需登录系统用户
1.查询数据库名:
select name,dbid from v$database;或者show parameter db_name;
2.查询实例名:
select instance_name from v$instance;或者show parameter instance_name;
3.查询数据库域名:
select value from v$parameter where name='db_domain';或者show parameter domain;
4.查询数据库服务器:
select value from v$parameter where name='service_name';或者show parameter service;或者show parameter names;
5.数据库服务名:
此参数是数据库标识类参数,用service_name表示。数据库如果有域,则数据库服务名就是全局数据库名;如果没有,则数据库服务名就是数据库名。查询:show parameter service_name;
6.查看当前登录的用户的表:
select table_name from user_tables;
oracle 查询当前用户下的表名 + 表注释:
select t.table_name tableName, f.comments comments
from user_tables t
inner join user_tab_comments f
on t.table_name = f.table_name

7.oracle 查询某表的所有字段 + 字段注释 + 字段类型
select t.table_name tableName,
t.columnName columnName,
t.dataType dataType,
a.comments
from user_tab_columns t
left join user_col_comments a
on t.table_name = a.table_name
and t.column_name = a.column_name

相关文章

网友评论

      本文标题:oracle语句

      本文链接:https://www.haomeiwen.com/subject/zreorctx.html