SELECT 고급 조회-연결 조회,하위 조회(다 중 표 데이터 조회)
1.간단 한 연결 조회
다 중 표 조 회 는 SELECT 명령 에 표 시 된 열 이 여러 데이터 시트 에서 유래 한 것 을 말한다.연결 조 회 는 여러 개의 표를 특정한 열 또는 특정한 열 을 조건 으로 연결 작업 을 하여 관련 데 이 터 를 검색 하 는 과정 입 니 다.여러 표 사이 에 공동 열 로 연결 되 어 있다.
1.1 WHERE 자 구 를 사용 한 간단 한 연결 조회
"WHERE 자구 로 데이터 기록 에 대한 검색 조건 을 제한 하고 WHERE 자구 에서 사용 합 니 다."="표 의 간단 한 연결 을 실현 할 수 있 습 니 다.첫 번 째 표 의 열 이 두 번 째 표 의 해당 열 과 일치 해 야 결과 에 집중 적 으로 표 시 됩 니 다.
SELECT empno, ename, sal, scott.emp.deptno, scott.dept.deptno, dname
FROM scott.emp, scott.dept
WHERE scott.emp.deptno=scott.dept.deptno;
표 scott.emp 과 scott.dept 는 열 deptno 를 포함 하고 있 으 며,이 공 통 된 열 에 따라 WHERE 자구 에서 등호(=)를 사용 하여 연결 합 니 다.
1.1.1 WHERE 자 구 를 사용 하지 않 는 간단 한 연결
SELECT empno, ename, sal, scott.emp.deptno, scott.dept.deptno, dname
FROM scott.emp, scott.dept;
두 표 는 SELECT 자구 와 FROM 자 구 를 통 해 만 연결 되 며 연결 조건 을 추가 하지 않 습 니 다.조회 결 과 는 두 장의 표 의 피리 칼 적 입 니 다.즉,첫 번 째 표 의 모든 줄 과 두 번 째 표 의 모든 줄 로 연결 되 었 습 니 다.그 결과 집 중 된 줄 수 는 두 표 행 수의 곱,열 수 는 두 표 열 수의 합 입 니 다.
1.1.2 표 에 별명 설정
다 중 표 조회 에서 만약 여러 표 사이 에 동명 의 열 이 존재 한다 면 반드시 표 명 을 사용 하여 한정 해 야 한다.가 독성 을 높이 기 위해 표 의 별명 을 사용 할 수 있 고 SELECT 문장의 집행 효율 도 높 일 수 있다.FROM 구문 에서 이 표를 인용 할 때 표 의 별명 을 표 의 실제 이름 뒤에 따른다.
SELECT empno, ename, sal, e.deptno, d.deptno, dname
FROM scott.emp e, scott.dept d
WHERE scott.emp.deptno=scott.dept.deptno;
메모:표 에 별명 을 설정 하면 표 의 실제 이름 도 덮어 씁 니 다.표 이름 을 참조 하 는 모든 곳 은 표 별명 을 사용 해 야 합 니 다.실제 표 이름 을 사용 해 서 는 안 됩 니 다.또한 표 에 별명 을 설정 할 때 AS 키 워드 를 사용 할 수 없습니다.
1.2.JOIN 키워드 연결 조회
다 중 표 간 영문 쉼표 로 분할 할 수 있 고 키워드 조인 도 사용 할 수 있다.내부 연결 과 외부 연결 포함.
SELECT column_list
FROM table_name1 join_type table_name2 [ON (join_condition)]
1.2.1 내부 연결
일반적으로 INNER JOIN 키 워드 를 사용 하여 내부 연결 을 지정 합 니 다.INNER 는 생략 할 수 있 고 기본적으로 내부 연결 을 표시 합 니 다.검색 결과 에는 두 표 의 공공 필드 값 이 같은 줄 만 포함 되 어 있 으 며,열 은 두 표 의 임 의 열 일 수 있 습 니 다.
INNER JOIN 을 사용 하여 scott.emp 과 scott.dept 두 표를 연결 하여 직원 부서 가 accounting 이라는 정 보 를 조회 합 니 다.
SELECT empno, ename , sal ,d.deptno, dname
FROM scott.emp e INNER JOIN scott.dept d ON e.deptno=d.deptno
WHERE dname =‘ACCOUNTING’;
ON 뒤의 조건 에 서 는(=)연산 자 를 사용 할 수 있 는 것 외 에 도 비교 연산 자,LIKE,IN,BETWEEN 등의 키 워드 를 사용 할 수 있다.
자연 연결(NATURAL JOIN)은 특수 한 등가 연결 이다.이것 은 시스템 이 두 표 의 동명 필드 에 따라 등가 비 교 를 하 는 내부 연결 이기 때문에 키워드 ON 을 사용 하여 연결 조건 을 지정 할 필요 가 없습니다.
SELECT empno, ename , sal ,d.deptno, dname
FROM scott.emp e NATURAL JOIN scott.dept d
WHERE dname =‘ACCOUNTING’;
1.3 외부 연결 조회
왼쪽 외부 연결,오른쪽 외부 연결,전체 외부 연결(1)왼쪽 외부 연결 LEFT JOIN 결 과 는 두 표 연결 후 ON 뒤에 지 정 된 연결 조건 을 만족 시 키 는 줄 을 집중 적 으로 포함 하고 JOIN 키워드 왼쪽 표 에 있 는 검색 조건 을 만족 시 키 는 모든 줄 을 표시 합 니 다.왼쪽 표 의 한 줄 이 오른쪽 표 에 일치 하지 않 으 면 결과 에서 오른쪽 표 의 모든 선택 열 은 NULL 입 니 다.(2)오른쪽 외 연결 라이트 존 은 왼쪽 외 연결 의 역방향 연결 이다.(3)완전한 외부 연결 FULL JOIN 완전 외부 연결 조회 의 결과 집합 은 두 표 안에 연 결 된 결과 집합 과 왼쪽 표 와 오른쪽 표 에 조건 을 충족 시 키 지 못 하 는 줄 을 포함한다.
1.4 교차 연결
교차 연결(CROSS JOIN)은 왼쪽 표 의 각 줄 과 오른쪽 표 의 각 줄 로 연결 되 며 ON 키 워드 를 사용 할 수 없습니다.얻 은 결 과 는 이 두 표 의 각 줄 데이터 의 모든 조합,즉 이 두 표 의 모든 데이터 의 피리 칼 적 이다.
2.하위 검색
검색 조건 에 다른 검색 어 를 삽입 할 수 있 습 니 다.즉,SELECT,UPDATE 또는 DELETE 구문 내부 에서 SELECT 문 구 를 사용 하 는 검색 입 니 다.
바깥쪽 의 SELECT 문 구 는 외부 조회 라 고 하고 안쪽 의 SELECT 문 구 는 하위 조회 라 고 한다.
하위 조 회 를 사용 하 는 것 은 주로 조회 결 과 를 외부 주 조회 의 조회 조건 으로 하 는 것 이다.
하위 조 회 는 여러 겹 으로 묶 을 수 있 지만,각 층 마다 괄호()로 묶 어야 합 니 다.
대부분의 분자 조 회 는 SELECT 문장의 WHERE 자구 에 놓 여 사용 된다.
하위 조회 의 유형:(2)하위 조회 에 따라 한 줄 또는 여러 줄 의 조회 결 과 를 되 돌려 주 고 하위 조 회 를 2 가지 로 나 눌 수 있 습 니 다.한 줄 의 하위 조회;다 중 하위 조회
(2)하위 조회 의 두 가지 비교 연산 자
단일 하위 조회 의 연산 자:+,>,=,<=,<와!<>;여러 줄 하위 조회 의 연산 자:ALL,ANY,IN 또는 함수 min,max.
2.1 단행자 조회
보통 SELECT,UPDATE 또는 DELETE 문장의 WHERE 자구 에서 조회,수정 또는 삭제 조건 을 충당 합 니 다.
SELECT column_list FROM table_name WHERE expression operator (
select column_list FROM table_name WHERE condition
GROUP BY exp HAVING having
);
주:WHERE 자구 에서 하위 검색 을 사용 할 때 하위 검색 어 에 ORDER BY 자 구 를 사용 하지 마 십시오.만약 ORDER BY 자구 로 결 과 를 정렬 출력 하려 면 외부 조회 에서 이 자 구 를 사용 할 수 있 습 니 다.
예 를 들 어 하위 검색 에서 ORDER BY 자 구 를 사용 하여 검색 결 과 를 empno 열 내림차 순 으로 출력 합 니 다.
SELECT empno, ename, sal, d.deptno FROM scott.emp
WHERE deptno IN (
SELECT deptno FROM scott.emp
WHERE empno>7782 ORDER BY empno DESC);
이 경우 실행 결과 에 오류 메시지 가 발생 할 수 있 습 니 다.네 번 째 줄 의 ORDER BY 자구 가 잘못 되 었 기 때 문 입 니 다.다음 과 같이 변경:
SELECT empno, ename, sal, d.deptno FROM scott.emp
WHERE deptno IN (
SELECT deptno FROM scott.emp
WHERE empno>7782)
ORDER BY empno DESC;
2.2 여러 줄 하위 검색
한 줄 의 하위 조회 란 하위 조회 가 한 줄 의 단일 열 데이터 만 되 돌려 주 는 것 을 말한다.여러 줄 의 하위 조 회 는 하위 조회 가 여러 줄 의 단일 열 데 이 터 를 되 돌려 주 는 것,즉 한 조 의 데 이 터 를 말한다.
하위 조회 가 단일 줄 의 여러 줄 의 하위 조회 일 때 는 IN,NOT IN,ANY,ALL 과 SOME 를 포함 하여 여러 줄 의 비교 연산 자 를 사용 해 야 합 니 다.
IN 과 NOT IN 은 독립 적 으로 사용 할 수 있 으 며,표현 식 의 값 이 하위 검색 결과 에 집중 되 어 있 는 지 비교 할 수 있 습 니 다.
ANY 와 ALL 은 한 줄 의 비교 연산 자 를 조합 해서 사용 해 야 합 니 다.
2.3 EXIST 키워드 가 있 는 관련 자 조회
관련 하위 조 회 는 외부 조회 표 의 한 열 또는 여러 열 을 참조 해 야 하 는 하위 조회 문 구 를 말한다.이 피 드 조 회 는 외부 구문 과 관련 되 고 주로 EXISTS 연산 자 를 통 해 이 루어 지 는 조회 이다.EXISTS 는 하위 검색 결과 가 비어 있 는 지 테스트 하 는 데 사 용 됩 니 다.하위 검색 결과 집합 이 비어 있 지 않 으 면 EXISTS 는 TRUE 로 돌아 갑 니 다.그렇지 않 으 면 FALSE 로 돌아 갑 니 다.
예:scott.emp 과 scott.dept 표 에서 NEW YORK 에서 일 하 는 모든 직원 정 보 를 검색 합 니 다.
SELECT ename, job, sal,d.deptno FROM scott.emp
WHERE EXISTS (
SELECT * FROM scott.dept WHERE deptno=emp.deptno
AND loc = 'NEW YOK');
외부 SELECT 문구 가 되 돌아 오 는 모든 줄 의 데 이 터 는 하위 조회 에 따라 평가 해 야 합 니 다.EXISTS 키워드 에서 지정 한 조건 이 사실 이 라면 조회 결 과 는 이 줄 을 포함 합 니 다.
여기 서 EXISTS 키 워드 는 되 돌아 오 는 데이터 가 존재 하 는 지 확인 하기 때문에 하위 조 회 는 상수 로 되 돌아 가 조회 의 성능 을 향상 시 킬 수 있 습 니 다.위 하위 검색 어의*열 을 1 로 대체 하면 검색 결 과 는 변 하지 않 습 니 다.
EXISTS 와 IN 의 비교:IN 연산 자 는 지정 한 일치 조 회 를 실현 하고 특정한 값 이 값 목록 에 포함 되 어 있 는 지 검색 합 니 다.EXISTS 조작 자 는 줄 이 존재 하 는 지,줄 의 존재 성 을 검사 할 뿐이다.
2.4 기타(다 중 열 조회)
한 줄 의 하위 조회 와 여러 줄 의 하위 조회 에서 얻 은 결 과 는 모두 한 줄 의 데이터 이지 만,여러 줄 의 하위 조 회 는 여러 열 의 임 의 줄 의 데 이 터 를 얻 었 다.다 열 자 조 회 는 다 열 데 이 터 를 되 돌려 주 는 하위 조 회 를 말한다.
하위 로 여러 열의 데 이 터 를 조회 할 때 두 가지 방식 을 사용 할 수 있 습 니 다.a.쌍 을 이 루 는 비교:여러 열의 데 이 터 를 동시에 일치 시 켜 야 합 니 다.b.비 쌍 비교:연결 키 워드 를 지정 합 니 다.예 를 들 어 AND 나 OR 등 을 통 해 여러 열의 데이터 가 동시에 일치 해 야 하 는 지 여 부 를 지정 합 니 다.
SELECT ename, sal,comm.,d.deptno FROM scott.emp
WHERE (sal, NVL(COMM. , -1)) IN (
SELECT sal,NVL(comm. , -1) FROM scott.emp
WHERE deptno = 30);
NVL()함 수 는 두 표현 식 에서 비 NULL 값 을 되 돌려 주 는 데 사 용 됩 니 다.이곳 의 조 회 는 쌍 을 이 루어 비교 합 니 다.
SELECT ename, sal,comm.,d.deptno FROM scott.emp
WHERE sal IN (
SELECT sal FROM scott.emp
WHERE deptno = 30) AND NVL(COMM. , -1) IN(
SELECT NVL(comm. , -1) FROM scott.emp
WHERE deptno=30);
여 기 는 비 쌍 비교 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Ubuntu 에서 Oh My Zsh 의 가장 좋 은 실천 '설치 및 설정'예 를 들 어 테마 설정, 플러그 인 체제, 내 장 된 편리 한 조작 등 은 우리 에 게 새로운 명령 행 사용 체험 을 줄 수 있 습 니 다.다음은 Oh My Zsh 의 설치 및 배치 방법 을 정리 하고 가장 좋 은...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.