개발 공부 & 정리

[SQL첫걸음] 23강 서브쿼리 본문

공부/DB

[SQL첫걸음] 23강 서브쿼리

현뽀- 2022. 6. 15. 14:58
  • SELECT, WHERE, FROM, SET구에서 주로 사용.
(SELECT 명령)
  • 서브쿼리 먼저 실행. MySQL은 데이터 추가/갱신시 동일한 테이블 사용할 수 없으므로 한번 더 감싸야함.
  • 종류 - 스칼라 값, 1xN, Nx1, NxN
  • 스칼라 값 : 하나의 값, 상수. = 연산자로 비교가능
DELETE FROM [table] WHERE a = SELECT a FROM(SELECT MIN(a) from [subtable]));

(SELECT MIN(a) from [subtable]) ->스칼라 서브쿼리:집계함수를 사용해 결과를 조건식에서 사용 가능.
  • SELECT 구
SELECT 
    (SELECT COUNT(*)FROM [table1])
    (SELECT COUNT(*)FROM [table2]) (if Oracle FROM DUAL)

-> MySQL 생략 가능. Oracle FROM DUAL 지정(System에서 DB에 기본 작성하는 테이블)
  • SET구 → 스칼라 값. →UPDATE [table] SET a= (subQuery)
  • 반면 FROM구 스칼라, 테이블 모두 가능 (Nested 구조 -중첩구조) Alias 붙여 사용
SELECT * FROM 
    (SELECT * FROM [table] ORDER BY a ) sq
WHERE [condition]

->Oracle에서도 정렬된 테이블의 상위 n건조회 가능 
  • INSERT :
    1. VALUES에 스칼라 서브쿼리 (값 지정) 자료형 일치해야함.
    2. INSERT INTO [targetTable] (subQuery)

열 수와 자료형이 맞으면 지정한 테이블 전부 추가. (행 복사 가능)

+클라이언트 변수

IN MySQL

set @valName = (SELECT MIN(a) FROM [table])
DELETE FROM [table] WHERE a = @a;
Comments