logo

SQL | 하위 쿼리

SQL에서 하위 쿼리는 다른 쿼리 내의 쿼리로 간단히 정의할 수 있습니다. 즉, 하위 쿼리는 다른 SQL 쿼리의 WHERE 절에 포함된 쿼리라고 말할 수 있습니다. 하위 쿼리에 대한 중요한 규칙:

  • 여러 SQL 절에 하위 쿼리를 배치할 수 있습니다. 어디 절, HAVING 절, ​​FROM 절. 하위 쿼리는 표현식 연산자와 함께 SELECT, UPDATE, INSERT, DELETE 문과 함께 사용할 수 있습니다. =,>, =, <= 및 Like 연산자와 같은 항등 연산자 또는 비교 연산자일 수 있습니다.
  • 하위 쿼리는 다른 쿼리 내의 쿼리입니다. 외부 쿼리는 다음과 같이 호출됩니다. 주요 쿼리 내부 쿼리는 다음과 같이 호출됩니다. 하위 쿼리 .
  • 하위 쿼리는 일반적으로 하위 쿼리에 하위 쿼리가 없을 때 먼저 실행됩니다. 공동관계 와 더불어 주요 쿼리 , 상관관계가 있을 때 파서가 결정을 내립니다. 즉석에서 실행할 쿼리 상위 그에 따라 하위 쿼리의 출력을 사용합니다.
  • 하위 쿼리는 괄호로 묶어야 합니다.
  • 하위 쿼리는 비교 연산자의 오른쪽에 있습니다.
  • 주문 명령 할 수 없다 하위 쿼리에 사용됩니다. 그룹바이 명령을 사용하면 ORDER BY 명령과 동일한 기능을 수행할 수 있습니다.
  • 단일 행 하위 쿼리에 단일 행 연산자를 사용합니다. 다중 행 하위 쿼리와 함께 다중 행 연산자를 사용합니다.

통사론: 하위 쿼리에는 일반적인 구문이 없습니다. 그러나 하위 쿼리는 아래와 같이 SELECT 문과 함께 가장 자주 사용되는 것으로 나타났습니다.



SELECT column_name FROM table_name WHERE column_name expression operator ( SELECT COLUMN_NAME from TABLE_NAME WHERE ... );>

샘플 테이블 :

데이터 베이스

이름 ROLL_NO 위치 전화 번호
101 첸나이 9988775566
주권 102 코임바토르 8877665544
사시 103 마두라이 7766553344
치료 104 세일럼 8989898989
수마티어 105 칸치푸람 8989856868

학생



이름 ROLL_NO 부분
치료 104
수마티어 105
주권 102

샘플 쿼리

:

  • 섹션이 A인 DATABASE 테이블에서 학생의 NAME, LOCATION, PHONE_NUMBER를 표시하려면
Select NAME, LOCATION, PHONE_NUMBER from DATABASE WHERE ROLL_NO IN (SELECT ROLL_NO from STUDENT where SECTION=’A’);>
    설명 : 첫 번째 하위 쿼리는 SECTION='A'인 STUDENT 테이블에서 SELECT ROLL_NO를 실행하고 SECTION이 'A'인 STUDENT 테이블에서 ROLL_NO를 반환합니다. 그런 다음 외부 쿼리가 이를 실행하고 ROLL_NO인 학생의 DATABASE 테이블에서 NAME, LOCATION, PHONE_NUMBER를 반환합니다. 내부 하위 쿼리에서 반환됩니다. 산출:
이름 ROLL_NO 위치 전화 번호
치료 104 세일럼 8989898989
주권 102 코임바토르 8877665544
  • 쿼리 삽입 예:

표1: 학생1



이름 ROLL_NO 위치 전화 번호
101 첸나이 9988773344
라주 102 코임바토르 9090909090
치료 103 살렘 8989898989

표2: 학생2

이름 ROLL_NO 위치 전화 번호
주권 111 첸나이 8787878787
까지 112 뭄바이 6565656565
스리 113 코임바토르 7878787878
  • Student2를 Student1 테이블에 삽입하려면:
INSERT INTO Student1 SELECT * FROM Student2;>
  • 산출:
이름 ROLL_NO 위치 전화 번호
101 첸나이 9988773344
라주 102 코임바토르 9090909090
치료 103 살렘 8989898989
주권 111 첸나이 8787878787
까지 112 뭄바이 6565656565
스리 113 코임바토르 7878787878
  • 롤번호가 Student1 테이블과 동일하고 위치가 첸나이인 Student2 테이블에서 학생을 삭제하려면
DELETE FROM Student2 WHERE ROLL_NO IN ( SELECT ROLL_NO FROM Student1 WHERE LOCATION = ’chennai’);>
  • 산출:
1 row delete successfully.>
    Student2 테이블을 표시합니다.
이름 ROLL_NO 위치 전화 번호
까지 112 뭄바이 6565656565
스리 113 코임바토르 7878787878
  • Student1 테이블의 Raju,Ravi와 위치가 동일한 Student2 테이블의 괴짜로 학생의 이름을 업데이트하려면
UPDATE Student2 SET NAME=’geeks’ WHERE LOCATION IN ( SELECT LOCATION FROM Student1 WHERE NAME IN (‘Raju’,’Ravi’));>
  • 산출:
1 row updated successfully.>
    Student2 테이블을 표시합니다.
이름 ROLL_NO 위치 전화 번호
까지 112 뭄바이 6565656565
괴짜 113 코임바토르 7878787878