使用sys用户查询
select name from v$database;
v$database视图是当前数据库实例的各种信息,其中包括
Name --数据库名称
created --创建日期
RESETLOGS_CHANGE --重置日志的次数",
RESETLOGS_TIME --打开重置日志的时间
PRIOR_RESETLOGS_CHANGE# --在上一次重置日志时的SCN值
PRIOR_RESETLOGS_TIME --上一次重置日志的时间
等等
START WITH 定义数据行查询的初始起点;CONNECT BY prior 定义表中的各个行是如何联系的;connect by 后面的"prior" 如果缺省,则只能查询到符合条件的起始行,并不进行递归查询;条件2:col_1 = col_2,col_1是父键(它标识父),col_2是子键(它标识子)。条件3过滤递归前相应节点及其子节点,如果上级节点不满足则下级节点自动过滤掉;条件4过滤递归后相应的节点或子节点,如果上级节点不满足则下级结点自动提升一级。系统伪列:CURRVAL AND NEXTVAL 使用序列号的保留字ROWID 记录的唯一标识ROWNUM 限制查询结果集的数量LEVEL 显示层次树中特定行的层次或级别CONNECT_BY_ROOT 返回当前层的根节点(当前行数据所对应的最高等级节点的内容)SYS_CONNECT_BY_PATH(<column>, <char>) 函数实现将从父节点到当前行内容以"path"或者层次元素列表的形式显示出来CONNECT_BY_ISCYCLE 须带参数NOCYCLE,当前行中引用了某个父亲节点的内容并在树中出现了循环,如果循环显示"1",否则就显示"0"。CONNECT_BY_ISLEAF 判断当前行是不是叶子。如果是叶子显示"1",如果不是叶子而是一个分支(例如当前内容是其他行的父亲)就显示"0"而在 Oracle 10g 中,只要指定"NOCYCLE"就可以进行任意的查询 *** 作。与这个关键字相关的还有一个伪列——CONNECT_BY_ISCYCLE, 如果在当前行中引用了某个父亲节点的内容并在树中出现了循环,那么该行的伪列中就会显示"1",否则就显示"0"。--创建测试表,增加测试数据create table test(superid varchar2(20),id varchar2(20),mc varchar2(20));insert into test values('0','1','A1');insert into test values('0','2','A2');insert into test values('1','11','A11');insert into test values('1','12','A12');insert into test values('2','21','A21');insert into test values('2','22','A22');insert into test values('11','111','A111');insert into test values('11','112','A112');insert into test values('12','121','A121');insert into test values('12','122','A122');insert into test values('21','211','A211');insert into test values('21','212','A212');insert into test values('22','221','A221');insert into test values('22','222','A222');commit;--层次查询示例select level||'级' jc,lpad(' ',(level-1)4)||id id,mcfrom test start with superid = '0' connect by prior id=superid;select level||'级' jc,connect_by_isleaf mxf,lpad(' ',(level-1)4)||id id,mcfrom test start with superid = '0' connect by prior id=superid;--给出两个以前在"数据库字符串分组相加之四"中的例子来理解start with connect by --功能:实现按照superid分组,把id用";"连接起来--实现:以下两个例子都是通过构造2个伪列来实现connect by连接的。
sql 递归查询的方法:
方法一:T-SQL递归查询
with Dep as
(
select Id,DeptCode,DeptName from Department where Id=1
union all
select dId,dDeptCode,dDeptName from Dep
inner join Department d on depId = dParentDeptId
)
select from Dep
方法二:PL/SQL递归查询
select Id,DeptCode,DeptName
from Department
start with Id = 1
connect by prior Id = ParentDeptId;
首先你要确定你所使用的DBMS产品,因为在ORACLE和SQL SERVER等DBMS的SQL语法有局部的不同,但大体上语句是一样的。
CREATE TALBE tmpDB (
tid int identity(1,1) primary key, --表主键,可以不用加not null一般使用了primary key就可默认为not null
tname varchar(100) not null, --节点名称
fatherID int --父节点ID
)
GO
生成树形数据结构
select
from
table
start with id =
connect by prior id =
以上就是关于oracle中如何用sql语句显示当前的数据库名称全部的内容,包括:oracle中如何用sql语句显示当前的数据库名称、connect by prior、如何实现数据库SQL递归查询在不同数据库中例子源代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)