>데이터 베이스 >Oracle >오라클에 존재하지 않는 사용법은 무엇입니까?

오라클에 존재하지 않는 사용법은 무엇입니까?

WBOY
WBOY원래의
2022-03-03 10:46:2726758검색

Oracle에서는 절이 결과 집합을 반환하는지 여부를 결정하는 데 "존재하지 않음"이 사용됩니다. 절이 결과 집합을 반환하지 않으면 구문은 true입니다. "존재하지 않는 daul에서 * 선택(하위 문장 쿼리 조건)".

오라클에 존재하지 않는 사용법은 무엇입니까?

이 튜토리얼의 운영 환경: Windows 10 시스템, Oracle 11g 버전, Dell G3 컴퓨터.

oracle에서 존재하지 않음의 사용법은 무엇입니까?

존재합니다: 결과 집합을 반환할지 여부에 중점을 두고 반환된 내용을 알 필요가 없습니다. 예:

  select name from student where sex = 'm' and mark exists(select 1 from grade where ...)

존재 가이드가 있는 한. 절이 결과 세트를 반환하면 존재 조건은 true로 간주됩니다. 이제 반환된 필드는 항상 1입니다. "select 2 from grade where..."로 변경되면 반환된 필드는 2입니다. 숫자는 의미가 없습니다. 따라서 존재 절은 반환된 내용이 아니라 반환된 결과 집합이 있는지 여부에 관심이 있습니다.

exists와 in의 가장 큰 차이점은 in 절이 하나의 필드만 반환할 수 있다는 것입니다(예:

  select name from student where sex = 'm' and mark in (select 1,2,3 from grade where ...)

). in 절은 세 개의 필드를 반환하지만, in은 하나만 허용합니다. 1, 2, 3의 두 필드를 제거하면 됩니다.

그리고 존재하지 않음과 없음은 각각 존재함과 있음의 반대말입니다.

  • 존재함(sql은 결과 집합을 true로 반환)

  • 존재하지 않음(sql은 결과 집합을 true로 반환하지 않음)

존재하지 않음 프로세스는 아래에 자세히 설명되어 있습니다.

은 다음과 같습니다. 다음:

테이블 A

ID NAME

1 A1

2 A2

3 A3

테이블 B

ID AID NAME

1 1 1 B1

2 2 B2

3 2 B 3

테이블 A와 Table B는 일대다 관계 A.ID => B.AID

SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE A.ID=B.AID)

실행 결과는

1 A1

2 A2

이유는 다음과 같이 분석할 수 있습니다

SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=1)
--->SELECT * FROM B WHERE B.AID=1有值返回真所以有数据
SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=2)
--->SELECT * FROM B WHERE B.AID=2有值返回真所以有数据
SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=3)
--->SELECT * FROM B WHERE B.AID=3无值返回真所以没有数据

NOT EXISTS 은 반대입니다

SELECT ID,NAME FROM A WHERE NOT EXIST (SELECT * FROM B WHERE A.ID=B.AID)

실행 결과는

3 A3

EXISTS = IN입니다. 의미는 동일하지만 구문에 약간의 차이가 있는 것 같습니다. IN을 사용하는 경우 효율이 떨어지는 것 같습니다. 인덱스가 실행되지 않는 이유

SELECT ID,NAME FROM A  WHERE ID IN (SELECT AID FROM B)

NOT EXISTS = NOT IN 의미는 같지만 구문에 약간의 차이가 있습니다

SELECT ID,NAME FROM A WHERE ID NOT IN (SELECT AID FROM B)

예 때로는 인덱스 없이 특정 열을 선택해야 하는 상황이 발생합니다.

추천 튜토리얼: "Oracle Video Tutorial"

위 내용은 오라클에 존재하지 않는 사용법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.