Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL 하위 쿼리와 일반 범주는 무엇입니까?


하위 쿼리는 쿼리 내의 쿼리로 가장 잘 정의됩니다. 하위 쿼리를 사용하면 쿼리가 런타임에 실행되는 동안 실제로 개발된 기준에 대한 데이터 행을 선택하는 쿼리를 작성할 수 있습니다. 보다 형식적으로는 다른 SELECT 문의 절 중 하나 내에서 SELECT 문을 사용하는 것입니다. 사실, 하위 쿼리는 다른 하위 쿼리 내부에 포함될 수 있습니다. 하위 쿼리는 INSERT, UPDATE 및 DELETE 문 내부에 중첩될 수도 있습니다. 하위 쿼리는 괄호로 묶어야 합니다.

하위 쿼리는 단일 값을 반환하는 경우 표현식이 허용되는 모든 위치에서 사용할 수 있습니다. 이는 단일 값을 반환하는 하위 쿼리가 FROM 절 목록에 개체로 나열될 수도 있음을 의미합니다. 서브쿼리가 FROM 절의 일부로 사용될 때 가상 테이블이나 뷰처럼 취급되기 때문에 이것을 인라인 뷰라고 합니다. 서브 쿼리는 메인 쿼리의 FROM 절, WHERE 절 또는 HAVING 절에 둘 수 있습니다. INNER QUERY 또는 INNER SELECT라고도 하며 하위 쿼리가 포함된 쿼리는 OUTER QUERY 또는 OUTER SELECT 또는 CONTAINER QUERY라고 합니다. 다음은 일반적인 범주입니다 -

스칼라 하위 쿼리

스칼라 하위 쿼리는 단일 값, 즉 하나의 데이터 열이 있는 하나의 행을 반환합니다. 스칼라 하위 쿼리는 간단한 피연산자이며 단일 열이나 리터럴이 합법적인 거의 모든 곳에서 사용할 수 있습니다. 이를 설명하기 위해 다음 데이터가 있는 'Cars', 'Customers' 및 'Reservations' 테이블을 사용하고 있습니다. −

mysql> Select * from Cars;+------+----------------+------+| 아이디 | 이름 | 가격 |+------+--------------+---------+| 1 | 넥사 | 750000 || 2 | 마루티 스위프트 | 450000 || 3 | BMW | 4450000 || 4 | 볼보 | 2250000 || 5 | 알토 | 250000 || 6 | 스코다 | 1250000 || 7 | 도요타 | 2400000 || 8 | 포드 | 1100000 |+------+--------------+------+8행 세트(0.02초)mysql> 고객으로부터 * 선택; +-------------+----------+| 고객 ID | 이름 |+-------------+----------+| 1 | 라훌 || 2 | 야쉬팔 || 3 | 가우라프 || 4 | Virender |+-------------+----------+4행 세트(0.00초)mysql> 예약에서 * 선택;+------ +-------------+------------+| 아이디 | 고객 아이디 | 일 |+--------+-------------+------------+| 1 | 1 | 2017-12-30 || 2 | 2 | 2017-12-28 || 3 | 2 | 2017-12-29 || 4 | 1 | 2017-12-25 || 5 | 3 | 2017-12-26 |+------+-------------+------------+5행 세트(0.00초) 

스칼라 하위 쿼리가 단일 값을 반환한다는 것을 알고 있으므로 다음은 스칼라 하위 쿼리입니다. -

mysql> 고객에서 이름 선택 WHERE Customer_id =(예약에서 Customer_id 선택 WHERE ID =5);+--------+| 이름 |+--------+| Gaurav |+--------+1행 세트(0.06초)

테이블 하위 쿼리

테이블 하위 쿼리는 하나 이상의 데이터 열을 포함하는 하나 이상의 행이 있는 결과를 반환합니다. 'cars', 'Customers' 및 'Reservations' 테이블의 데이터를 사용하는 다음 쿼리는 테이블 하위 쿼리의 예입니다. -

mysql> Customer_id IN (SELECT DISTINCT Customer_id fromReservations);+---------+| 이름 |+---------+| 라훌 || 야쉬팔 || Gaurav |+---------+3행 세트(0.05초)

상관된 하위 쿼리

상관된 하위 쿼리는 WHERE 절에서 외부 쿼리의 값을 사용하는 하위 쿼리입니다. 'cars' 테이블의 데이터를 사용하는 다음 쿼리는 상관 하위 쿼리의 예입니다. -

mysql> 자동차에서 이름 선택 WHERE Price <(SELECT AVG(Price) from Cars);+--------------+| 이름 |+--------------+| 넥사 || 마루티 스위프트 || 알토 || 스코다 || Ford |+---------------+5개의 행 세트(0.00초)mysql> Select Name from cars WHERE Price> (SELECT AVG(Price) from Cars);+---- -+| 이름 |+--------+| BMW || 볼보 || Toyota |+--------+3줄 세트(0.00초)