Latest web development tutorials

SQLite는 하위 쿼리

하위 쿼리 또는 중첩 된 쿼리 또는 내부 쿼리가 쿼리에 포함 된 WHERE 다른 ​​SQLite는 쿼리 내의 절.

서브 쿼리를 사용하여 데이터를 더 검색되는 데이터를 제한하는 조건으로 메인 쿼리에서 사용될 반환한다.

하위 쿼리는 SELECT, INSERT, UPDATE와 함께 사용하고, 문 등 = 같은 연산자를 사용하여 동반 할 수있다 삭제 될 수 있으며, <,>,> =, <=, IN, BETWEEN 좋아한다.

다음은 따라야합니다 하위 쿼리 몇 가지 규칙이 있습니다 :

  • 하위 쿼리는 괄호로 묶어야합니다.

  • 하위 쿼리 SELECT 절은, 하나의 열을 미칠 수있는 주요 질의, 선택된 열 하위 쿼리 비교에 여러 열 않는.

  • 메인 쿼리에 의해 ORDER를 사용할 수 있지만 ORDER BY는 하위 쿼리에서 사용할 수 없습니다. 당신은 하위 쿼리에서 GROUP BY를 사용할 수 BY 순서와 동일 기능.

  • 부질 복귀보다 한 줄보다 단지 예 IN 연산자로, 다치 연산자와 사용될 수있다.

  • 연산자 서브 쿼리를 사용할 수없는 사이 그러나 BETWEEN 서브 쿼리에서 사용될 수있다.

SELECT 문 하위 쿼리

하위 쿼리는 일반적으로 SELECT 문에 사용됩니다. 다음과 같이 기본 구문은 다음과 같습니다

SELECT COLUMN_NAME [COLUMN_NAME]
표 1 FROM [표 2]
WHERE COLUMN_NAME의 OPERATOR
      (SELECT COLUMN_NAME [COLUMN_NAME]
      표 1 FROM [표 2]
      [WHERE])

가정하자 회사 테이블에는 다음과 같은 기록이있다 :

ID의 이름 나이 주소 급여
---------- ---------- ---------- ---------- ----------
1 폴 (32) 캘리포니아 20000.0
2 알렌 (25) 텍사스 15000.0
3 테디 (23) 노르웨이 20000.0
4 마크 (25) 리치 사교계 65000.0
5 다윗 (27) 텍사스 85000.0
6 김 (22) 사우스 홀 45000.0
7 제임스 (24) 휴스턴 10000.0

이제, SELECT 문 하위 쿼리를 살펴 보자 :

sqlite가> SELECT * 
     회사 FROM 
     WHERE ID IN (SELECT ID 
                  회사 FROM 
                  WHERE SALARY> 45000);

이것은 다음과 같은 결과를

ID의 이름 나이 주소 급여
---------- ---------- ---------- ---------- ----------
4 마크 (25) 리치 사교계 65000.0
5 다윗 (27) 텍사스 85000.0

INSERT 문 하위 쿼리

하위 쿼리는 INSERT 문을 사용할 수 있습니다. INSERT 문은 다른 테이블에 데이터를 반환하는 하위 쿼리를 사용합니다. 서브 쿼리에서 선택된 데이터는 임의의 문자, 날짜 또는 숫자 함수 변경 될 수 있습니다.

다음과 같이 기본 구문은 다음과 같습니다

테이블 _ INTO INSERT [(컬럼 1 [, 2 열])]
           SELECT [* | 컬럼 1 [, 2 열]
           표 1 FROM [표 2]
           [WHERE VALUE의 OPERATOR]

COMPANY_BKP 회사에게 테이블 구조와 유사한를 가정하고 작성하는 동일한 CREATE TABLE을 사용할 수 있습니다, 그냥 테이블 COMPANY_BKP의 이름을 변경했습니다. 지금 COMPANY_BKP에 회사 전체 테이블을 복사 다음과 같이 구문은 다음과 같습니다

sqlite가> COMPANY_BKP INTO INSERT
     회사 FROM SELECT * 
     WHERE ID IN (SELECT ID 
                  ) 회사 FROM;

UPDATE 문 하위 쿼리

하위 쿼리는 UPDATE 문을 사용할 수 있습니다. 하위 쿼리의 UPDATE 문을 사용하는 경우, 하나 또는 여러 개의 열이 테이블에 업데이트됩니다.

다음과 같이 기본 구문은 다음과 같습니다

UPDATE 테이블
SET COLUMN_NAME = NEW_VALUE
[WHERE 운영자 [의 VALUE]
   (SELECT COLUMN_NAME
   ) TABLE_NAME FROM
   [WHERE)]

우리가 COMPANY_BKP 테이블, 백업 COMPANY 테이블이 있다고 가정하자.

이 회사 테이블 원래의 0.50 배를 업데이트 (27) 클라이언트 SALARY 같은 모든보다 나이 또는 다음 예제 :

sqlite가> UPDATE 회사
     SET의 SALARY = SALARY * 0.50
     WHERE AGE IN (COMPANY_BKP로부터 나이를 선택
                   WHERE AGE> = 27);

이는 다음과 같이 테이블의 마지막 COMPANY 기록의 두 라인에 영향을 미칠 것이다 :

ID의 이름 나이 주소 급여
---------- ---------- ---------- ---------- ----------
1 폴 (32) 캘리포니아 10000.0
2 알렌 (25) 텍사스 15000.0
3 테디 (23) 노르웨이 20000.0
4 마크 (25) 리치 사교계 65000.0
5 다윗 (27) 텍사스 42500.0
6 김 (22) 사우스 홀 45000.0
7 제임스 (24) 휴스턴 10000.0

DELETE 문 하위 쿼리

하위 쿼리는 위에서 언급 한 다른 문장처럼, DELETE 문을 사용할 수 있습니다.

다음과 같이 기본 구문은 다음과 같습니다

TABLE_NAME에서 삭제
[WHERE 운영자 [의 VALUE]
   (SELECT COLUMN_NAME
   ) TABLE_NAME FROM
   [WHERE)]

우리가 COMPANY_BKP 테이블, 백업 COMPANY 테이블이 있다고 가정하자.

다음 예는 같거나 나이 27 회사 테이블의 모든 고객 레코드 큰 삭제 :

sqlite가> 회사에서 삭제
     WHERE AGE IN (COMPANY_BKP로부터 나이를 선택
                   WHERE AGE> 27);

이는 다음과 같이 테이블의 마지막 COMPANY 기록의 두 라인에 영향을 미칠 것이다 :

ID의 이름 나이 주소 급여
---------- ---------- ---------- ---------- ----------
2 알렌 (25) 텍사스 15000.0
3 테디 (23) 노르웨이 20000.0
4 마크 (25) 리치 사교계 65000.0
5 다윗 (27) 텍사스 42500.0
6 김 (22) 사우스 홀 45000.0
7 제임스 (24) 휴스턴 10000.0