oracle 递归查询-个人总结
首先,建表: create table T_TEST_WORD( id NUMBER, pid VARCHAR2(20), name VARCHAR2(20)) 插入数据: insert into T_TEST_WORD (id, pid, name)values (1, '-1', '中国');insert into T_TEST_WORD (id, pid, name)values (2, '1', '江苏');insert into T_
首先,建表:
create table T_TEST_WORD ( id NUMBER, pid VARCHAR2(20), name VARCHAR2(20) )
插入数据:
insert into T_TEST_WORD (id, pid, name) values (1, '-1', '中国'); insert into T_TEST_WORD (id, pid, name) values (2, '1', '江苏'); insert into T_TEST_WORD (id, pid, name) values (3, '1', '浙江'); insert into T_TEST_WORD (id, pid, name) values (4, '2', '南京'); insert into T_TEST_WORD (id, pid, name) values (5, '2', '无锡'); insert into T_TEST_WORD (id, pid, name) values (6, '1', '安徽'); insert into T_TEST_WORD (id, pid, name) values (7, '4', '雨花台区'); insert into T_TEST_WORD (id, pid, name) values (8, '-1', '美国'); insert into T_TEST_WORD (id, pid, name) values (9, '-1', '俄罗斯'); commit;
查询下表中的数据:
表1
其中PID为-1的代表根节点。
开始进行递归查询:
查询结果如下:
表2
说明:
select ... from tablename(表名) where 条件1 start with 条件2 connect by 条件3 and 条件4 ...
看下这个语句(由根节点向子节点查询):
select t.* , level from T_TEST_WORD t start with pid='-1' connect by prior
id = pid(由根节点向子节点查询)
从T_TEST_WORD表中查询所有记录,从pid=-1的开始查询,且上一次查询记录的id作为本次查询的pid,以上表为例,举例如下:
第一次查询出pid=-1的记录是id为1的那条。
第二次查询时,查询pid=1的(上次查询记录的id是1)记录,可以查询到id为2的那条记录
第三次查询时,查询pid=2的(上次查询记录的id是2)记录,可以查询到id为4的那条记录,以此类推......
由上,查询到了表2的记录。
由树的根节点向子节点查询时,查询节点的顺序是按照树的前序遍历(DLR)进行的(1,2,4,7,5,3,6,8,9),如下图1
图1:
(比较丑的图,凑合看吧,嘻嘻)
注意:那个level要有start with ...... connect by ...... 才有效哦,不然会报错的。
再看这句(由子节点向根节点查询):
select t.* ,level from T_TEST_WORD t start with pid='2' connect by id = prior pid
从pid=2的开始(向上)查询,且上一次查询记录的pid作为本次查询的id
prior挨着谁,就将谁作为本次查询的某某关键字,比如connect by id = prior pid,就是将上次的pid作为本次查询的id。
注意,level是伪列,查询数据所对应的级,或者说深度吧。
小菜的总结,有问题请指出,谢谢咯!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









Oracle 데이터베이스 로그의 보존 기간은 다음을 포함한 로그 유형 및 구성에 따라 다릅니다. 재실행 로그: "LOG_ARCHIVE_DEST" 매개변수로 구성된 최대 크기에 의해 결정됩니다. 보관된 리두 로그: "DB_RECOVERY_FILE_DEST_SIZE" 매개변수로 구성된 최대 크기에 따라 결정됩니다. 온라인 리두 로그: 보관되지 않고 데이터베이스를 다시 시작하면 손실되며 보존 기간은 인스턴스 실행 시간과 일치합니다. 감사 로그: "AUDIT_TRAIL" 매개변수로 구성되며 기본적으로 30일 동안 보관됩니다.

Oracle에 필요한 메모리 양은 데이터베이스 크기, 활동 수준 및 필요한 성능 수준(데이터 버퍼 저장, 인덱스 버퍼, SQL 문 실행 및 데이터 사전 캐시 관리에 필요)에 따라 다릅니다. 정확한 양은 데이터베이스 크기, 활동 수준 및 필요한 성능 수준에 따라 달라집니다. 모범 사례에는 적절한 SGA 크기 설정, SGA 구성 요소 크기 조정, AMM 사용 및 메모리 사용량 모니터링이 포함됩니다.

Oracle 데이터베이스 서버 하드웨어 구성 요구 사항: 프로세서: 기본 주파수가 2.5GHz 이상인 멀티 코어, 대규모 데이터베이스의 경우 32개 이상의 코어가 권장됩니다. 메모리: 소규모 데이터베이스의 경우 최소 8GB, 중간 크기의 경우 16~64GB, 대규모 데이터베이스 또는 과도한 작업 부하의 경우 최대 512GB 이상. 스토리지: SSD 또는 NVMe 디스크, 중복성 및 성능을 위한 RAID 어레이. 네트워크: 고속 네트워크(10GbE 이상), 전용 네트워크 카드, 지연 시간이 짧은 네트워크. 기타: 안정적인 전원 공급 장치, 이중 구성 요소, 호환 가능한 운영 체제 및 소프트웨어, 열 방출 및 냉각 시스템.

Oracle 데이터베이스에 필요한 메모리 양은 데이터베이스 크기, 작업 부하 유형 및 동시 사용자 수에 따라 다릅니다. 일반 권장 사항: 소형 데이터베이스: 16~32GB, 중형 데이터베이스: 32~64GB, 대형 데이터베이스: 64GB 이상. 고려해야 할 다른 요소로는 데이터베이스 버전, 메모리 최적화 옵션, 가상화 및 모범 사례(메모리 사용량 모니터링, 할당 조정)가 있습니다.

Oracle에서 하루에 한 번 실행되는 예약된 작업을 생성하려면 다음 세 단계를 수행해야 합니다. 작업을 생성합니다. 작업에 하위 작업을 추가하고 해당 일정 표현식을 "INTERVAL 1 DAY"로 설정합니다. 작업을 활성화합니다.

Oracle 데이터베이스 메모리 요구 사항은 데이터베이스 크기, 활성 사용자 수, 동시 쿼리, 활성화된 기능 및 시스템 하드웨어 구성 등의 요소에 따라 달라집니다. 메모리 요구 사항을 결정하는 단계에는 데이터베이스 크기 결정, 활성 사용자 수 추정, 동시 쿼리 이해, 활성화된 기능 고려 및 시스템 하드웨어 구성 검사가 포함됩니다.

Oracle 데이터베이스를 NOMOUNT 상태로 시작하기 위해 호출되는 파일은 initsid.ora입니다. 이 파일을 편집하여 DB_NAME(데이터베이스 이름), DB_CREATE(자동 생성 방지), DB_RECOVERY_FILE_DEST(복구 로그 디렉터리), DB_RECOVERY_FILE_DEST_SIZE(복구 로그 크기) 매개변수를 수정한 다음 "STARTUP NOMOUNT" 명령을 사용하여 데이터베이스를 시작합니다.

Oracle 데이터베이스와 MySQL은 모두 관계형 모델을 기반으로 하는 데이터베이스이지만 호환성, 확장성, 데이터 유형 및 보안 측면에서 Oracle이 우수하고, MySQL은 속도와 유연성에 중점을 두고 중소 규모 데이터 세트에 더 적합합니다. ① Oracle은 광범위한 데이터 유형을 제공하고, ② 고급 보안 기능을 제공하고, ③ 엔터프라이즈급 애플리케이션에 적합하고, ① MySQL은 NoSQL 데이터 유형을 지원하고, ② 보안 조치가 적고, ③ 중소 규모 애플리케이션에 적합합니다.
