[미 친 자바] SQL: 하위 검색

2914 단어 미 친 자바 노트
1. SQL 표준 하위 조회 의 정의:
    1) 쉽게 말 하면 selection 조회 가 내장 되 어 있 고 SQL 은 다 중 내장 조 회 를 지원 합 니 다.
    2) 메모리 조 회 는 괄호 () 로 싸 야 합 니 다.
    3) 하위 조회 가 나타 날 수 있 는 위치:
         i. from 이후: 조회 의 실질 은 임시 보기 이기 때문에 하나의 키 조회 결 과 를 하나의 표 로 다른 조 회 를 할 수 있 습 니 다.
!!임시 보기 로 사용 되 는 이상 이 하위 에 별명 을 조회 하 는 것 이 좋 습 니 다. select 후 및 where 에서 별명 접 두 사 를 이용 하여 임시 보기 의 속성 열 에 접근 하 는 데 편리 합 니 다.
!!이 피 드 조회 도 줄 내 보기 라 고 합 니 다.
         ii. where 이후: 필터 조건 의 범위 (집합) 로 서 하위 조회 결 과 는 하나의 보기 이기 때문에 보기 에는 많은 줄 이 포함 되 어 있 습 니 다. 즉, 하위 조회 결 과 는 기 록 된 집합 을 되 돌려 주 는 것 입 니 다. 이 집합 은 필터 조건 (범위 로 사용 할 수 있 습 니 다) 입 니 다.예 를 들 어 현재 기록 에 있 는 한 필드 의 값 이 하위 조회 에서 얻 은 결과 집합 에 떨 어 졌 는 지 확인 하고 집합 에 떨 어 지면 이 기록 을 선별 합 니 다. 그렇지 않 으 면 걸 러 냅 니 다.
2. 가장 전형 적 인 행 내 보기 의 용법 예시:
select t.col1, t.col2
from (select * from tableX) as t;

3. 필터 조건 으로:
    1) 특수 상황: 하위 조회 결 과 는 한 줄 한 줄 의 보기 입 니 다. 그러면 보기 의 유일한 값 은 스칼라 로 처리 할 수 있 습 니 다. 예 를 들 어
select * from student_table
where id > (select count(*) from tableX);
!하위 조회
(select count (*) from tableX) 는 통계 값 (한 줄 한 열) 을 얻 었 기 때문에 하나의 스칼라 로 처리 할 수 있 습 니 다.
    2) 조합 in 은 하위 조회 범위 에 있 는 지 확인 합 니 다. 예 를 들 어:
select *
from student_table
where id in(select id from stuff_table);
!이 하위 조회 결 과 는 스칼라 집합 이 므 로 id 가 이 집합 에 떨 어 졌 는 지 직접 확인 할 수 있 습 니 다.
        ***하위 조회 결 과 를 고려 하면 다 중 값 집합 (벡터 집합, 즉 하위 조회 결과 의 기록 이 다 열) 이 어야 합 니 다. 그러면 where 의 여과 대상 도 다 열 이 어야 합 니 다. 예 를 들 어:
select *
from student_table
where (id, name) in(select id, name from stuff_table);
!하위 조회 반환 결 과 는 벡터 (id, name) 의 집합 입 니 다. 그러면 where 검사 대상 도 열 수, 유형 이 같은 벡터 여야 합 니 다. SQL 에 서 는 괄호 () 로 원 조 를 구성 할 수 있 고 원 조 는 벡터 입 니 다.
!!이 검 사 는 열 의 조합 이지, 단독 열 이 아니다!!
    3) 비교 문자 + any / all:
         i. 보통 하나의 값 과 하나의 집합 은 다음 과 같은 몇 가지 관 계 를 가진다.
           a. 이 값 이 이 집합 에 있 는 지 여부;
           b. 이 값 이 (이하 등) 이 집합 에서 임의의 값 보다 클 지 여부;
           c. 이 값 이 집합 중의 임의의 값 보다 큰 것, 작은 것, 같은 것 인지 여부.
         ii. SQL 의 문법 은:
             a. value = any (집합)  // value 가 집합 에 떨 어 졌 는 지 여 부 는 in 에 해당 합 니 다.
             b. value < > any (집합)  // value 가 집합 에 없 으 면 not in 에 해당 합 니 다.
             c. value > any (집합)  // value 는 집합 중의 임의의 값 보다 크 면 된다. 즉, 집합 중의 최소 값 보다 크다.
             d. value < any (집합)  // value 는 집합 중의 임의의 값 보다 작 으 면 됩 니 다. 즉, 집합 중의 최대 값 보다 작 습 니 다.
             e. value > all (집합)  // value 는 집합 중의 모든 값 보다 크다. 즉, 집합 중의 최대 값 보다 크다.
             f.  value
         ii. 따라서 상기 집합 은 하위 조회 일 수 있 습 니 다. 예 를 들 어:
select * from t1
where val1 =any(select val1 from t2); // val1 in    
select * from t1
where val1 >all(select val2 from t2);  // t1  val1   t2 val2    
select * from t1
where (col1, col2) =any(select val1, val2 from t2);   //      

좋은 웹페이지 즐겨찾기