728x90
고급 subquery
3. 단일컬럼 서브쿼리
서브쿼리로부터 메인쿼리로 단일 컬럼을 기준으로 값(단일행, 다중행)이 반환되는 유형
메인쿼리 좌변에 단일컬럼이 있으면 됨 = 비쌍 비교 방식
select employee_id, manager_id, department_id
from employees
where manager_id in (select manager_id from employees where employee_id in (174,141))
and department_id in (select department_id from employees where employee_id in (174,141))
and employee_id not in (174,141);
단일 컬럼 서브쿼리 + 다중행 서브쿼리
4. 다중컬럼 서브쿼리
서브쿼리로부터 메인쿼리로 다중컬럼을 기준으로 값(단일행, 다중행)이 반환되는 유형
메인쿼리 좌변에 다중 컬럼이 있으면 됨 = 쌍 비교 방식
select employee_id, manager_id, department_id
from employees
where (manager_id, department_id) in (select manager_id, department_id from employees where employee_id in (174,199))
and employee_id not in (174,199);
부서별 최소급여를 받는 사원의 정보 출력
select first_name, department_id, salary
from employees
where (salary, department_id) in (select min(salary), department_id from employees group by department_id)
order by department_id;
다중 컬럼 서브쿼리 + 다중행 서브쿼리
※
단일행 서브쿼리(단일행 비교연산자)
다중행 서브쿼리(다중행 비교연산자)
단일컬럼 서브쿼리(비쌍 비교)
다중컬럼 서브쿼리(쌍 비교)
연습문제 1
select employee_id, last_name
from employees
where department_id in (select department_id from employees where lower(last_name) like '%u%');
연습문제 2
select employee_id, last_name
from employees
where salary > (select avg(salary) from employees)
and department_id in (select department_id from employees where lower(last_name) like '%u%');
데이터조작어(DML)
- 테이블에 새로운 행 추가(insert)
- 테이블의 기존 행 수정(update)
- 테이블의 기존행 삭제(delete)
1. insert 구문
insert into 테이블명[(컬럼명1, 컬럼명2, ....)]
value (값1,값2,...);
2. update 구문
3. delete 구문
728x90
'KDT > DB' 카테고리의 다른 글
240216 DB - 치환 변수 (0) | 2024.02.16 |
---|---|
240214 DB - DML 2, 트랜잭션 (0) | 2024.02.14 |
240202 DB - Subquery, 고급 Subquery 1 (0) | 2024.02.02 |
240131 DB - 고급 JOIN 2 (0) | 2024.01.31 |
240126 DB - JOIN 2, 고급 JOIN 1 (0) | 2024.01.26 |